drm/ast: Enable MMIO without ast device instance
authorThomas Zimmermann <tzimmermann@suse.de>
Thu, 16 Nov 2023 09:59:25 +0000 (10:59 +0100)
committerThomas Zimmermann <tzimmermann@suse.de>
Tue, 28 Nov 2023 15:17:08 +0000 (16:17 +0100)
We'll have to enable the MMIO access for detecting the ast device
type. Make this work without an instance of the ast device.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Reviewed-by: Jocelyn Falempe <jfalempe@redhat.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20231116100240.22975-7-tzimmermann@suse.de
drivers/gpu/drm/ast/ast_main.c
drivers/gpu/drm/ast/ast_reg.h

index 82fcee9..0173cb4 100644 (file)
@@ -54,19 +54,21 @@ static void ast_enable_vga(void __iomem *ioregs)
  */
 static void ast_enable_mmio_release(void *data)
 {
-       struct ast_device *ast = data;
+       void __iomem *ioregs = (void __force __iomem *)data;
 
        /* enable standard VGA decode */
-       ast_set_index_reg(ast, AST_IO_VGACRI, 0xa1, 0x04);
+       __ast_write8_i(ioregs, AST_IO_VGACRI, 0xa1, AST_IO_VGACRA1_MMIO_ENABLED);
 }
 
-static int ast_enable_mmio(struct ast_device *ast)
+static int ast_enable_mmio(struct device *dev, void __iomem *ioregs)
 {
-       struct drm_device *dev = &ast->base;
+       void *data = (void __force *)ioregs;
 
-       ast_set_index_reg(ast, AST_IO_VGACRI, 0xa1, 0x06);
+       __ast_write8_i(ioregs, AST_IO_VGACRI, 0xa1,
+                      AST_IO_VGACRA1_MMIO_ENABLED |
+                      AST_IO_VGACRA1_VGAIO_DISABLED);
 
-       return devm_add_action_or_reset(dev->dev, ast_enable_mmio_release, ast);
+       return devm_add_action_or_reset(dev, ast_enable_mmio_release, data);
 }
 
 static void ast_open_key(void __iomem *ioregs)
@@ -496,7 +498,7 @@ struct ast_device *ast_device_create(const struct drm_driver *drv,
        /* Enable extended register access */
        ast_open_key(ioregs);
 
-       ret = ast_enable_mmio(ast);
+       ret = ast_enable_mmio(&pdev->dev, ioregs);
        if (ret)
                return ERR_PTR(ret);
 
index 5258a84..62dddbf 100644 (file)
@@ -29,6 +29,8 @@
 
 #define AST_IO_VGACRI                  (0x54)
 #define AST_IO_VGACR80_PASSWORD                (0xa8)
+#define AST_IO_VGACRA1_VGAIO_DISABLED  BIT(1)
+#define AST_IO_VGACRA1_MMIO_ENABLED    BIT(2)
 #define AST_IO_VGACRCB_HWC_16BPP       BIT(0) /* set: ARGB4444, cleared: 2bpp palette */
 #define AST_IO_VGACRCB_HWC_ENABLED     BIT(1)