drm/ast: Enable primary plane with CRTC
authorThomas Zimmermann <tzimmermann@suse.de>
Fri, 17 Jun 2022 10:32:26 +0000 (12:32 +0200)
committerThomas Zimmermann <tzimmermann@suse.de>
Mon, 27 Jun 2022 09:10:43 +0000 (11:10 +0200)
As the CRTC requires a primary plane for display, ensure that the
primary plane is enabled with the CRTC.

Use drm_atomic_helper_check_crtc_state(). Add all affected planes
to the atomic state so that their state will be checked as well.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Acked-by: Jocelyn Falempe <jfalempe@redhat.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20220617103226.25617-4-tzimmermann@suse.de
drivers/gpu/drm/ast/ast_mode.c

index 4a91605b4654b7aab0c48ef99e0c59575014869c..214b10178454d9a02b0bd6051cada60447eab108 100644 (file)
@@ -1108,15 +1108,19 @@ ast_crtc_helper_mode_valid(struct drm_crtc *crtc, const struct drm_display_mode
 static int ast_crtc_helper_atomic_check(struct drm_crtc *crtc,
                                        struct drm_atomic_state *state)
 {
-       struct drm_crtc_state *crtc_state = drm_atomic_get_new_crtc_state(state,
-                                                                         crtc);
+       struct drm_crtc_state *crtc_state = drm_atomic_get_new_crtc_state(state, crtc);
        struct drm_device *dev = crtc->dev;
        struct ast_crtc_state *ast_state;
        const struct drm_format_info *format;
        bool succ;
+       int ret;
+
+       ret = drm_atomic_helper_check_crtc_state(crtc_state, false);
+       if (ret)
+               return ret;
 
        if (!crtc_state->enable)
-               return 0; /* no mode checks if CRTC is being disabled */
+               goto out;
 
        ast_state = to_ast_crtc_state(crtc_state);
 
@@ -1130,7 +1134,8 @@ static int ast_crtc_helper_atomic_check(struct drm_crtc *crtc,
        if (!succ)
                return -EINVAL;
 
-       return 0;
+out:
+       return drm_atomic_add_affected_planes(state, crtc);
 }
 
 static void ast_crtc_helper_atomic_begin(struct drm_crtc *crtc, struct drm_atomic_state *state)