]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
drm/ast: dp501: Fix initialization of SCU2C
authorThomas Zimmermann <tzimmermann@suse.de>
Fri, 27 Mar 2026 13:32:53 +0000 (14:32 +0100)
committerThomas Zimmermann <tzimmermann@suse.de>
Mon, 30 Mar 2026 08:38:11 +0000 (10:38 +0200)
Ast's DP501 initialization reads the register SCU2C at offset 0x1202c
and tries to set it to source data from VGA. But writes the update to
offset 0x0, with unknown results. Write the result to SCU instead.

The bug only happens in ast_init_analog(). There's similar code in
ast_init_dvo(), which works correctly.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Fixes: 83c6620bae3f ("drm/ast: initial DP501 support (v0.2)")
Reviewed-by: Jocelyn Falempe <jfalempe@redhat.com>
Cc: Dave Airlie <airlied@redhat.com>
Cc: Thomas Zimmermann <tzimmermann@suse.de>
Cc: Jocelyn Falempe <jfalempe@redhat.com>
Cc: dri-devel@lists.freedesktop.org
Cc: <stable@vger.kernel.org> # v3.16+
Link: https://patch.msgid.link/20260327133532.79696-2-tzimmermann@suse.de
drivers/gpu/drm/ast/ast_dp501.c

index 9e19d8c17730834bbbb8782b3d58999c79b96098..677c52c0d99a3ceffaf1fba9c5d9b5abbf748e30 100644 (file)
@@ -436,7 +436,7 @@ static void ast_init_analog(struct ast_device *ast)
        /* Finally, clear bits [17:16] of SCU2c */
        data = ast_read32(ast, 0x1202c);
        data &= 0xfffcffff;
-       ast_write32(ast, 0, data);
+       ast_write32(ast, 0x1202c, data);
 
        /* Disable DVO */
        ast_set_index_reg_mask(ast, AST_IO_VGACRI, 0xa3, 0xcf, 0x00);