Re: [PATCH v2 49/60] drm/omap: Create all planes before CRTCs

2018-06-10 Thread Sebastian Reichel
Hi,

On Sat, May 26, 2018 at 08:25:07PM +0300, Laurent Pinchart wrote:
> Creating all the planes in a single location instead of creating them
> per-CRTC with remaining planes then created in a second step simplifies
> the logic.
> 
> Signed-off-by: Laurent Pinchart 
> ---

Reviewed-by: Sebastian Reichel 

-- Sebastian

>  drivers/gpu/drm/omapdrm/omap_drv.c | 45 
> --
>  1 file changed, 19 insertions(+), 26 deletions(-)
> 
> diff --git a/drivers/gpu/drm/omapdrm/omap_drv.c 
> b/drivers/gpu/drm/omapdrm/omap_drv.c
> index 0d4c3e2db058..99ed47a17ce3 100644
> --- a/drivers/gpu/drm/omapdrm/omap_drv.c
> +++ b/drivers/gpu/drm/omapdrm/omap_drv.c
> @@ -271,14 +271,30 @@ static int omap_modeset_init(struct drm_device *dev)
>   return -EINVAL;
>   }
>  
> - /* All planes can be put to any CRTC */
> + /* Create all planes first. They can all be put to any CRTC. */
>   plane_crtc_mask = (1 << num_crtcs) - 1;
>  
> + for (i = 0; i < num_ovls; i++) {
> + enum drm_plane_type type = i < priv->num_dssdevs
> +  ? DRM_PLANE_TYPE_PRIMARY
> +  : DRM_PLANE_TYPE_OVERLAY;
> + struct drm_plane *plane;
> +
> + if (WARN_ON(priv->num_planes >= ARRAY_SIZE(priv->planes)))
> + return -EINVAL;
> +
> + plane = omap_plane_init(dev, i, type, plane_crtc_mask);
> + if (IS_ERR(plane))
> + return PTR_ERR(plane);
> +
> + priv->planes[priv->num_planes++] = plane;
> + }
> +
> + /* Create the CRTCs, encoders and connectors. */
>   for (i = 0; i < priv->num_dssdevs; i++) {
>   struct omap_dss_device *dssdev = priv->dssdevs[i];
>   struct drm_connector *connector;
>   struct drm_encoder *encoder;
> - struct drm_plane *plane;
>   struct drm_crtc *crtc;
>  
>   encoder = omap_encoder_init(dev, dssdev);
> @@ -290,12 +306,7 @@ static int omap_modeset_init(struct drm_device *dev)
>   if (!connector)
>   return -ENOMEM;
>  
> - plane = omap_plane_init(dev, i, DRM_PLANE_TYPE_PRIMARY,
> - plane_crtc_mask);
> - if (IS_ERR(plane))
> - return PTR_ERR(plane);
> -
> - crtc = omap_crtc_init(dev, plane, dssdev);
> + crtc = omap_crtc_init(dev, priv->planes[i], dssdev);
>   if (IS_ERR(crtc))
>   return PTR_ERR(crtc);
>  
> @@ -303,28 +314,10 @@ static int omap_modeset_init(struct drm_device *dev)
>   encoder->possible_crtcs = 1 << i;
>  
>   priv->crtcs[priv->num_crtcs++] = crtc;
> - priv->planes[priv->num_planes++] = plane;
>   priv->encoders[priv->num_encoders++] = encoder;
>   priv->connectors[priv->num_connectors++] = connector;
>   }
>  
> - /*
> -  * Create normal planes for the remaining overlays:
> -  */
> - for (; i < num_ovls; i++) {
> - struct drm_plane *plane;
> -
> - if (WARN_ON(priv->num_planes >= ARRAY_SIZE(priv->planes)))
> - return -EINVAL;
> -
> - plane = omap_plane_init(dev, i, DRM_PLANE_TYPE_OVERLAY,
> - plane_crtc_mask);
> - if (IS_ERR(plane))
> - return PTR_ERR(plane);
> -
> - priv->planes[priv->num_planes++] = plane;
> - }
> -
>   DBG("registered %d planes, %d crtcs, %d encoders and %d connectors\n",
>   priv->num_planes, priv->num_crtcs, priv->num_encoders,
>   priv->num_connectors);
> -- 
> 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 v2 49/60] drm/omap: Create all planes before CRTCs

