diff options
author | Bjorn Helgaas <bhelgaas@google.com> | 2011-10-28 18:26:16 -0400 |
---|---|---|
committer | Jesse Barnes <jbarnes@virtuousgeek.org> | 2012-01-06 15:10:56 -0500 |
commit | 37d15909ff6bf6e97e1d4447efa7f1a19e7a508e (patch) | |
tree | 03d1be5fc753995295a6812e4bed485be73d2512 /arch/arm/mach-versatile/pci.c | |
parent | a2f33da11ab9efba25d41e959de6338a9078fb36 (diff) |
arm/PCI: convert to pci_scan_root_bus() for correct root bus resources
Convert from pci_scan_bus() to pci_scan_root_bus() and remove root bus
resource fixups. This fixes the problem of "early" and "header" quirks
seeing incorrect root bus resources.
CC: Russell King <linux@arm.linux.org.uk>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
Diffstat (limited to 'arch/arm/mach-versatile/pci.c')
-rw-r--r-- | arch/arm/mach-versatile/pci.c | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/arch/arm/mach-versatile/pci.c b/arch/arm/mach-versatile/pci.c index c898deb3ada0..90069bce23bc 100644 --- a/arch/arm/mach-versatile/pci.c +++ b/arch/arm/mach-versatile/pci.c | |||
@@ -191,7 +191,7 @@ static struct resource pre_mem = { | |||
191 | .flags = IORESOURCE_MEM | IORESOURCE_PREFETCH, | 191 | .flags = IORESOURCE_MEM | IORESOURCE_PREFETCH, |
192 | }; | 192 | }; |
193 | 193 | ||
194 | static int __init pci_versatile_setup_resources(struct resource **resource) | 194 | static int __init pci_versatile_setup_resources(struct list_head *resources) |
195 | { | 195 | { |
196 | int ret = 0; | 196 | int ret = 0; |
197 | 197 | ||
@@ -215,13 +215,13 @@ static int __init pci_versatile_setup_resources(struct resource **resource) | |||
215 | } | 215 | } |
216 | 216 | ||
217 | /* | 217 | /* |
218 | * bus->resource[0] is the IO resource for this bus | 218 | * the IO resource for this bus |
219 | * bus->resource[1] is the mem resource for this bus | 219 | * the mem resource for this bus |
220 | * bus->resource[2] is the prefetch mem resource for this bus | 220 | * the prefetch mem resource for this bus |
221 | */ | 221 | */ |
222 | resource[0] = &io_mem; | 222 | pci_add_resource(resources, &io_mem); |
223 | resource[1] = &non_mem; | 223 | pci_add_resource(resources, &non_mem); |
224 | resource[2] = &pre_mem; | 224 | pci_add_resource(resources, &pre_mem); |
225 | 225 | ||
226 | goto out; | 226 | goto out; |
227 | 227 | ||
@@ -250,7 +250,7 @@ int __init pci_versatile_setup(int nr, struct pci_sys_data *sys) | |||
250 | 250 | ||
251 | if (nr == 0) { | 251 | if (nr == 0) { |
252 | sys->mem_offset = 0; | 252 | sys->mem_offset = 0; |
253 | ret = pci_versatile_setup_resources(sys->resource); | 253 | ret = pci_versatile_setup_resources(&sys->resources); |
254 | if (ret < 0) { | 254 | if (ret < 0) { |
255 | printk("pci_versatile_setup: resources... oops?\n"); | 255 | printk("pci_versatile_setup: resources... oops?\n"); |
256 | goto out; | 256 | goto out; |
@@ -306,7 +306,8 @@ int __init pci_versatile_setup(int nr, struct pci_sys_data *sys) | |||
306 | 306 | ||
307 | struct pci_bus * __init pci_versatile_scan_bus(int nr, struct pci_sys_data *sys) | 307 | struct pci_bus * __init pci_versatile_scan_bus(int nr, struct pci_sys_data *sys) |
308 | { | 308 | { |
309 | return pci_scan_bus(sys->busnr, &pci_versatile_ops, sys); | 309 | return pci_scan_root_bus(NULL, sys->busnr, &pci_versatile_ops, sys, |
310 | &sys->resources); | ||
310 | } | 311 | } |
311 | 312 | ||
312 | void __init pci_versatile_preinit(void) | 313 | void __init pci_versatile_preinit(void) |