[PATCH 24/48] drm: omapdrm: sdi: Pass DSS pointer to dss_sdi_*() functions

Sebastian Reichel sre at kernel.org
Mon Oct 16 08:47:32 UTC 2017


Hi Laurent,

On Fri, Oct 13, 2017 at 05:59:20PM +0300, Laurent Pinchart wrote:
> This removes the need to access the global DSS private data in those
> functions (both for the current accesses and the future ones that will
> be introduced when allocating the DSS device dynamically).
> 
> Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
> ---
>  drivers/gpu/drm/omapdrm/dss/dss.c |  8 ++++----
>  drivers/gpu/drm/omapdrm/dss/dss.h | 14 ++++++++------
>  drivers/gpu/drm/omapdrm/dss/sdi.c | 13 ++++++++-----
>  3 files changed, 20 insertions(+), 15 deletions(-)
> 
> diff --git a/drivers/gpu/drm/omapdrm/dss/dss.c b/drivers/gpu/drm/omapdrm/dss/dss.c
> index 7179d02e7451..f8b71e24a07d 100644
> --- a/drivers/gpu/drm/omapdrm/dss/dss.c
> +++ b/drivers/gpu/drm/omapdrm/dss/dss.c
> @@ -287,7 +287,7 @@ static int dss_ctrl_pll_set_control_mux(enum dss_clk_source clk_src,
>  	return 0;
>  }
>  
> -void dss_sdi_init(int datapairs)
> +void dss_sdi_init(struct dss_device *dss, int datapairs)
>  {
>  	u32 l;
>  
> @@ -306,7 +306,7 @@ void dss_sdi_init(int datapairs)
>  	dss_write_reg(DSS_PLL_CONTROL, l);
>  }
>  
> -int dss_sdi_enable(void)
> +int dss_sdi_enable(struct dss_device *dss)
>  {
>  	unsigned long timeout;
>  
> @@ -364,7 +364,7 @@ int dss_sdi_enable(void)
>  	return -ETIMEDOUT;
>  }
>  
> -void dss_sdi_disable(void)
> +void dss_sdi_disable(struct dss_device *dss)
>  {
>  	dispc_lcd_enable_signal(0);
>  
> @@ -1226,7 +1226,7 @@ static int dss_init_ports(struct platform_device *pdev)
>  			dpi_init_port(pdev, port, dss.feat->model);
>  			break;
>  		case OMAP_DISPLAY_TYPE_SDI:
> -			sdi_init_port(pdev, port);
> +			sdi_init_port(&dss, pdev, port);

I guess this should be 'dss' instead of '&dss'? Otherwise looks
fine.

-- Sebastian

>  			break;
>  		default:
>  			break;
> diff --git a/drivers/gpu/drm/omapdrm/dss/dss.h b/drivers/gpu/drm/omapdrm/dss/dss.h
> index 0b8facf258cf..08651f101518 100644
> --- a/drivers/gpu/drm/omapdrm/dss/dss.h
> +++ b/drivers/gpu/drm/omapdrm/dss/dss.h
> @@ -300,9 +300,9 @@ void dss_video_pll_uninit(struct dss_pll *pll);
>  
>  void dss_ctrl_pll_enable(struct dss_pll *pll, bool enable);
>  
> -void dss_sdi_init(int datapairs);
> -int dss_sdi_enable(void);
> -void dss_sdi_disable(void);
> +void dss_sdi_init(struct dss_device *dss, int datapairs);
> +int dss_sdi_enable(struct dss_device *dss);
> +void dss_sdi_disable(struct dss_device *dss);
>  
>  void dss_select_dsi_clk_source(int dsi_module,
>  		enum dss_clk_source clk_src);
> @@ -323,11 +323,13 @@ bool dss_div_calc(unsigned long pck, unsigned long fck_min,
>  
>  /* SDI */
>  #ifdef CONFIG_OMAP2_DSS_SDI
> -int sdi_init_port(struct platform_device *pdev, struct device_node *port);
> +int sdi_init_port(struct dss_device *dss, struct platform_device *pdev,
> +		  struct device_node *port);
>  void sdi_uninit_port(struct device_node *port);
>  #else
> -static inline int sdi_init_port(struct platform_device *pdev,
> -		struct device_node *port)
> +static inline int sdi_init_port(struct dss_device *dss,
> +				struct platform_device *pdev,
> +				struct device_node *port)
>  {
>  	return 0;
>  }
> diff --git a/drivers/gpu/drm/omapdrm/dss/sdi.c b/drivers/gpu/drm/omapdrm/dss/sdi.c
> index d18ad58c5a19..39cb5c8af0dc 100644
> --- a/drivers/gpu/drm/omapdrm/dss/sdi.c
> +++ b/drivers/gpu/drm/omapdrm/dss/sdi.c
> @@ -33,6 +33,7 @@
>  
>  static struct {
>  	struct platform_device *pdev;
> +	struct dss_device *dss;
>  
>  	bool update_enabled;
>  	struct regulator *vdds_sdi_reg;
> @@ -189,8 +190,8 @@ static int sdi_display_enable(struct omap_dss_device *dssdev)
>  	 */
>  	dispc_mgr_set_clock_div(channel, &sdi.mgr_config.clock_info);
>  
> -	dss_sdi_init(sdi.datapairs);
> -	r = dss_sdi_enable();
> +	dss_sdi_init(sdi.dss, sdi.datapairs);
> +	r = dss_sdi_enable(sdi.dss);
>  	if (r)
>  		goto err_sdi_enable;
>  	mdelay(2);
> @@ -202,7 +203,7 @@ static int sdi_display_enable(struct omap_dss_device *dssdev)
>  	return 0;
>  
>  err_mgr_enable:
> -	dss_sdi_disable();
> +	dss_sdi_disable(sdi.dss);
>  err_sdi_enable:
>  err_set_dss_clock_div:
>  err_calc_clock_div:
> @@ -219,7 +220,7 @@ static void sdi_display_disable(struct omap_dss_device *dssdev)
>  
>  	dss_mgr_disable(channel);
>  
> -	dss_sdi_disable();
> +	dss_sdi_disable(sdi.dss);
>  
>  	dispc_runtime_put();
>  
> @@ -347,7 +348,8 @@ static void sdi_uninit_output(struct platform_device *pdev)
>  	omapdss_unregister_output(out);
>  }
>  
> -int sdi_init_port(struct platform_device *pdev, struct device_node *port)
> +int sdi_init_port(struct dss_device *dss, struct platform_device *pdev,
> +		  struct device_node *port)
>  {
>  	struct device_node *ep;
>  	u32 datapairs;
> @@ -364,6 +366,7 @@ int sdi_init_port(struct platform_device *pdev, struct device_node *port)
>  	}
>  
>  	sdi.datapairs = datapairs;
> +	sdi.dss = dss;
>  
>  	of_node_put(ep);
>  
> -- 
> Regards,
> 
> Laurent Pinchart
> 
> _______________________________________________
> dri-devel mailing list
> dri-devel at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/dri-devel/attachments/20171016/e50df6d0/attachment.sig>


More information about the dri-devel mailing list