*  Code is based on s3fb
  */
 
+#include <linux/aperture.h>
 #include <linux/module.h>
 #include <linux/kernel.h>
 #include <linux/errno.h>
        int rc;
        u8 regval;
 
+       rc = aperture_remove_conflicting_pci_devices(dev, "arkfb");
+       if (rc < 0)
+               return rc;
+
        /* Ignore secondary VGA device because there is no VGA arbitration */
        if (! svga_primary_device(dev)) {
                dev_info(&(dev->dev), "ignoring secondary device\n");
 
  *  more details.
  */
 
+#include <linux/aperture.h>
 #include <linux/module.h>
 #include <linux/kernel.h>
 #include <linux/errno.h>
        struct fb_info *p;
        int err;
 
+       err = aperture_remove_conflicting_pci_devices(dp, "asiliantfb");
+       if (err)
+               return err;
+
        if ((dp->resource[0].flags & IORESOURCE_MEM) == 0)
                return -ENODEV;
        addr = pci_resource_start(dp, 0);
 
  */
 
 
+#include <linux/aperture.h>
 #include <linux/module.h>
 #include <linux/moduleparam.h>
 #include <linux/kernel.h>
        void __iomem *bios = NULL;
 #endif
 
+       err = aperture_remove_conflicting_pci_devices(pdev, "aty128fb");
+       if (err)
+               return err;
+
        /* Enable device in PCI config */
        if ((err = pci_enable_device(pdev))) {
                printk(KERN_ERR "aty128fb: Cannot enable PCI device: %d\n",
 
 
 ******************************************************************************/
 
+#include <linux/aperture.h>
 #include <linux/compat.h>
 #include <linux/module.h>
 #include <linux/moduleparam.h>
        struct fb_info *info;
        struct resource *rp;
        struct atyfb_par *par;
-       int rc = -ENOMEM;
+       int rc;
+
+       rc = aperture_remove_conflicting_pci_devices(pdev, "atyfb");
+       if (rc)
+               return rc;
 
        /* Enable device in PCI config */
        if (pci_enable_device(pdev)) {
 
  * - FB1 is display 1 with unique memory area
  * - both display use 32 bit colors
  */
+#include <linux/aperture.h>
 #include <linux/delay.h>
 #include <linux/errno.h>
 #include <linux/fb.h>
        struct fb_info *info;
        int ret;
 
+       ret = aperture_remove_conflicting_pci_devices(dev, "carminefb");
+       if (ret)
+               return ret;
+
        ret = pci_enable_device(dev);
        if (ret)
                return ret;
 
  *  more details.
  */
 
+#include <linux/aperture.h>
 #include <linux/module.h>
 #include <linux/kernel.h>
 #include <linux/errno.h>
        struct fb_info *p;
        unsigned long addr;
        unsigned short cmd;
-       int rc = -ENODEV;
+       int rc;
+
+       rc = aperture_remove_conflicting_pci_devices(dp, "chipsfb");
+       if (rc)
+               return rc;
 
        if (pci_enable_device(dp) < 0) {
                dev_err(&dp->dev, "Cannot enable PCI device\n");
 
  *
  */
 
+#include <linux/aperture.h>
 #include <linux/module.h>
 #include <linux/kernel.h>
 #include <linux/errno.h>
        unsigned long board_addr, board_size;
        int ret;
 
+       ret = aperture_remove_conflicting_pci_devices(pdev, "cirrusfb");
+       if (ret)
+               return ret;
+
        ret = pci_enable_device(pdev);
        if (ret < 0) {
                printk(KERN_ERR "cirrusfb: Cannot enable PCI device\n");
 
  * (which, incidentally, is about the same saving as a 2.5in hard disk
  * entering standby mode.)
  */
+#include <linux/aperture.h>
 #include <linux/module.h>
 #include <linux/kernel.h>
 #include <linux/errno.h>
 
        sprintf(name, "CyberPro%4X", id->device);
 
+       err = aperture_remove_conflicting_pci_devices(dev, name);
+       if (err)
+               return err;
+
        err = pci_enable_device(dev);
        if (err)
                return err;
 
  * Copyright (C) 2005 Arcom Control Systems Ltd.
  */
 
+#include <linux/aperture.h>
 #include <linux/module.h>
 #include <linux/kernel.h>
 #include <linux/errno.h>
        struct fb_info *info;
        int ret;
 
+       ret = aperture_remove_conflicting_pci_devices(pdev, "gx1fb");
+       if (ret)
+               return ret;
+
        info = gx1fb_init_fbinfo(&pdev->dev);
        if (!info)
                return -ENOMEM;
 
  *
  * 16 MiB of framebuffer memory is assumed to be available.
  */
+#include <linux/aperture.h>
 #include <linux/module.h>
 #include <linux/kernel.h>
 #include <linux/errno.h>
        struct fb_videomode *modedb_ptr;
        unsigned int modedb_size;
 
+       ret = aperture_remove_conflicting_pci_devices(pdev, "gxfb");
+       if (ret)
+               return ret;
+
        info = gxfb_init_fbinfo(&pdev->dev);
        if (!info)
                return -ENOMEM;
 
  * Built from gxfb (which is Copyright (C) 2006 Arcom Control Systems Ltd.)
  */
 
+#include <linux/aperture.h>
 #include <linux/module.h>
 #include <linux/kernel.h>
 #include <linux/errno.h>
        struct fb_videomode *modedb_ptr;
        unsigned int modedb_size;
 
+       ret = aperture_remove_conflicting_pci_devices(pdev, "lxfb");
+       if (ret)
+               return ret;
+
        info = lxfb_init_fbinfo(&pdev->dev);
 
        if (info == NULL)
 
  * Copyright (C) 2006 Paul Mackerras, IBM Corp. <paulus@samba.org>
  */
 
+#include <linux/aperture.h>
 #include <linux/kernel.h>
 #include <linux/module.h>
 #include <linux/fb.h>
        struct fb_var_screeninfo var;
        enum gxt_cards cardtype;
 
+       err = aperture_remove_conflicting_pci_devices(pdev, "gxt4500fb");
+       if (err)
+               return err;
+
        err = pci_enable_device(pdev);
        if (err) {
                dev_err(&pdev->dev, "gxt4500: cannot enable PCI device: %d\n",
 
  *  i740fb by Patrick LERDA, v0.9
  */
 
+#include <linux/aperture.h>
 #include <linux/module.h>
 #include <linux/kernel.h>
 #include <linux/errno.h>
        bool found = false;
        u8 *edid;
 
+       ret = aperture_remove_conflicting_pci_devices(dev, "i740fb");
+       if (ret)
+               return ret;
+
        info = framebuffer_alloc(sizeof(struct i740fb_par), &(dev->dev));
        if (!info)
                return -ENOMEM;
 
  *  more details.
  */
 
+#include <linux/aperture.h>
 #include <linux/module.h>
 #include <linux/kernel.h>
 #include <linux/errno.h>
        struct fb_videomode mode;
        int err = -1, vfreq, hfreq, pixclock;
 
+       err = aperture_remove_conflicting_pci_devices(dev, "i810fb");
+       if (err)
+               return err;
+
        info = framebuffer_alloc(sizeof(struct i810fb_par), &dev->dev);
        if (!info)
                return -ENOMEM;
 
  *  more details.
  */
 
+#include <linux/aperture.h>
 #include <linux/module.h>
 #include <linux/kernel.h>
 #include <linux/errno.h>
        struct imstt_par *par;
        struct fb_info *info;
        struct device_node *dp;
-       int ret = -ENOMEM;
+       int ret;
+
+       ret = aperture_remove_conflicting_pci_devices(pdev, "imsttfb");
+       if (ret)
+               return ret;
+       ret = -ENOMEM;
 
        dp = pci_device_to_OF_node(pdev);
        if(dp)
 
  *              Add support for 945GME. (Phil Endecott <spam_from_intelfb@chezphil.org>)
  */
 
+#include <linux/aperture.h>
 #include <linux/module.h>
 #include <linux/kernel.h>
 #include <linux/errno.h>
 
        DBG_MSG("intelfb_pci_register\n");
 
+       err = aperture_remove_conflicting_pci_devices(pdev, "intelfb");
+       if (err)
+               return err;
+
        num_registered++;
        if (num_registered != 1) {
                ERR_MSG("Attempted to register %d devices "
 
  * for more details.
  */
 
+#include <linux/aperture.h>
 #include <linux/module.h>
 #include <linux/types.h>
 #include <linux/kernel.h>
        unsigned long size;
        int err;
 
+       err = aperture_remove_conflicting_pci_devices(pdev, "kyrofb");
+       if (err)
+               return err;
+
        if ((err = pci_enable_device(pdev))) {
                printk(KERN_WARNING "kyrofb: Can't enable pdev: %d\n", err);
                return err;
 
  *
  */
 
+#include <linux/aperture.h>
 #include <linux/version.h>
 
 #include "matroxfb_base.h"
        u_int32_t cmd;
        DBG(__func__)
 
+       err = aperture_remove_conflicting_pci_devices(pdev, "matroxfb");
+       if (err)
+               return err;
+
        svid = pdev->subsystem_vendor;
        sid = pdev->subsystem_device;
        for (b = dev_list; b->vendor; b++) {
 
 
 #undef DEBUG
 
+#include <linux/aperture.h>
 #include <linux/fb.h>
 #include <linux/delay.h>
 #include <linux/uaccess.h>
        struct device *dev = &pdev->dev;
        int ret;
 
+       ret = aperture_remove_conflicting_pci_devices(pdev, "mb862xxfb");
+       if (ret)
+               return ret;
+
        ret = pci_enable_device(pdev);
        if (ret < 0) {
                dev_err(dev, "Cannot enable PCI device\n");
 
  *
  */
 
+#include <linux/aperture.h>
 #include <linux/module.h>
 #include <linux/kernel.h>
 #include <linux/errno.h>
 
        DBG("neofb_probe");
 
+       err = aperture_remove_conflicting_pci_devices(dev, "neofb");
+       if (err)
+               return err;
+
        err = pci_enable_device(dev);
        if (err)
                return err;
 
  *
  */
 
+#include <linux/aperture.h>
 #include <linux/module.h>
 #include <linux/kernel.h>
 #include <linux/errno.h>
        struct nvidia_par *par;
        struct fb_info *info;
        unsigned short cmd;
-
+       int ret;
 
        NVTRACE_ENTER();
        assert(pd != NULL);
 
+       ret = aperture_remove_conflicting_pci_devices(pd, "nvidiafb");
+       if (ret)
+               return ret;
+
        info = framebuffer_alloc(sizeof(struct nvidia_par), &pd->dev);
 
        if (!info)
 
  *
  */
 
+#include <linux/aperture.h>
 #include <linux/module.h>
 #include <linux/moduleparam.h>
 #include <linux/kernel.h>
        int err;
        int retval = -ENXIO;
 
+       err = aperture_remove_conflicting_pci_devices(pdev, "pm2fb");
+       if (err)
+               return err;
+
        err = pci_enable_device(pdev);
        if (err) {
                printk(KERN_WARNING "pm2fb: Can't enable pdev: %d\n", err);
 
  *
  */
 
+#include <linux/aperture.h>
 #include <linux/module.h>
 #include <linux/kernel.h>
 #include <linux/errno.h>
        int err;
        int retval = -ENXIO;
 
+       err = aperture_remove_conflicting_pci_devices(dev, "pm3fb");
+       if (err)
+               return err;
+
        err = pci_enable_device(dev);
        if (err) {
                printk(KERN_WARNING "pm3fb: Can't enable PCI dev: %d\n", err);
 
 
 #undef DEBUG
 
+#include <linux/aperture.h>
 #include <linux/module.h>
 #include <linux/kernel.h>
 #include <linux/errno.h>
 {
        int ret;
 
+       ret = aperture_remove_conflicting_pci_devices(pdev, "pvrfb");
+       if (ret)
+               return ret;
+
        ret = pci_enable_device(pdev);
        if (ret) {
                printk(KERN_ERR "pvr2fb: PCI enable failed\n");
 
  *     doublescan modes are broken
  */
 
+#include <linux/aperture.h>
 #include <linux/module.h>
 #include <linux/kernel.h>
 #include <linux/errno.h>
        NVTRACE_ENTER();
        assert(pd != NULL);
 
+       ret = aperture_remove_conflicting_pci_devices(pd, "rivafb");
+       if (ret)
+               return ret;
+
        info = framebuffer_alloc(sizeof(struct riva_par), &pd->dev);
        if (!info) {
                ret = -ENOMEM;
 
  * which is based on the code of neofb.
  */
 
+#include <linux/aperture.h>
 #include <linux/module.h>
 #include <linux/kernel.h>
 #include <linux/errno.h>
                return -ENODEV;
        }
 
+       rc = aperture_remove_conflicting_pci_devices(dev, "s3fb");
+       if (rc)
+               return rc;
+
        /* Allocate and fill driver data structure */
        info = framebuffer_alloc(sizeof(struct s3fb_info), &(dev->dev));
        if (!info)
 
  *
  */
 
+#include <linux/aperture.h>
 #include <linux/module.h>
 #include <linux/kernel.h>
 #include <linux/errno.h>
 
        DBG("savagefb_probe");
 
+       err = aperture_remove_conflicting_pci_devices(dev, "savagefb");
+       if (err)
+               return err;
+
        info = framebuffer_alloc(sizeof(struct savagefb_par), &dev->dev);
        if (!info)
                return -ENOMEM;
 
  * which is (c) 1998 Gerd Knorr <kraxel@goldbach.in-berlin.de>
  */
 
+#include <linux/aperture.h>
 #include <linux/module.h>
 #include <linux/moduleparam.h>
 #include <linux/kernel.h>
        if(sisfb_off)
                return -ENXIO;
 
+       ret = aperture_remove_conflicting_pci_devices(pdev, "sisfb");
+       if (ret)
+               return ret;
+
        sis_fb_info = framebuffer_alloc(sizeof(*ivideo), &pdev->dev);
        if(!sis_fb_info)
                return -ENOMEM;
 
  *  more details.
  */
 
+#include <linux/aperture.h>
 #include <linux/module.h>
 #include <linux/kernel.h>
 #include <linux/errno.h>
     struct device *device = &dev->dev; /* or &pdev->dev */
     int cmap_len, retval;
 
+    /*
+     * Remove firmware-based drivers that create resource conflicts.
+     */
+    retval = aperture_remove_conflicting_pci_devices(pdev, "xxxfb");
+    if (retval)
+           return retval;
+
     /*
      * Dynamically allocate info and par
      */
 
  * Framebuffer driver for Silicon Motion SM710, SM712, SM721 and SM722 chips
  */
 
+#include <linux/aperture.h>
 #include <linux/io.h>
 #include <linux/fb.h>
 #include <linux/pci.h>
 
        dev_info(&pdev->dev, "Silicon Motion display driver.\n");
 
+       err = aperture_remove_conflicting_pci_devices(pdev, "smtcfb");
+       if (err)
+               return err;
+
        err = pci_enable_device(pdev);  /* enable SMTC chip */
        if (err)
                return err;
 
  * Includes
  */
 
+#include <linux/aperture.h>
 #include <linux/string.h>
 #include <linux/kernel.h>
 #include <linux/module.h>
        struct sst_spec *spec;
        int err;
 
+       err = aperture_remove_conflicting_pci_devices(pdev, "sstfb");
+       if (err)
+               return err;
+
        /* Enable device in PCI config. */
        if ((err=pci_enable_device(pdev))) {
                printk(KERN_ERR "cannot enable device\n");
 
  * Copyright (C) 2007 David S. Miller (davem@davemloft.net)
  */
 
+#include <linux/aperture.h>
 #include <linux/kernel.h>
 #include <linux/fb.h>
 #include <linux/pci.h>
        struct s3d_info *sp;
        int err;
 
+       err = aperture_remove_conflicting_pci_devices(pdev, "s3dfb");
+       if (err)
+               return err;
+
        err = pci_enable_device(pdev);
        if (err < 0) {
                printk(KERN_ERR "s3d: Cannot enable PCI device %s\n",
 
  * Copyright (C) 2007 David S. Miller (davem@davemloft.net)
  */
 
+#include <linux/aperture.h>
 #include <linux/kernel.h>
 #include <linux/fb.h>
 #include <linux/pci.h>
        unsigned int line_length;
        int err;
 
+       err = aperture_remove_conflicting_pci_devices(pdev, "e3dfb");
+       if (err)
+               return err;
+
        of_node = pci_device_to_OF_node(pdev);
        if (!of_node) {
                printk(KERN_ERR "e3d: Cannot find OF node of %s\n",
 
  *
  */
 
+#include <linux/aperture.h>
 #include <linux/module.h>
 #include <linux/kernel.h>
 #include <linux/errno.h>
        struct fb_monspecs *specs;
        bool found;
 
+       err = aperture_remove_conflicting_pci_devices(pdev, "tdfxfb");
+       if (err)
+               return err;
+
        err = pci_enable_device(pdev);
        if (err) {
                printk(KERN_ERR "tdfxfb: Can't enable pdev: %d\n", err);
 
  *  more details.
  */
 
+#include <linux/aperture.h>
 #include <linux/bitrev.h>
 #include <linux/compiler.h>
 #include <linux/delay.h>
 static int tgafb_pci_register(struct pci_dev *pdev,
                              const struct pci_device_id *ent)
 {
+       int ret;
+
+       ret = aperture_remove_conflicting_pci_devices(pdev, "tgafb");
+       if (ret)
+               return ret;
+
        return tgafb_register(&pdev->dev);
 }
 
 
  *     timing value tweaking so it looks good on every monitor in every mode
  */
 
+#include <linux/aperture.h>
 #include <linux/module.h>
 #include <linux/fb.h>
 #include <linux/init.h>
        int chip_id;
        bool found = false;
 
+       err = aperture_remove_conflicting_pci_devices(dev, "tridentfb");
+       if (err)
+               return err;
+
        err = pci_enable_device(dev);
        if (err)
                return err;
 
  *   Alan Hourihane <alanh-at-tungstengraphics-dot-com>
  */
 
+#include <linux/aperture.h>
 #include <linux/module.h>
 #include <linux/kernel.h>
 #include <linux/errno.h>
        struct vml_info *vinfo;
        struct fb_info *info;
        struct vml_par *par;
-       int err = 0;
+       int err;
+
+       err = aperture_remove_conflicting_pci_devices(dev, "vmlfb");
+       if (err)
+               return err;
 
        par = kzalloc(sizeof(*par), GFP_KERNEL);
        if (par == NULL)
 
 /*
  * Core code for the Via multifunction framebuffer device.
  */
+#include <linux/aperture.h>
 #include <linux/via-core.h>
 #include <linux/via_i2c.h>
 #include <linux/via-gpio.h>
 {
        int ret;
 
+       ret = aperture_remove_conflicting_pci_devices(pdev, "viafb");
+       if (ret)
+               return ret;
+
        ret = pci_enable_device(pdev);
        if (ret)
                return ret;
 
  * (http://davesdomain.org.uk/viafb/)
  */
 
+#include <linux/aperture.h>
 #include <linux/module.h>
 #include <linux/kernel.h>
 #include <linux/errno.h>
                return -ENODEV;
        }
 
+       rc = aperture_remove_conflicting_pci_devices(dev, "vt8623fb");
+       if (rc)
+               return rc;
+
        /* Allocate and fill driver data structure */
        info = framebuffer_alloc(sizeof(struct vt8623fb_info), &(dev->dev));
        if (!info)