Add the add4 flag to struct ast_device_quirks and set it on AST2600.
Replaces a call to IS_AST_GEN7() in ast_set_crtc_reg().

Signed-off-by: Thomas Zimmermann <[email protected]>
---
 drivers/gpu/drm/ast/ast_2600.c | 1 +
 drivers/gpu/drm/ast/ast_drv.h  | 6 ++++++
 drivers/gpu/drm/ast/ast_mode.c | 3 +--
 3 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/ast/ast_2600.c b/drivers/gpu/drm/ast/ast_2600.c
index 7cde5ce9c41f..dee78fd5b022 100644
--- a/drivers/gpu/drm/ast/ast_2600.c
+++ b/drivers/gpu/drm/ast/ast_2600.c
@@ -63,6 +63,7 @@ static const struct ast_device_quirks ast_2600_device_quirks 
= {
        .crtc_mem_req_threshold_low = 160,
        .crtc_mem_req_threshold_high = 224,
        .crtc_hsync_precatch_needed = true,
+       .crtc_hsync_add4_needed = true,
 };
 
 struct drm_device *ast_2600_device_create(struct pci_dev *pdev,
diff --git a/drivers/gpu/drm/ast/ast_drv.h b/drivers/gpu/drm/ast/ast_drv.h
index 76969244d36f..7be36a358e74 100644
--- a/drivers/gpu/drm/ast/ast_drv.h
+++ b/drivers/gpu/drm/ast/ast_drv.h
@@ -176,6 +176,12 @@ struct ast_device_quirks {
         * by AST2500PreCatchCRT in VBIOS mode flags.
         */
        bool crtc_hsync_precatch_needed;
+
+       /*
+        * Workaround for modes with HSync Time that is not a multiple
+        * of 8 (e.g., 1920x1080@60Hz, HSync +44 pixels).
+        */
+       bool crtc_hsync_add4_needed;
 };
 
 struct ast_device {
diff --git a/drivers/gpu/drm/ast/ast_mode.c b/drivers/gpu/drm/ast/ast_mode.c
index ebb1ec82d904..a8917ab7028c 100644
--- a/drivers/gpu/drm/ast/ast_mode.c
+++ b/drivers/gpu/drm/ast/ast_mode.c
@@ -288,8 +288,7 @@ static void ast_set_crtc_reg(struct ast_device *ast, struct 
drm_display_mode *mo
        ast_set_index_reg_mask(ast, AST_IO_VGACRI, 0xAC, 0x00, jregAC);
        ast_set_index_reg_mask(ast, AST_IO_VGACRI, 0xAD, 0x00, jregAD);
 
-       // Workaround for HSync Time non octave pixels (1920x1080@60Hz HSync 44 
pixels);
-       if (IS_AST_GEN7(ast) && (mode->crtc_vdisplay == 1080))
+       if (ast->quirks->crtc_hsync_add4_needed && mode->crtc_vdisplay == 1080)
                ast_set_index_reg_mask(ast, AST_IO_VGACRI, 0xFC, 0xFD, 0x02);
        else
                ast_set_index_reg_mask(ast, AST_IO_VGACRI, 0xFC, 0xFD, 0x00);
-- 
2.51.0

Reply via email to