Move the mode-setting code from atomic_flush() to atomic_begin(), and thus before the plane update. With the CRTC update before the plane updates, the cursor can be disabled while the mode is being changed. The patch removes the call ast_open_key() from atomic_begin(), The function unlocks ast's extended display registers; something that has been done at this point already. The now-empty implementation of atomic_flush() is also being removed. Signed-off-by: Thomas Zimmermann <tzimmermann@xxxxxxx> Fixes: 4961eb60f145 ("drm/ast: Enable atomic modesetting") Cc: Thomas Zimmermann <tzimmermann@xxxxxxx> Cc: Gerd Hoffmann <kraxel@xxxxxxxxxx> Cc: Dave Airlie <airlied@xxxxxxxxxx> Cc: Daniel Vetter <daniel.vetter@xxxxxxxx> Cc: Sam Ravnborg <sam@xxxxxxxxxxxx> Cc: Emil Velikov <emil.l.velikov@xxxxxxxxx> Cc: "Y.C. Chen" <yc_chen@xxxxxxxxxxxxxx> Cc: <stable@xxxxxxxxxxxxxxx> # v5.6+ --- drivers/gpu/drm/ast/ast_mode.c | 9 --------- 1 file changed, 9 deletions(-) diff --git a/drivers/gpu/drm/ast/ast_mode.c b/drivers/gpu/drm/ast/ast_mode.c index b129833c0821..0ea8a68ac2d9 100644 --- a/drivers/gpu/drm/ast/ast_mode.c +++ b/drivers/gpu/drm/ast/ast_mode.c @@ -757,14 +757,6 @@ static int ast_crtc_helper_atomic_check(struct drm_crtc *crtc, static void ast_crtc_helper_atomic_begin(struct drm_crtc *crtc, struct drm_crtc_state *old_crtc_state) -{ - struct ast_private *ast = to_ast_private(crtc->dev); - - ast_open_key(ast); -} - -static void ast_crtc_helper_atomic_flush(struct drm_crtc *crtc, - struct drm_crtc_state *old_crtc_state) { struct drm_device *dev = crtc->dev; struct ast_private *ast = to_ast_private(dev); @@ -813,7 +805,6 @@ ast_crtc_helper_atomic_disable(struct drm_crtc *crtc, static const struct drm_crtc_helper_funcs ast_crtc_helper_funcs = { .atomic_check = ast_crtc_helper_atomic_check, .atomic_begin = ast_crtc_helper_atomic_begin, - .atomic_flush = ast_crtc_helper_atomic_flush, .atomic_enable = ast_crtc_helper_atomic_enable, .atomic_disable = ast_crtc_helper_atomic_disable, }; -- 2.28.0