[PATCH v2 34/60] drm/omap: dss: Modify omapdss_find_output_from_display() to return channel

Sebastian Reichel sre at kernel.org
Sun Jun 10 20:46:14 UTC 2018


Hi,

On Sat, May 26, 2018 at 08:24:52PM +0300, Laurent Pinchart wrote:
> The omapdss_find_output_from_display() function is only used to retrieve
> the dispc channel corresponding to the display. Return the dispc channel
> directly, and rename the function to omapdss_device_get_dispc_channel()
> to match its new purpose.
> 
> The dssdev->id check is removed as the dssdev is guaranteed to be an
> output and have a non-zero id, as proved by the lack of crash despite
> the caller never checking the returned pointer before dereferencing it.
> 
> As the function is not specific to outputs anymore, move it from
> output.c to base.c.
> 
> Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
> ---

Reviewed-by: Sebastian Reichel <sebastian.reichel at collabora.co.uk>

-- Sebastian

>  drivers/gpu/drm/omapdrm/dss/base.c    |  9 +++++++++
>  drivers/gpu/drm/omapdrm/dss/omapdss.h |  3 +--
>  drivers/gpu/drm/omapdrm/dss/output.c  | 12 ------------
>  drivers/gpu/drm/omapdrm/omap_crtc.c   |  5 +----
>  4 files changed, 11 insertions(+), 18 deletions(-)
> 
> diff --git a/drivers/gpu/drm/omapdrm/dss/base.c b/drivers/gpu/drm/omapdrm/dss/base.c
> index b4bc58c5134d..7f9d8a8be8c3 100644
> --- a/drivers/gpu/drm/omapdrm/dss/base.c
> +++ b/drivers/gpu/drm/omapdrm/dss/base.c
> @@ -236,6 +236,15 @@ void omapdss_device_disconnect(struct omap_dss_device *src,
>  }
>  EXPORT_SYMBOL_GPL(omapdss_device_disconnect);
>  
> +enum omap_channel omapdss_device_get_dispc_channel(struct omap_dss_device *dssdev)
> +{
> +	while (dssdev->src)
> +		dssdev = dssdev->src;
> +
> +	return dssdev->dispc_channel;
> +}
> +EXPORT_SYMBOL(omapdss_device_get_dispc_channel);
> +
>  /* -----------------------------------------------------------------------------
>   * Components Handling
>   */
> diff --git a/drivers/gpu/drm/omapdrm/dss/omapdss.h b/drivers/gpu/drm/omapdrm/dss/omapdss.h
> index 4df405ae20db..121bc953ba31 100644
> --- a/drivers/gpu/drm/omapdrm/dss/omapdss.h
> +++ b/drivers/gpu/drm/omapdrm/dss/omapdss.h
> @@ -504,6 +504,7 @@ int omapdss_device_connect(struct dss_device *dss,
>  			   struct omap_dss_device *dst);
>  void omapdss_device_disconnect(struct omap_dss_device *src,
>  			       struct omap_dss_device *dst);
> +enum omap_channel omapdss_device_get_dispc_channel(struct omap_dss_device *dssdev);
>  
>  int omap_dss_get_num_overlay_managers(void);
>  
> @@ -513,8 +514,6 @@ int omapdss_output_set_device(struct omap_dss_device *out,
>  		struct omap_dss_device *dssdev);
>  int omapdss_output_unset_device(struct omap_dss_device *out);
>  
> -struct omap_dss_device *omapdss_find_output_from_display(struct omap_dss_device *dssdev);
> -
>  typedef void (*omap_dispc_isr_t) (void *arg, u32 mask);
>  int omap_dispc_register_isr(omap_dispc_isr_t isr, void *arg, u32 mask);
>  int omap_dispc_unregister_isr(omap_dispc_isr_t isr, void *arg, u32 mask);
> diff --git a/drivers/gpu/drm/omapdrm/dss/output.c b/drivers/gpu/drm/omapdrm/dss/output.c
> index a5df6eed4aef..191b2e801257 100644
> --- a/drivers/gpu/drm/omapdrm/dss/output.c
> +++ b/drivers/gpu/drm/omapdrm/dss/output.c
> @@ -88,18 +88,6 @@ int omapdss_output_unset_device(struct omap_dss_device *out)
>  }
>  EXPORT_SYMBOL(omapdss_output_unset_device);
>  
> -struct omap_dss_device *omapdss_find_output_from_display(struct omap_dss_device *dssdev)
> -{
> -	while (dssdev->src)
> -		dssdev = dssdev->src;
> -
> -	if (dssdev->id != 0)
> -		return omapdss_device_get(dssdev);
> -
> -	return NULL;
> -}
> -EXPORT_SYMBOL(omapdss_find_output_from_display);
> -
>  int dss_install_mgr_ops(struct dss_device *dss,
>  			const struct dss_mgr_ops *mgr_ops,
>  			struct omap_drm_private *priv)
> diff --git a/drivers/gpu/drm/omapdrm/omap_crtc.c b/drivers/gpu/drm/omapdrm/omap_crtc.c
> index 4ddc4ed18b47..c5f1915aef67 100644
> --- a/drivers/gpu/drm/omapdrm/omap_crtc.c
> +++ b/drivers/gpu/drm/omapdrm/omap_crtc.c
> @@ -699,12 +699,9 @@ struct drm_crtc *omap_crtc_init(struct drm_device *dev,
>  	struct drm_crtc *crtc = NULL;
>  	struct omap_crtc *omap_crtc;
>  	enum omap_channel channel;
> -	struct omap_dss_device *out;
>  	int ret;
>  
> -	out = omapdss_find_output_from_display(dssdev);
> -	channel = out->dispc_channel;
> -	omapdss_device_put(out);
> +	channel = omapdss_device_get_dispc_channel(dssdev);
>  
>  	DBG("%s", channel_names[channel]);
>  
> -- 
> 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/20180610/118bca44/attachment.sig>


More information about the dri-devel mailing list