drm/omap: plane: Fix zpos initial value mismatch
authorMaxime Ripard <maxime@cerno.tech>
Mon, 21 Feb 2022 09:59:00 +0000 (10:59 +0100)
committerMaxime Ripard <maxime@cerno.tech>
Fri, 25 Feb 2022 16:55:12 +0000 (17:55 +0100)
While the omap_plane_init() function calls
drm_plane_create_zpos_property() with an initial value of 0,
omap_plane_reset() will force it to another value depending on the plane
type.

Fix the discrepancy by setting the initial zpos value to the same value
in the drm_plane_create_zpos_property() call.

Reviewed-by: Tomi Valkeinen <tomba@kernel.org>
Signed-off-by: Maxime Ripard <maxime@cerno.tech>
Link: https://patchwork.freedesktop.org/patch/msgid/20220221095918.18763-5-maxime@cerno.tech
drivers/gpu/drm/omapdrm/omap_plane.c

index b35205c4e9796f5988707ec16a458669ec96f37d..e67baf9a942c215022765ee6e0e95c1a0abb2405 100644 (file)
@@ -533,6 +533,7 @@ struct drm_plane *omap_plane_init(struct drm_device *dev,
        unsigned int num_planes = dispc_get_num_ovls(priv->dispc);
        struct drm_plane *plane;
        struct omap_plane *omap_plane;
+       unsigned int zpos;
        int ret;
        u32 nformats;
        const u32 *formats;
@@ -564,7 +565,16 @@ struct drm_plane *omap_plane_init(struct drm_device *dev,
        drm_plane_helper_add(plane, &omap_plane_helper_funcs);
 
        omap_plane_install_properties(plane, &plane->base);
-       drm_plane_create_zpos_property(plane, 0, 0, num_planes - 1);
+
+       /*
+        * Set the zpos default depending on whether we are a primary or overlay
+        * plane.
+        */
+       if (plane->type == DRM_PLANE_TYPE_PRIMARY)
+               zpos = 0;
+       else
+               zpos = omap_plane->id;
+       drm_plane_create_zpos_property(plane, zpos, 0, num_planes - 1);
        drm_plane_create_alpha_property(plane);
        drm_plane_create_blend_mode_property(plane, BIT(DRM_MODE_BLEND_PREMULTI) |
                                             BIT(DRM_MODE_BLEND_COVERAGE));