summaryrefslogtreecommitdiff
path: root/drivers/gpu/drm/ast/ast_main.c
diff options
context:
space:
mode:
authorThomas Zimmermann <tzimmermann@suse.de>2023-11-16 10:59:25 +0100
committerThomas Zimmermann <tzimmermann@suse.de>2023-11-28 16:17:08 +0100
commit66f843d6703513b9ee8d3d10694a21931feb32c7 (patch)
treedd04d6f9227862cec6e04523a6c237197ba6714a /drivers/gpu/drm/ast/ast_main.c
parent73b05bb4c0539d89111ed2f9c5a2eac1b577f83d (diff)
drm/ast: Enable MMIO without ast device instance
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
Diffstat (limited to 'drivers/gpu/drm/ast/ast_main.c')
-rw-r--r--drivers/gpu/drm/ast/ast_main.c16
1 files changed, 9 insertions, 7 deletions
diff --git a/drivers/gpu/drm/ast/ast_main.c b/drivers/gpu/drm/ast/ast_main.c
index 82fcee967d98..0173cb44f17d 100644
--- a/drivers/gpu/drm/ast/ast_main.c
+++ b/drivers/gpu/drm/ast/ast_main.c
@@ -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);