[PATCH 17/29] drm/omap: Move display alias ID to omap_drm_pipeline

Sebastian Reichel sebastian.reichel at collabora.com
Sun Dec 9 22:03:53 UTC 2018


Hi,

On Wed, Dec 05, 2018 at 05:00:10PM +0200, Laurent Pinchart wrote:
> The DT bindings for the OMAP DSS allow assigning numerical IDs to
> display outputs through display entries in the alias node. The driver
> uses this information to sort pipelines according to the order specified
> in DT, making it possible for a system to give a priority order to
> outputs.
> 
> Retrieval of the alias ID is done when initializing display dss devices.
> That code will be removed when moving to drm_bridge and drm_panel. Move
> retrieval of the alias ID to display pipeline connection time and store
> it in the pipeline structure instead to keep the feature.
> 
> Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
> ---

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

-- Sebastian

>  drivers/gpu/drm/omapdrm/dss/display.c | 2 --
>  drivers/gpu/drm/omapdrm/dss/omapdss.h | 2 --
>  drivers/gpu/drm/omapdrm/omap_drv.c    | 9 +++++++--
>  drivers/gpu/drm/omapdrm/omap_drv.h    | 1 +
>  4 files changed, 8 insertions(+), 6 deletions(-)
> 
> diff --git a/drivers/gpu/drm/omapdrm/dss/display.c b/drivers/gpu/drm/omapdrm/dss/display.c
> index 398964358386..e93f61a567a8 100644
> --- a/drivers/gpu/drm/omapdrm/dss/display.c
> +++ b/drivers/gpu/drm/omapdrm/dss/display.c
> @@ -42,8 +42,6 @@ void omapdss_display_init(struct omap_dss_device *dssdev)
>  	if (id < 0)
>  		id = disp_num_counter++;
>  
> -	dssdev->alias_id = id;
> -
>  	/* Use 'label' property for name, if it exists */
>  	of_property_read_string(dssdev->dev->of_node, "label", &dssdev->name);
>  
> diff --git a/drivers/gpu/drm/omapdrm/dss/omapdss.h b/drivers/gpu/drm/omapdrm/dss/omapdss.h
> index 5dac69519d7e..7c9f8a5ceb37 100644
> --- a/drivers/gpu/drm/omapdrm/dss/omapdss.h
> +++ b/drivers/gpu/drm/omapdrm/dss/omapdss.h
> @@ -419,8 +419,6 @@ struct omap_dss_device {
>  
>  	struct list_head list;
>  
> -	unsigned int alias_id;
> -
>  	enum omap_display_type type;
>  	/*
>  	 * DSS output type that this device generates (for DSS internal devices)
> diff --git a/drivers/gpu/drm/omapdrm/omap_drv.c b/drivers/gpu/drm/omapdrm/omap_drv.c
> index 286590657d44..c9b578a49b24 100644
> --- a/drivers/gpu/drm/omapdrm/omap_drv.c
> +++ b/drivers/gpu/drm/omapdrm/omap_drv.c
> @@ -155,9 +155,9 @@ static int omap_compare_pipes(const void *a, const void *b)
>  	const struct omap_drm_pipeline *pipe1 = a;
>  	const struct omap_drm_pipeline *pipe2 = b;
>  
> -	if (pipe1->display->alias_id > pipe2->display->alias_id)
> +	if (pipe1->alias_id > pipe2->alias_id)
>  		return 1;
> -	else if (pipe1->display->alias_id < pipe2->display->alias_id)
> +	else if (pipe1->alias_id < pipe2->alias_id)
>  		return -1;
>  	return 0;
>  }
> @@ -182,11 +182,16 @@ static int omap_connect_pipelines(struct drm_device *ddev)
>  				 output->name);
>  		} else {
>  			struct omap_drm_pipeline *pipe;
> +			int id;
>  
>  			pipe = &priv->pipes[priv->num_pipes++];
>  			pipe->output = omapdss_device_get(output);
>  			pipe->display = omapdss_display_get(output);
>  
> +			id = of_alias_get_id(pipe->display->dev->of_node,
> +					     "display");
> +			pipe->alias_id = id >= 0 ? id : priv->num_pipes - 1;
> +
>  			if (priv->num_pipes == ARRAY_SIZE(priv->pipes)) {
>  				/* To balance the 'for_each_dss_output' loop */
>  				omapdss_device_put(output);
> diff --git a/drivers/gpu/drm/omapdrm/omap_drv.h b/drivers/gpu/drm/omapdrm/omap_drv.h
> index 788aa9f7e6df..a169de3ed95d 100644
> --- a/drivers/gpu/drm/omapdrm/omap_drv.h
> +++ b/drivers/gpu/drm/omapdrm/omap_drv.h
> @@ -51,6 +51,7 @@ struct omap_drm_pipeline {
>  	struct drm_connector *connector;
>  	struct omap_dss_device *output;
>  	struct omap_dss_device *display;
> +	unsigned int alias_id;
>  };
>  
>  struct omap_drm_private {
> -- 
> 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/20181209/1116823b/attachment-0001.sig>


More information about the dri-devel mailing list