[PATCH v2 57/60] drm/omap: Remove omap_crtc_output global array

Sebastian Reichel sre at kernel.org
Mon Jun 11 12:00:30 UTC 2018


Hi,

On Sat, May 26, 2018 at 08:25:15PM +0300, Laurent Pinchart wrote:
> The omap_crtc_output global array is used to look up the DSS output
> device by channel. We can replace that by accessing the output device
> from the pipeline if we store the pipeline pointer in the omap_crtc
> structure.
> 
> The global array is also used to protect against double connection of an
> output. This can't happen with the connection handling mechanism going
> from DSS outputs to displays. We can thus drop that check, allowing
> removal of the global array.
> 
> 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/omap_crtc.c | 12 +++---------
>  1 file changed, 3 insertions(+), 9 deletions(-)
> 
> diff --git a/drivers/gpu/drm/omapdrm/omap_crtc.c b/drivers/gpu/drm/omapdrm/omap_crtc.c
> index 9742d9f49a7c..5a56c8e02179 100644
> --- a/drivers/gpu/drm/omapdrm/omap_crtc.c
> +++ b/drivers/gpu/drm/omapdrm/omap_crtc.c
> @@ -41,6 +41,7 @@ struct omap_crtc {
>  	struct drm_crtc base;
>  
>  	const char *name;
> +	struct omap_drm_pipeline *pipe;
>  	enum omap_channel channel;
>  
>  	struct videomode vm;
> @@ -108,9 +109,6 @@ int omap_crtc_wait_pending(struct drm_crtc *crtc)
>   * job of sequencing the setup of the video pipe in the proper order
>   */
>  
> -/* ovl-mgr-id -> crtc */
> -static struct omap_dss_device *omap_crtc_output[8];
> -
>  /* we can probably ignore these until we support command-mode panels: */
>  static int omap_crtc_dss_connect(struct omap_drm_private *priv,
>  		enum omap_channel channel,
> @@ -119,13 +117,9 @@ static int omap_crtc_dss_connect(struct omap_drm_private *priv,
>  	const struct dispc_ops *dispc_ops = priv->dispc_ops;
>  	struct dispc_device *dispc = priv->dispc;
>  
> -	if (omap_crtc_output[channel])
> -		return -EINVAL;
> -
>  	if (!(dispc_ops->mgr_get_supported_outputs(dispc, channel) & dst->id))
>  		return -EINVAL;
>  
> -	omap_crtc_output[channel] = dst;
>  	dst->dispc_channel_connected = true;
>  
>  	return 0;
> @@ -135,7 +129,6 @@ static void omap_crtc_dss_disconnect(struct omap_drm_private *priv,
>  		enum omap_channel channel,
>  		struct omap_dss_device *dst)
>  {
> -	omap_crtc_output[channel] = NULL;
>  	dst->dispc_channel_connected = false;
>  }
>  
> @@ -158,7 +151,7 @@ static void omap_crtc_set_enabled(struct drm_crtc *crtc, bool enable)
>  	if (WARN_ON(omap_crtc->enabled == enable))
>  		return;
>  
> -	if (omap_crtc_output[channel]->output_type == OMAP_DISPLAY_TYPE_HDMI) {
> +	if (omap_crtc->pipe->output->output_type == OMAP_DISPLAY_TYPE_HDMI) {
>  		priv->dispc_ops->mgr_enable(priv->dispc, channel, enable);
>  		omap_crtc->enabled = enable;
>  		return;
> @@ -716,6 +709,7 @@ struct drm_crtc *omap_crtc_init(struct drm_device *dev,
>  
>  	init_waitqueue_head(&omap_crtc->pending_wait);
>  
> +	omap_crtc->pipe = pipe;
>  	omap_crtc->channel = channel;
>  	omap_crtc->name = 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/20180611/5a470f54/attachment.sig>


More information about the dri-devel mailing list