From: Dave Airlie Date: Fri, 1 Jun 2012 10:12:39 +0000 (+0100) Subject: drm/mgag200: kick off conflicting framebuffers earlier. X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=08ef8e41a6f420c3c0998b50d478e0b2c267a226;p=linux-beck.git drm/mgag200: kick off conflicting framebuffers earlier. It appears grub2 can pass framebuffer info via efifb, so we need to kick it off earlier to reserve the vram allocation. (just a fixup same as for cirrus) Signed-off-by: Dave Airlie --- diff --git a/drivers/gpu/drm/mgag200/mgag200_drv.c b/drivers/gpu/drm/mgag200/mgag200_drv.c index 3c8e04f54713..93e832d6c328 100644 --- a/drivers/gpu/drm/mgag200/mgag200_drv.c +++ b/drivers/gpu/drm/mgag200/mgag200_drv.c @@ -41,9 +41,28 @@ static DEFINE_PCI_DEVICE_TABLE(pciidlist) = { MODULE_DEVICE_TABLE(pci, pciidlist); +static void mgag200_kick_out_firmware_fb(struct pci_dev *pdev) +{ + struct apertures_struct *ap; + bool primary = false; + + ap = alloc_apertures(1); + ap->ranges[0].base = pci_resource_start(pdev, 0); + ap->ranges[0].size = pci_resource_len(pdev, 0); + +#ifdef CONFIG_X86 + primary = pdev->resource[PCI_ROM_RESOURCE].flags & IORESOURCE_ROM_SHADOW; +#endif + remove_conflicting_framebuffers(ap, "mgag200drmfb", primary); + kfree(ap); +} + + static int __devinit mga_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent) { + mgag200_kick_out_firmware_fb(pdev); + return drm_get_pci_dev(pdev, ent, &driver); }