diff --git a/drivers/gpu/drm/ast/ast_drv.h b/drivers/gpu/drm/ast/ast_drv.h index 0141705beaee9..630105feec18a 100644 --- a/drivers/gpu/drm/ast/ast_drv.h +++ b/drivers/gpu/drm/ast/ast_drv.h @@ -52,7 +52,6 @@ #define PCI_CHIP_AST2000 0x2000 #define PCI_CHIP_AST2100 0x2010 - enum ast_chip { AST2000, AST2100, diff --git a/drivers/gpu/drm/ast/ast_main.c b/drivers/gpu/drm/ast/ast_main.c index c6987e0446618..01f938c2da28f 100644 --- a/drivers/gpu/drm/ast/ast_main.c +++ b/drivers/gpu/drm/ast/ast_main.c @@ -35,6 +35,23 @@ #include "ast_drv.h" +static int ast_init_pci_config(struct pci_dev *pdev) +{ + int err; + u16 pcis04; + + err = pci_read_config_word(pdev, PCI_COMMAND, &pcis04); + if (err) + goto out; + + pcis04 |= PCI_COMMAND_MEMORY | PCI_COMMAND_IO; + + err = pci_write_config_word(pdev, PCI_COMMAND, pcis04); + +out: + return pcibios_err_to_errno(err); +} + static void ast_detect_config_mode(struct drm_device *dev, u32 *scu_rev) { struct device_node *np = dev->dev->of_node; @@ -399,6 +416,10 @@ struct ast_device *ast_device_create(const struct drm_driver *drv, return ERR_PTR(-EIO); } + ret = ast_init_pci_config(pdev); + if (ret) + return ERR_PTR(ret); + if (!ast_is_vga_enabled(dev)) { drm_info(dev, "VGA not enabled on entry, requesting chip POST\n"); need_post = true; diff --git a/drivers/gpu/drm/ast/ast_post.c b/drivers/gpu/drm/ast/ast_post.c index aa3f2cb00f82c..2da5bdb4bac45 100644 --- a/drivers/gpu/drm/ast/ast_post.c +++ b/drivers/gpu/drm/ast/ast_post.c @@ -361,12 +361,6 @@ static void ast_init_dram_reg(struct drm_device *dev) void ast_post_gpu(struct drm_device *dev) { struct ast_device *ast = to_ast_device(dev); - struct pci_dev *pdev = to_pci_dev(dev->dev); - u32 reg; - - pci_read_config_dword(pdev, 0x04, ®); - reg |= 0x3; - pci_write_config_dword(pdev, 0x04, reg); ast_enable_vga(dev); ast_open_key(ast);