diff options
Diffstat (limited to 'drivers/gpu/drm/cirrus/cirrus_drv.c')
-rw-r--r-- | drivers/gpu/drm/cirrus/cirrus_drv.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/drivers/gpu/drm/cirrus/cirrus_drv.c b/drivers/gpu/drm/cirrus/cirrus_drv.c index d7038230b71..7053140c659 100644 --- a/drivers/gpu/drm/cirrus/cirrus_drv.c +++ b/drivers/gpu/drm/cirrus/cirrus_drv.c | |||
@@ -35,9 +35,28 @@ static DEFINE_PCI_DEVICE_TABLE(pciidlist) = { | |||
35 | {0,} | 35 | {0,} |
36 | }; | 36 | }; |
37 | 37 | ||
38 | |||
39 | static void cirrus_kick_out_firmware_fb(struct pci_dev *pdev) | ||
40 | { | ||
41 | struct apertures_struct *ap; | ||
42 | bool primary = false; | ||
43 | |||
44 | ap = alloc_apertures(1); | ||
45 | ap->ranges[0].base = pci_resource_start(pdev, 0); | ||
46 | ap->ranges[0].size = pci_resource_len(pdev, 0); | ||
47 | |||
48 | #ifdef CONFIG_X86 | ||
49 | primary = pdev->resource[PCI_ROM_RESOURCE].flags & IORESOURCE_ROM_SHADOW; | ||
50 | #endif | ||
51 | remove_conflicting_framebuffers(ap, "cirrusdrmfb", primary); | ||
52 | kfree(ap); | ||
53 | } | ||
54 | |||
38 | static int __devinit | 55 | static int __devinit |
39 | cirrus_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent) | 56 | cirrus_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent) |
40 | { | 57 | { |
58 | cirrus_kick_out_firmware_fb(pdev); | ||
59 | |||
41 | return drm_get_pci_dev(pdev, ent, &driver); | 60 | return drm_get_pci_dev(pdev, ent, &driver); |
42 | } | 61 | } |
43 | 62 | ||