On 23/03/2026 16:56, Thomas Zimmermann wrote:
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.

Thanks, it looks good to me.

Reviewed-by: Jocelyn Falempe <[email protected]>

Signed-off-by: Thomas Zimmermann <[email protected]>
Fixes: 83c6620bae3f ("drm/ast: initial DP501 support (v0.2)")
Cc: Dave Airlie <[email protected]>
Cc: Thomas Zimmermann <[email protected]>
Cc: Jocelyn Falempe <[email protected]>
Cc: [email protected]
Cc: <[email protected]> # v3.16+
---
  drivers/gpu/drm/ast/ast_dp501.c | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/ast/ast_dp501.c b/drivers/gpu/drm/ast/ast_dp501.c
index 9e19d8c17730..677c52c0d99a 100644
--- a/drivers/gpu/drm/ast/ast_dp501.c
+++ b/drivers/gpu/drm/ast/ast_dp501.c
@@ -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);

Reply via email to