Commit 66f843d6 authored by Thomas Zimmermann's avatar Thomas Zimmermann

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: default avatarThomas Zimmermann <tzimmermann@suse.de>
Reviewed-by: default avatarJocelyn Falempe <jfalempe@redhat.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20231116100240.22975-7-tzimmermann@suse.de
parent 73b05bb4
...@@ -54,19 +54,21 @@ static void ast_enable_vga(void __iomem *ioregs) ...@@ -54,19 +54,21 @@ static void ast_enable_vga(void __iomem *ioregs)
*/ */
static void ast_enable_mmio_release(void *data) static void ast_enable_mmio_release(void *data)
{ {
struct ast_device *ast = data; void __iomem *ioregs = (void __force __iomem *)data;
/* enable standard VGA decode */ /* 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) static void ast_open_key(void __iomem *ioregs)
...@@ -496,7 +498,7 @@ struct ast_device *ast_device_create(const struct drm_driver *drv, ...@@ -496,7 +498,7 @@ struct ast_device *ast_device_create(const struct drm_driver *drv,
/* Enable extended register access */ /* Enable extended register access */
ast_open_key(ioregs); ast_open_key(ioregs);
ret = ast_enable_mmio(ast); ret = ast_enable_mmio(&pdev->dev, ioregs);
if (ret) if (ret)
return ERR_PTR(ret); return ERR_PTR(ret);
......
...@@ -29,6 +29,8 @@ ...@@ -29,6 +29,8 @@
#define AST_IO_VGACRI (0x54) #define AST_IO_VGACRI (0x54)
#define AST_IO_VGACR80_PASSWORD (0xa8) #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_16BPP BIT(0) /* set: ARGB4444, cleared: 2bpp palette */
#define AST_IO_VGACRCB_HWC_ENABLED BIT(1) #define AST_IO_VGACRCB_HWC_ENABLED BIT(1)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment