drm/ast: Don't clear base address and offset with default values
authorThomas Zimmermann <tzimmermann@suse.de>
Thu, 7 Nov 2019 08:33:58 +0000 (09:33 +0100)
committerThomas Zimmermann <tzimmermann@suse.de>
Fri, 8 Nov 2019 10:03:01 +0000 (11:03 +0100)
The content of the base-address and offset registers are state of
the primary plane. Clearing it to default values will interfere with
plane functions for atomic mode setting.

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

index b13eaa2619abefac656b81c55c212ce8965a5124..b3f82c2d274d98b9c586b7784fbea65e457e9ee1 100644 (file)
@@ -253,9 +253,13 @@ static void ast_set_std_reg(struct drm_crtc *crtc, struct drm_display_mode *mode
                ast_set_index_reg(ast, AST_IO_SEQ_PORT, (i + 1) , jreg);
        }
 
-       /* Set CRTC */
+       /* Set CRTC; except base address and offset */
        ast_set_index_reg_mask(ast, AST_IO_CRTC_PORT, 0x11, 0x7f, 0x00);
-       for (i = 0; i < 25; i++)
+       for (i = 0; i < 12; i++)
+               ast_set_index_reg(ast, AST_IO_CRTC_PORT, i, stdtable->crtc[i]);
+       for (i = 14; i < 19; i++)
+               ast_set_index_reg(ast, AST_IO_CRTC_PORT, i, stdtable->crtc[i]);
+       for (i = 20; i < 25; i++)
                ast_set_index_reg(ast, AST_IO_CRTC_PORT, i, stdtable->crtc[i]);
 
        /* set AR */