drm/sun4i: hdmi: create a regmap for later use
The HDMI driver is written with readl/writel I/O to the registers. However, to support the A31 variant, which has a different layout for the DDC registers, it was recommended to use regfields to have a cleaner implementation. To use regfields, we need to create an underlying regmap. This patch only adds the regmap. It does not convert the existing driver accesses to use regmap. Signed-off-by: Chen-Yu Tsai <wens@csie.org> Acked-by: Maxime Ripard <maxime.ripard@free-electrons.com> Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com> Link: https://patchwork.freedesktop.org/patch/msgid/20171010032008.682-5-wens@csie.org
This commit is contained in:
		
							parent
							
								
									544c5048bc
								
							
						
					
					
						commit
						4b1c924b1f
					
				| @ -163,6 +163,7 @@ struct sun4i_hdmi { | ||||
| 	struct device		*dev; | ||||
| 
 | ||||
| 	void __iomem		*base; | ||||
| 	struct regmap		*regmap; | ||||
| 
 | ||||
| 	/* Parent clocks */ | ||||
| 	struct clk		*bus_clk; | ||||
|  | ||||
| @ -22,6 +22,7 @@ | ||||
| #include <linux/iopoll.h> | ||||
| #include <linux/platform_device.h> | ||||
| #include <linux/pm_runtime.h> | ||||
| #include <linux/regmap.h> | ||||
| 
 | ||||
| #include "sun4i_backend.h" | ||||
| #include "sun4i_crtc.h" | ||||
| @ -267,6 +268,13 @@ static const struct cec_pin_ops sun4i_hdmi_cec_pin_ops = { | ||||
| }; | ||||
| #endif | ||||
| 
 | ||||
| static const struct regmap_config sun4i_hdmi_regmap_config = { | ||||
| 	.reg_bits	= 32, | ||||
| 	.val_bits	= 32, | ||||
| 	.reg_stride	= 4, | ||||
| 	.max_register	= 0x580, | ||||
| }; | ||||
| 
 | ||||
| static int sun4i_hdmi_bind(struct device *dev, struct device *master, | ||||
| 			   void *data) | ||||
| { | ||||
| @ -321,6 +329,13 @@ static int sun4i_hdmi_bind(struct device *dev, struct device *master, | ||||
| 		goto err_disable_mod_clk; | ||||
| 	} | ||||
| 
 | ||||
| 	hdmi->regmap = devm_regmap_init_mmio(dev, hdmi->base, | ||||
| 					     &sun4i_hdmi_regmap_config); | ||||
| 	if (IS_ERR(hdmi->regmap)) { | ||||
| 		dev_err(dev, "Couldn't create HDMI encoder regmap\n"); | ||||
| 		return PTR_ERR(hdmi->regmap); | ||||
| 	} | ||||
| 
 | ||||
| 	ret = sun4i_tmds_create(hdmi); | ||||
| 	if (ret) { | ||||
| 		dev_err(dev, "Couldn't create the TMDS clock\n"); | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user