Detect the 4th-generation AST 1300. Allows to simplify the code
for widescreen support.

Signed-off-by: Thomas Zimmermann <tzimmerm...@suse.de>
---
 drivers/gpu/drm/ast/ast_drv.h  |  2 +-
 drivers/gpu/drm/ast/ast_main.c | 15 +++++++++++----
 2 files changed, 12 insertions(+), 5 deletions(-)

diff --git a/drivers/gpu/drm/ast/ast_drv.h b/drivers/gpu/drm/ast/ast_drv.h
index c209d7e4e4194..e3f82c7a823e4 100644
--- a/drivers/gpu/drm/ast/ast_drv.h
+++ b/drivers/gpu/drm/ast/ast_drv.h
@@ -70,7 +70,7 @@ enum ast_chip {
        AST2150 = __AST_CHIP(3, 1),
        /* 4th gen */
        AST2300 = __AST_CHIP(4, 0),
-       AST1300 = __AST_CHIP(4, 1), // unused
+       AST1300 = __AST_CHIP(4, 1),
        AST1050 = __AST_CHIP(4, 2), // unused
        /* 5th gen */
        AST2400 = __AST_CHIP(5, 0),
diff --git a/drivers/gpu/drm/ast/ast_main.c b/drivers/gpu/drm/ast/ast_main.c
index 3cd94a74150bf..bf8606301ab26 100644
--- a/drivers/gpu/drm/ast/ast_main.c
+++ b/drivers/gpu/drm/ast/ast_main.c
@@ -170,8 +170,16 @@ static int ast_detect_chip(struct drm_device *dev, bool 
need_post, u32 scu_rev)
                ast->chip = AST2400;
                drm_info(dev, "AST 2400 detected\n");
        } else if (pdev->revision >= 0x20) {
-               ast->chip = AST2300;
-               drm_info(dev, "AST 2300 detected\n");
+               switch (scu_rev & 0x300) {
+               case 0x0000:
+                       ast->chip = AST1300;
+                       drm_info(dev, "AST 1300 detected\n");
+                       break;
+               default:
+                       ast->chip = AST2300;
+                       drm_info(dev, "AST 2300 detected\n");
+                       break;
+               }
        } else if (pdev->revision >= 0x10) {
                switch (scu_rev & 0x0300) {
                case 0x0200:
@@ -209,8 +217,7 @@ static int ast_detect_chip(struct drm_device *dev, bool 
need_post, u32 scu_rev)
                        ast->support_wide_screen = true;
                else {
                        ast->support_wide_screen = false;
-                       if (ast->chip == AST2300 &&
-                           (scu_rev & 0x300) == 0x0) /* ast1300 */
+                       if (ast->chip == AST1300)
                                ast->support_wide_screen = true;
                        if (ast->chip == AST2400 &&
                            (scu_rev & 0x300) == 0x100) /* ast1400 */
-- 
2.41.0

Reply via email to