diff options
Diffstat (limited to 'drivers/pci')
-rw-r--r-- | drivers/pci/Makefile | 6 | ||||
-rw-r--r-- | drivers/pci/quirks.c | 7 | ||||
-rw-r--r-- | drivers/pci/setup-res.c | 5 |
3 files changed, 9 insertions, 9 deletions
diff --git a/drivers/pci/Makefile b/drivers/pci/Makefile index 87cbf2d5f9b1..716df015f8d0 100644 --- a/drivers/pci/Makefile +++ b/drivers/pci/Makefile @@ -3,13 +3,9 @@ # obj-y += access.o bus.o probe.o remove.o pci.o quirks.o \ - pci-driver.o search.o pci-sysfs.o rom.o + pci-driver.o search.o pci-sysfs.o rom.o setup-res.o obj-$(CONFIG_PROC_FS) += proc.o -ifndef CONFIG_SPARC64 -obj-y += setup-res.o -endif - obj-$(CONFIG_HOTPLUG) += hotplug.o # Build the PCI Hotplug drivers if we were asked to diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c index 140354a2aa72..4f0c1bd3674a 100644 --- a/drivers/pci/quirks.c +++ b/drivers/pci/quirks.c @@ -245,12 +245,19 @@ static void __devinit quirk_io_region(struct pci_dev *dev, unsigned region, unsi { region &= ~(size-1); if (region) { + struct pci_bus_region bus_region; struct resource *res = dev->resource + nr; res->name = pci_name(dev); res->start = region; res->end = region + size - 1; res->flags = IORESOURCE_IO; + + /* Convert from PCI bus to resource space. */ + bus_region.start = res->start; + bus_region.end = res->end; + pcibios_bus_to_resource(dev, res, &bus_region); + pci_claim_resource(dev, nr); } } diff --git a/drivers/pci/setup-res.c b/drivers/pci/setup-res.c index 362f93337a34..50d6685dcbcc 100644 --- a/drivers/pci/setup-res.c +++ b/drivers/pci/setup-res.c @@ -97,10 +97,7 @@ pci_claim_resource(struct pci_dev *dev, int resource) char *dtype = resource < PCI_BRIDGE_RESOURCES ? "device" : "bridge"; int err; - if (res->flags & IORESOURCE_IO) - root = &ioport_resource; - if (res->flags & IORESOURCE_MEM) - root = &iomem_resource; + root = pcibios_select_root(dev, res); err = -EINVAL; if (root != NULL) |