2018-05-26 Thread Laurent Pinchart
Creating all the planes in a single location instead of creating them
per-CRTC with remaining planes then created in a second step simplifies
the logic.

Signed-off-by: Laurent Pinchart 
---
 drivers/gpu/drm/omapdrm/omap_drv.c | 45 --
 1 file changed, 19 insertions(+), 26 deletions(-)

diff --git a/drivers/gpu/drm/omapdrm/omap_drv.c 
b/drivers/gpu/drm/omapdrm/omap_drv.c
index 0d4c3e2db058..99ed47a17ce3 100644
--- a/drivers/gpu/drm/omapdrm/omap_drv.c
+++ b/drivers/gpu/drm/omapdrm/omap_drv.c
@@ -271,14 +271,30 @@ static int omap_modeset_init(struct drm_device *dev)
return -EINVAL;
}
 
-   /* All planes can be put to any CRTC */
+   /* Create all planes first. They can all be put to any CRTC. */
plane_crtc_mask = (1 << num_crtcs) - 1;
 
+   for (i = 0; i < num_ovls; i++) {
+   enum drm_plane_type type = i < priv->num_dssdevs
+? DRM_PLANE_TYPE_PRIMARY
+: DRM_PLANE_TYPE_OVERLAY;
+   struct drm_plane *plane;
+
+   if (WARN_ON(priv->num_planes >= ARRAY_SIZE(priv->planes)))
+   return -EINVAL;
+
+   plane = omap_plane_init(dev, i, type, plane_crtc_mask);
+   if (IS_ERR(plane))
+   return PTR_ERR(plane);
+
+   priv->planes[priv->num_planes++] = plane;
+   }
+
+   /* Create the CRTCs, encoders and connectors. */
for (i = 0; i < priv->num_dssdevs; i++) {
struct omap_dss_device *dssdev = priv->dssdevs[i];
struct drm_connector *connector;
struct drm_encoder *encoder;
-   struct drm_plane *plane;
struct drm_crtc *crtc;
 
encoder = omap_encoder_init(dev, dssdev);
@@ -290,12 +306,7 @@ static int omap_modeset_init(struct drm_device *dev)
if (!connector)
return -ENOMEM;
 
-   plane = omap_plane_init(dev, i, DRM_PLANE_TYPE_PRIMARY,
-   plane_crtc_mask);
-   if (IS_ERR(plane))
-   return PTR_ERR(plane);
-
-   crtc = omap_crtc_init(dev, plane, dssdev);
+   crtc = omap_crtc_init(dev, priv->planes[i], dssdev);
if (IS_ERR(crtc))
return PTR_ERR(crtc);
 
@@ -303,28 +314,10 @@ static int omap_modeset_init(struct drm_device *dev)
encoder->possible_crtcs = 1 << i;
 
priv->crtcs[priv->num_crtcs++] = crtc;
-   priv->planes[priv->num_planes++] = plane;
priv->encoders[priv->num_encoders++] = encoder;
priv->connectors[priv->num_connectors++] = connector;
}
 
-   /*
-* Create normal planes for the remaining overlays:
-*/
-   for (; i < num_ovls; i++) {
-   struct drm_plane *plane;
-
-   if (WARN_ON(priv->num_planes >= ARRAY_SIZE(priv->planes)))
-   return -EINVAL;
-
-   plane = omap_plane_init(dev, i, DRM_PLANE_TYPE_OVERLAY,
-   plane_crtc_mask);
-   if (IS_ERR(plane))
-   return PTR_ERR(plane);
-
-   priv->planes[priv->num_planes++] = plane;
-   }
-
DBG("registered %d planes, %d crtcs, %d encoders and %d connectors\n",
priv->num_planes, priv->num_crtcs, priv->num_encoders,
priv->num_connectors);
-- 
Regards,

Laurent Pinchart

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