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

2018-12-10 Thread Sebastian Reichel
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 
> ---

Reviewed-by: Sebastian Reichel 

-- 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", >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 = >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@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel


signature.asc
Description: PGP signature
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel


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

2018-12-05 Thread Laurent Pinchart
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 
---
 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", >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 = >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@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel