Re: [PATCH v2 50/60] drm/omap: Group CRTC, encoder, connector and dssdev in a structure

2018-06-11 Thread Sebastian Reichel
Hi,

On Sat, May 26, 2018 at 08:25:08PM +0300, Laurent Pinchart wrote:
> Create an omap_drm_pipeline structure to model display pipelines, made
> of a CRTC, an encoder, a connector and a DSS display device. This allows
> grouping related parameters together instead of storing them in
> independent arrays and thus improves code readability.
> 
> Signed-off-by: Laurent Pinchart 
> ---

Reviewed-by: Sebastian Reichel 

-- Sebastian

>  drivers/gpu/drm/omapdrm/omap_crtc.c  |   4 +-
>  drivers/gpu/drm/omapdrm/omap_drv.c   | 144 
> +--
>  drivers/gpu/drm/omapdrm/omap_drv.h   |  20 +++--
>  drivers/gpu/drm/omapdrm/omap_fbdev.c |   4 +-
>  drivers/gpu/drm/omapdrm/omap_irq.c   |   4 +-
>  5 files changed, 84 insertions(+), 92 deletions(-)
> 
> diff --git a/drivers/gpu/drm/omapdrm/omap_crtc.c 
> b/drivers/gpu/drm/omapdrm/omap_crtc.c
> index c5f1915aef67..f5bf553a862f 100644
> --- a/drivers/gpu/drm/omapdrm/omap_crtc.c
> +++ b/drivers/gpu/drm/omapdrm/omap_crtc.c
> @@ -474,8 +474,8 @@ static void omap_crtc_mode_set_nofb(struct drm_crtc *crtc)
>* has been changed to the DRM model.
>*/
>  
> - for (i = 0; i < priv->num_encoders; ++i) {
> - struct drm_encoder *encoder = priv->encoders[i];
> + for (i = 0; i < priv->num_pipes; ++i) {
> + struct drm_encoder *encoder = priv->pipes[i].encoder;
>  
>   if (encoder->crtc == crtc) {
>   struct omap_dss_device *dssdev;
> diff --git a/drivers/gpu/drm/omapdrm/omap_drv.c 
> b/drivers/gpu/drm/omapdrm/omap_drv.c
> index 99ed47a17ce3..298d594a0c65 100644
> --- a/drivers/gpu/drm/omapdrm/omap_drv.c
> +++ b/drivers/gpu/drm/omapdrm/omap_drv.c
> @@ -129,9 +129,9 @@ static const struct drm_mode_config_funcs 
> omap_mode_config_funcs = {
>   .atomic_commit = drm_atomic_helper_commit,
>  };
>  
> -static int get_connector_type(struct omap_dss_device *dssdev)
> +static int get_connector_type(struct omap_dss_device *display)
>  {
> - switch (dssdev->type) {
> + switch (display->type) {
>   case OMAP_DISPLAY_TYPE_HDMI:
>   return DRM_MODE_CONNECTOR_HDMIA;
>   case OMAP_DISPLAY_TYPE_DVI:
> @@ -151,65 +151,65 @@ static int get_connector_type(struct omap_dss_device 
> *dssdev)
>   }
>  }
>  
> -static void omap_disconnect_dssdevs(struct drm_device *ddev)
> +static void omap_disconnect_pipelines(struct drm_device *ddev)
>  {
>   struct omap_drm_private *priv = ddev->dev_private;
>   unsigned int i;
>  
> - for (i = 0; i < priv->num_dssdevs; i++) {
> - struct omap_dss_device *dssdev = priv->dssdevs[i];
> + for (i = 0; i < priv->num_pipes; i++) {
> + struct omap_dss_device *display = priv->pipes[i].display;
>  
> - omapdss_device_disconnect(dssdev, NULL);
> - priv->dssdevs[i] = NULL;
> - omapdss_device_put(dssdev);
> + omapdss_device_disconnect(display, NULL);
> + priv->pipes[i].display = NULL;
> + omapdss_device_put(display);
>   }
>  
> - priv->num_dssdevs = 0;
> + priv->num_pipes = 0;
>  }
>  
> -static int omap_compare_dssdevs(const void *a, const void *b)
> +static int omap_compare_pipes(const void *a, const void *b)
>  {
> - const struct omap_dss_device *dssdev1 = *(struct omap_dss_device **)a;
> - const struct omap_dss_device *dssdev2 = *(struct omap_dss_device **)b;
> + const struct omap_drm_pipeline *pipe1 = a;
> + const struct omap_drm_pipeline *pipe2 = b;
>  
> - if (dssdev1->alias_id > dssdev2->alias_id)
> + if (pipe1->display->alias_id > pipe2->display->alias_id)
>   return 1;
> - else if (dssdev1->alias_id < dssdev2->alias_id)
> + else if (pipe1->display->alias_id < pipe2->display->alias_id)
>   return -1;
>   return 0;
>  }
>  
> -static int omap_connect_dssdevs(struct drm_device *ddev)
> +static int omap_connect_pipelines(struct drm_device *ddev)
>  {
>   struct omap_drm_private *priv = ddev->dev_private;
> - struct omap_dss_device *dssdev = NULL;
> + struct omap_dss_device *display = NULL;
>   int r;
>  
>   if (!omapdss_stack_is_ready())
>   return -EPROBE_DEFER;
>  
> - for_each_dss_display(dssdev) {
> - r = omapdss_device_connect(priv->dss, dssdev, NULL);
> + for_each_dss_display(display) {
> + r = omapdss_device_connect(priv->dss, display, NULL);
>   if (r == -EPROBE_DEFER) {
> - omapdss_device_put(dssdev);
> + omapdss_device_put(display);
>   goto cleanup;
>   } else if (r) {
> - dev_warn(dssdev->dev, "could not connect display: %s\n",
> - dssdev->name);
> + dev_warn(display->dev, "could not connect display: 
> %s\n",
> + display->name);
>   } else {
> - omapdss_device_get(dssdev);
> -

[PATCH v2 50/60] drm/omap: Group CRTC, encoder, connector and dssdev in a structure

2018-05-26 Thread Laurent Pinchart
Create an omap_drm_pipeline structure to model display pipelines, made
of a CRTC, an encoder, a connector and a DSS display device. This allows
grouping related parameters together instead of storing them in
independent arrays and thus improves code readability.

Signed-off-by: Laurent Pinchart 
---
 drivers/gpu/drm/omapdrm/omap_crtc.c  |   4 +-
 drivers/gpu/drm/omapdrm/omap_drv.c   | 144 +--
 drivers/gpu/drm/omapdrm/omap_drv.h   |  20 +++--
 drivers/gpu/drm/omapdrm/omap_fbdev.c |   4 +-
 drivers/gpu/drm/omapdrm/omap_irq.c   |   4 +-
 5 files changed, 84 insertions(+), 92 deletions(-)

diff --git a/drivers/gpu/drm/omapdrm/omap_crtc.c 
b/drivers/gpu/drm/omapdrm/omap_crtc.c
index c5f1915aef67..f5bf553a862f 100644
--- a/drivers/gpu/drm/omapdrm/omap_crtc.c
+++ b/drivers/gpu/drm/omapdrm/omap_crtc.c
@@ -474,8 +474,8 @@ static void omap_crtc_mode_set_nofb(struct drm_crtc *crtc)
 * has been changed to the DRM model.
 */
 
-   for (i = 0; i < priv->num_encoders; ++i) {
-   struct drm_encoder *encoder = priv->encoders[i];
+   for (i = 0; i < priv->num_pipes; ++i) {
+   struct drm_encoder *encoder = priv->pipes[i].encoder;
 
if (encoder->crtc == crtc) {
struct omap_dss_device *dssdev;
diff --git a/drivers/gpu/drm/omapdrm/omap_drv.c 
b/drivers/gpu/drm/omapdrm/omap_drv.c
index 99ed47a17ce3..298d594a0c65 100644
--- a/drivers/gpu/drm/omapdrm/omap_drv.c
+++ b/drivers/gpu/drm/omapdrm/omap_drv.c
@@ -129,9 +129,9 @@ static const struct drm_mode_config_funcs 
omap_mode_config_funcs = {
.atomic_commit = drm_atomic_helper_commit,
 };
 
-static int get_connector_type(struct omap_dss_device *dssdev)
+static int get_connector_type(struct omap_dss_device *display)
 {
-   switch (dssdev->type) {
+   switch (display->type) {
case OMAP_DISPLAY_TYPE_HDMI:
return DRM_MODE_CONNECTOR_HDMIA;
case OMAP_DISPLAY_TYPE_DVI:
@@ -151,65 +151,65 @@ static int get_connector_type(struct omap_dss_device 
*dssdev)
}
 }
 
-static void omap_disconnect_dssdevs(struct drm_device *ddev)
+static void omap_disconnect_pipelines(struct drm_device *ddev)
 {
struct omap_drm_private *priv = ddev->dev_private;
unsigned int i;
 
-   for (i = 0; i < priv->num_dssdevs; i++) {
-   struct omap_dss_device *dssdev = priv->dssdevs[i];
+   for (i = 0; i < priv->num_pipes; i++) {
+   struct omap_dss_device *display = priv->pipes[i].display;
 
-   omapdss_device_disconnect(dssdev, NULL);
-   priv->dssdevs[i] = NULL;
-   omapdss_device_put(dssdev);
+   omapdss_device_disconnect(display, NULL);
+   priv->pipes[i].display = NULL;
+   omapdss_device_put(display);
}
 
-   priv->num_dssdevs = 0;
+   priv->num_pipes = 0;
 }
 
-static int omap_compare_dssdevs(const void *a, const void *b)
+static int omap_compare_pipes(const void *a, const void *b)
 {
-   const struct omap_dss_device *dssdev1 = *(struct omap_dss_device **)a;
-   const struct omap_dss_device *dssdev2 = *(struct omap_dss_device **)b;
+   const struct omap_drm_pipeline *pipe1 = a;
+   const struct omap_drm_pipeline *pipe2 = b;
 
-   if (dssdev1->alias_id > dssdev2->alias_id)
+   if (pipe1->display->alias_id > pipe2->display->alias_id)
return 1;
-   else if (dssdev1->alias_id < dssdev2->alias_id)
+   else if (pipe1->display->alias_id < pipe2->display->alias_id)
return -1;
return 0;
 }
 
-static int omap_connect_dssdevs(struct drm_device *ddev)
+static int omap_connect_pipelines(struct drm_device *ddev)
 {
struct omap_drm_private *priv = ddev->dev_private;
-   struct omap_dss_device *dssdev = NULL;
+   struct omap_dss_device *display = NULL;
int r;
 
if (!omapdss_stack_is_ready())
return -EPROBE_DEFER;
 
-   for_each_dss_display(dssdev) {
-   r = omapdss_device_connect(priv->dss, dssdev, NULL);
+   for_each_dss_display(display) {
+   r = omapdss_device_connect(priv->dss, display, NULL);
if (r == -EPROBE_DEFER) {
-   omapdss_device_put(dssdev);
+   omapdss_device_put(display);
goto cleanup;
} else if (r) {
-   dev_warn(dssdev->dev, "could not connect display: %s\n",
-   dssdev->name);
+   dev_warn(display->dev, "could not connect display: 
%s\n",
+   display->name);
} else {
-   omapdss_device_get(dssdev);
-   priv->dssdevs[priv->num_dssdevs++] = dssdev;
-   if (priv->num_dssdevs == ARRAY_SIZE(priv->dssdevs)) {
+   omapdss_device_get(display);
+   priv->pipes[priv-