drm/ast: Remove reference to struct drm_device.pdev
[linux-2.6-microblaze.git] / drivers / gpu / drm / ast / ast_main.c
index 0ac3c20..2aff2e6 100644 (file)
@@ -99,7 +99,7 @@ static void ast_detect_config_mode(struct drm_device *dev, u32 *scu_rev)
        if (!(jregd0 & 0x80) || !(jregd1 & 0x10)) {
                /* Double check it's actually working */
                data = ast_read32(ast, 0xf004);
-               if (data != 0xFFFFFFFF) {
+               if ((data != 0xFFFFFFFF) && (data != 0x00)) {
                        /* P2A works, grab silicon revision */
                        ast->config_mode = ast_use_p2a;
 
@@ -413,7 +413,7 @@ struct ast_private *ast_device_create(const struct drm_driver *drv,
 
        pci_set_drvdata(pdev, dev);
 
-       ast->regs = pci_iomap(pdev, 1, 0);
+       ast->regs = pcim_iomap(pdev, 1, 0);
        if (!ast->regs)
                return ERR_PTR(-EIO);
 
@@ -429,7 +429,7 @@ struct ast_private *ast_device_create(const struct drm_driver *drv,
 
        /* "map" IO regs if the above hasn't done so already */
        if (!ast->ioregs) {
-               ast->ioregs = pci_iomap(pdev, 2, 0);
+               ast->ioregs = pcim_iomap(pdev, 2, 0);
                if (!ast->ioregs)
                        return ERR_PTR(-EIO);
        }
@@ -450,6 +450,14 @@ struct ast_private *ast_device_create(const struct drm_driver *drv,
        if (ret)
                return ERR_PTR(ret);
 
+       /* map reserved buffer */
+       ast->dp501_fw_buf = NULL;
+       if (dev->vram_mm->vram_size < pci_resource_len(pdev, 0)) {
+               ast->dp501_fw_buf = pci_iomap_range(pdev, 0, dev->vram_mm->vram_size, 0);
+               if (!ast->dp501_fw_buf)
+                       drm_info(dev, "failed to map reserved buffer!\n");
+       }
+
        ret = ast_mode_config_init(ast);
        if (ret)
                return ERR_PTR(ret);