diff options
author | Thomas Zimmermann <tzimmermann@suse.de> | 2023-11-16 10:59:25 +0100 |
---|---|---|
committer | Thomas Zimmermann <tzimmermann@suse.de> | 2023-11-28 16:17:08 +0100 |
commit | 66f843d6703513b9ee8d3d10694a21931feb32c7 (patch) | |
tree | dd04d6f9227862cec6e04523a6c237197ba6714a /drivers/gpu/drm/ast/ast_main.c | |
parent | 73b05bb4c0539d89111ed2f9c5a2eac1b577f83d (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.c | 16 |
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); |