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 | |
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>
-rw-r--r-- | arch/arm/common/it8152.c | 6 | ||||
-rw-r--r-- | arch/arm/common/via82c505.c | 3 | ||||
-rw-r--r-- | arch/arm/include/asm/mach/pci.h | 2 | ||||
-rw-r--r-- | arch/arm/kernel/bios32.c | 27 | ||||
-rw-r--r-- | arch/arm/mach-cns3xxx/pcie.c | 8 | ||||
-rw-r--r-- | arch/arm/mach-dove/pcie.c | 9 | ||||
-rw-r--r-- | arch/arm/mach-footbridge/dc21285.c | 8 | ||||
-rw-r--r-- | arch/arm/mach-integrator/pci_v3.c | 19 | ||||
-rw-r--r-- | arch/arm/mach-iop13xx/pci.c | 17 | ||||
-rw-r--r-- | arch/arm/mach-ixp2000/enp2611.c | 3 | ||||
-rw-r--r-- | arch/arm/mach-ixp2000/pci.c | 8 | ||||
-rw-r--r-- | arch/arm/mach-ixp23xx/pci.c | 8 | ||||
-rw-r--r-- | arch/arm/mach-ixp4xx/common-pci.c | 8 | ||||
-rw-r--r-- | arch/arm/mach-kirkwood/pcie.c | 8 | ||||
-rw-r--r-- | arch/arm/mach-ks8695/pci.c | 8 | ||||
-rw-r--r-- | arch/arm/mach-mv78xx0/pcie.c | 8 | ||||
-rw-r--r-- | arch/arm/mach-orion5x/pci.c | 16 | ||||
-rw-r--r-- | arch/arm/mach-sa1100/pci-nanoengine.c | 13 | ||||
-rw-r--r-- | arch/arm/mach-tegra/pcie.c | 9 | ||||
-rw-r--r-- | arch/arm/mach-versatile/pci.c | 19 | ||||
-rw-r--r-- | arch/arm/plat-iop/pci.c | 8 |
21 files changed, 104 insertions, 111 deletions
diff --git a/arch/arm/common/it8152.c b/arch/arm/common/it8152.c index 9a6f5371d135..d1bcd7b13ebc 100644 --- a/arch/arm/common/it8152.c +++ b/arch/arm/common/it8152.c | |||
@@ -299,8 +299,8 @@ int __init it8152_pci_setup(int nr, struct pci_sys_data *sys) | |||
299 | goto err1; | 299 | goto err1; |
300 | } | 300 | } |
301 | 301 | ||
302 | sys->resource[0] = &it8152_io; | 302 | pci_add_resource(&sys->resources, &it8152_io); |
303 | sys->resource[1] = &it8152_mem; | 303 | pci_add_resource(&sys->resources, &it8152_mem); |
304 | 304 | ||
305 | if (platform_notify || platform_notify_remove) { | 305 | if (platform_notify || platform_notify_remove) { |
306 | printk(KERN_ERR "PCI: Can't use platform_notify\n"); | 306 | printk(KERN_ERR "PCI: Can't use platform_notify\n"); |
@@ -355,7 +355,7 @@ void pcibios_set_master(struct pci_dev *dev) | |||
355 | 355 | ||
356 | struct pci_bus * __init it8152_pci_scan_bus(int nr, struct pci_sys_data *sys) | 356 | struct pci_bus * __init it8152_pci_scan_bus(int nr, struct pci_sys_data *sys) |
357 | { | 357 | { |
358 | return pci_scan_bus(nr, &it8152_ops, sys); | 358 | return pci_scan_root_bus(NULL, nr, &it8152_ops, sys, &sys->resources); |
359 | } | 359 | } |
360 | 360 | ||
361 | EXPORT_SYMBOL(dma_set_coherent_mask); | 361 | EXPORT_SYMBOL(dma_set_coherent_mask); |
diff --git a/arch/arm/common/via82c505.c b/arch/arm/common/via82c505.c index 8421d39109b3..67dd2affc57a 100644 --- a/arch/arm/common/via82c505.c +++ b/arch/arm/common/via82c505.c | |||
@@ -86,7 +86,8 @@ int __init via82c505_setup(int nr, struct pci_sys_data *sys) | |||
86 | struct pci_bus * __init via82c505_scan_bus(int nr, struct pci_sys_data *sysdata) | 86 | struct pci_bus * __init via82c505_scan_bus(int nr, struct pci_sys_data *sysdata) |
87 | { | 87 | { |
88 | if (nr == 0) | 88 | if (nr == 0) |
89 | return pci_scan_bus(0, &via82c505_ops, sysdata); | 89 | return pci_scan_root_bus(NULL, 0, &via82c505_ops, sysdata, |
90 | &sysdata->resources); | ||
90 | 91 | ||
91 | return NULL; | 92 | return NULL; |
92 | } | 93 | } |
diff --git a/arch/arm/include/asm/mach/pci.h b/arch/arm/include/asm/mach/pci.h index 186efd4e05c9..d943b7d20f11 100644 --- a/arch/arm/include/asm/mach/pci.h +++ b/arch/arm/include/asm/mach/pci.h | |||
@@ -40,7 +40,7 @@ struct pci_sys_data { | |||
40 | u64 mem_offset; /* bus->cpu memory mapping offset */ | 40 | u64 mem_offset; /* bus->cpu memory mapping offset */ |
41 | unsigned long io_offset; /* bus->cpu IO mapping offset */ | 41 | unsigned long io_offset; /* bus->cpu IO mapping offset */ |
42 | struct pci_bus *bus; /* PCI bus */ | 42 | struct pci_bus *bus; /* PCI bus */ |
43 | struct resource *resource[3]; /* Primary PCI bus resources */ | 43 | struct list_head resources; /* root bus resources (apertures) */ |
44 | /* Bridge swizzling */ | 44 | /* Bridge swizzling */ |
45 | u8 (*swizzle)(struct pci_dev *, u8 *); | 45 | u8 (*swizzle)(struct pci_dev *, u8 *); |
46 | /* IRQ mapping */ | 46 | /* IRQ mapping */ |
diff --git a/arch/arm/kernel/bios32.c b/arch/arm/kernel/bios32.c index 4e606073f89d..f58ba3589908 100644 --- a/arch/arm/kernel/bios32.c +++ b/arch/arm/kernel/bios32.c | |||
@@ -316,21 +316,6 @@ pdev_fixup_device_resources(struct pci_sys_data *root, struct pci_dev *dev) | |||
316 | } | 316 | } |
317 | } | 317 | } |
318 | 318 | ||
319 | static void __devinit | ||
320 | pbus_assign_bus_resources(struct pci_bus *bus, struct pci_sys_data *root) | ||
321 | { | ||
322 | struct pci_dev *dev = bus->self; | ||
323 | int i; | ||
324 | |||
325 | if (!dev) { | ||
326 | /* | ||
327 | * Assign root bus resources. | ||
328 | */ | ||
329 | for (i = 0; i < 3; i++) | ||
330 | bus->resource[i] = root->resource[i]; | ||
331 | } | ||
332 | } | ||
333 | |||
334 | /* | 319 | /* |
335 | * pcibios_fixup_bus - Called after each bus is probed, | 320 | * pcibios_fixup_bus - Called after each bus is probed, |
336 | * but before its children are examined. | 321 | * but before its children are examined. |
@@ -341,8 +326,6 @@ void pcibios_fixup_bus(struct pci_bus *bus) | |||
341 | struct pci_dev *dev; | 326 | struct pci_dev *dev; |
342 | u16 features = PCI_COMMAND_SERR | PCI_COMMAND_PARITY | PCI_COMMAND_FAST_BACK; | 327 | u16 features = PCI_COMMAND_SERR | PCI_COMMAND_PARITY | PCI_COMMAND_FAST_BACK; |
343 | 328 | ||
344 | pbus_assign_bus_resources(bus, root); | ||
345 | |||
346 | /* | 329 | /* |
347 | * Walk the devices on this bus, working out what we can | 330 | * Walk the devices on this bus, working out what we can |
348 | * and can't support. | 331 | * and can't support. |
@@ -508,12 +491,18 @@ static void __init pcibios_init_hw(struct hw_pci *hw) | |||
508 | sys->busnr = busnr; | 491 | sys->busnr = busnr; |
509 | sys->swizzle = hw->swizzle; | 492 | sys->swizzle = hw->swizzle; |
510 | sys->map_irq = hw->map_irq; | 493 | sys->map_irq = hw->map_irq; |
511 | sys->resource[0] = &ioport_resource; | 494 | INIT_LIST_HEAD(&sys->resources); |
512 | sys->resource[1] = &iomem_resource; | ||
513 | 495 | ||
514 | ret = hw->setup(nr, sys); | 496 | ret = hw->setup(nr, sys); |
515 | 497 | ||
516 | if (ret > 0) { | 498 | if (ret > 0) { |
499 | if (list_empty(&sys->resources)) { | ||
500 | pci_add_resource(&sys->resources, | ||
501 | &ioport_resource); | ||
502 | pci_add_resource(&sys->resources, | ||
503 | &iomem_resource); | ||
504 | } | ||
505 | |||
517 | sys->bus = hw->scan(nr, sys); | 506 | sys->bus = hw->scan(nr, sys); |
518 | 507 | ||
519 | if (!sys->bus) | 508 | if (!sys->bus) |
diff --git a/arch/arm/mach-cns3xxx/pcie.c b/arch/arm/mach-cns3xxx/pcie.c index 0f8fca48a5ed..e159d69967c9 100644 --- a/arch/arm/mach-cns3xxx/pcie.c +++ b/arch/arm/mach-cns3xxx/pcie.c | |||
@@ -151,13 +151,12 @@ static int cns3xxx_pci_setup(int nr, struct pci_sys_data *sys) | |||
151 | struct cns3xxx_pcie *cnspci = sysdata_to_cnspci(sys); | 151 | struct cns3xxx_pcie *cnspci = sysdata_to_cnspci(sys); |
152 | struct resource *res_io = &cnspci->res_io; | 152 | struct resource *res_io = &cnspci->res_io; |
153 | struct resource *res_mem = &cnspci->res_mem; | 153 | struct resource *res_mem = &cnspci->res_mem; |
154 | struct resource **sysres = sys->resource; | ||
155 | 154 | ||
156 | BUG_ON(request_resource(&iomem_resource, res_io) || | 155 | BUG_ON(request_resource(&iomem_resource, res_io) || |
157 | request_resource(&iomem_resource, res_mem)); | 156 | request_resource(&iomem_resource, res_mem)); |
158 | 157 | ||
159 | sysres[0] = res_io; | 158 | pci_add_resource(&sys->resources, res_io); |
160 | sysres[1] = res_mem; | 159 | pci_add_resource(&sys->resources, res_mem); |
161 | 160 | ||
162 | return 1; | 161 | return 1; |
163 | } | 162 | } |
@@ -169,7 +168,8 @@ static struct pci_ops cns3xxx_pcie_ops = { | |||
169 | 168 | ||
170 | static struct pci_bus *cns3xxx_pci_scan_bus(int nr, struct pci_sys_data *sys) | 169 | static struct pci_bus *cns3xxx_pci_scan_bus(int nr, struct pci_sys_data *sys) |
171 | { | 170 | { |
172 | return pci_scan_bus(sys->busnr, &cns3xxx_pcie_ops, sys); | 171 | return pci_scan_root_bus(NULL, sys->busnr, &cns3xxx_pcie_ops, sys, |
172 | &sys->resources); | ||
173 | } | 173 | } |
174 | 174 | ||
175 | static int cns3xxx_pcie_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) | 175 | static int cns3xxx_pcie_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) |
diff --git a/arch/arm/mach-dove/pcie.c b/arch/arm/mach-dove/pcie.c index aa2b3a09a51d..d5b5dce3d5f3 100644 --- a/arch/arm/mach-dove/pcie.c +++ b/arch/arm/mach-dove/pcie.c | |||
@@ -69,7 +69,7 @@ static int __init dove_pcie_setup(int nr, struct pci_sys_data *sys) | |||
69 | pp->res[0].flags = IORESOURCE_IO; | 69 | pp->res[0].flags = IORESOURCE_IO; |
70 | if (request_resource(&ioport_resource, &pp->res[0])) | 70 | if (request_resource(&ioport_resource, &pp->res[0])) |
71 | panic("Request PCIe IO resource failed\n"); | 71 | panic("Request PCIe IO resource failed\n"); |
72 | sys->resource[0] = &pp->res[0]; | 72 | pci_add_resource(&sys->resources, &pp->res[0]); |
73 | 73 | ||
74 | /* | 74 | /* |
75 | * IORESOURCE_MEM | 75 | * IORESOURCE_MEM |
@@ -88,9 +88,7 @@ static int __init dove_pcie_setup(int nr, struct pci_sys_data *sys) | |||
88 | pp->res[1].flags = IORESOURCE_MEM; | 88 | pp->res[1].flags = IORESOURCE_MEM; |
89 | if (request_resource(&iomem_resource, &pp->res[1])) | 89 | if (request_resource(&iomem_resource, &pp->res[1])) |
90 | panic("Request PCIe Memory resource failed\n"); | 90 | panic("Request PCIe Memory resource failed\n"); |
91 | sys->resource[1] = &pp->res[1]; | 91 | pci_add_resource(&sys->resources, &pp->res[1]); |
92 | |||
93 | sys->resource[2] = NULL; | ||
94 | 92 | ||
95 | return 1; | 93 | return 1; |
96 | } | 94 | } |
@@ -184,7 +182,8 @@ dove_pcie_scan_bus(int nr, struct pci_sys_data *sys) | |||
184 | struct pci_bus *bus; | 182 | struct pci_bus *bus; |
185 | 183 | ||
186 | if (nr < num_pcie_ports) { | 184 | if (nr < num_pcie_ports) { |
187 | bus = pci_scan_bus(sys->busnr, &pcie_ops, sys); | 185 | bus = pci_scan_root_bus(NULL, sys->busnr, &pcie_ops, sys, |
186 | &sys->resources); | ||
188 | } else { | 187 | } else { |
189 | bus = NULL; | 188 | bus = NULL; |
190 | BUG(); | 189 | BUG(); |
diff --git a/arch/arm/mach-footbridge/dc21285.c b/arch/arm/mach-footbridge/dc21285.c index 18c32a5541d9..f685650c25d7 100644 --- a/arch/arm/mach-footbridge/dc21285.c +++ b/arch/arm/mach-footbridge/dc21285.c | |||
@@ -275,9 +275,9 @@ int __init dc21285_setup(int nr, struct pci_sys_data *sys) | |||
275 | allocate_resource(&iomem_resource, &res[0], 0x40000000, | 275 | allocate_resource(&iomem_resource, &res[0], 0x40000000, |
276 | 0x80000000, 0xffffffff, 0x40000000, NULL, NULL); | 276 | 0x80000000, 0xffffffff, 0x40000000, NULL, NULL); |
277 | 277 | ||
278 | sys->resource[0] = &ioport_resource; | 278 | pci_add_resource(&sys->resources, &ioport_resource); |
279 | sys->resource[1] = &res[0]; | 279 | pci_add_resource(&sys->resources, &res[0]); |
280 | sys->resource[2] = &res[1]; | 280 | pci_add_resource(&sys->resources, &res[1]); |
281 | sys->mem_offset = DC21285_PCI_MEM; | 281 | sys->mem_offset = DC21285_PCI_MEM; |
282 | 282 | ||
283 | return 1; | 283 | return 1; |
@@ -285,7 +285,7 @@ int __init dc21285_setup(int nr, struct pci_sys_data *sys) | |||
285 | 285 | ||
286 | struct pci_bus * __init dc21285_scan_bus(int nr, struct pci_sys_data *sys) | 286 | struct pci_bus * __init dc21285_scan_bus(int nr, struct pci_sys_data *sys) |
287 | { | 287 | { |
288 | return pci_scan_bus(0, &dc21285_ops, sys); | 288 | return pci_scan_root_bus(NULL, 0, &dc21285_ops, sys, &sys->resources); |
289 | } | 289 | } |
290 | 290 | ||
291 | #define dc21285_request_irq(_a, _b, _c, _d, _e) \ | 291 | #define dc21285_request_irq(_a, _b, _c, _d, _e) \ |
diff --git a/arch/arm/mach-integrator/pci_v3.c b/arch/arm/mach-integrator/pci_v3.c index b4d8f8b8a085..3c82566acece 100644 --- a/arch/arm/mach-integrator/pci_v3.c +++ b/arch/arm/mach-integrator/pci_v3.c | |||
@@ -359,7 +359,7 @@ static struct resource pre_mem = { | |||
359 | .flags = IORESOURCE_MEM | IORESOURCE_PREFETCH, | 359 | .flags = IORESOURCE_MEM | IORESOURCE_PREFETCH, |
360 | }; | 360 | }; |
361 | 361 | ||
362 | static int __init pci_v3_setup_resources(struct resource **resource) | 362 | static int __init pci_v3_setup_resources(struct pci_sys_data *sys) |
363 | { | 363 | { |
364 | if (request_resource(&iomem_resource, &non_mem)) { | 364 | if (request_resource(&iomem_resource, &non_mem)) { |
365 | printk(KERN_ERR "PCI: unable to allocate non-prefetchable " | 365 | printk(KERN_ERR "PCI: unable to allocate non-prefetchable " |
@@ -374,13 +374,13 @@ static int __init pci_v3_setup_resources(struct resource **resource) | |||
374 | } | 374 | } |
375 | 375 | ||
376 | /* | 376 | /* |
377 | * bus->resource[0] is the IO resource for this bus | 377 | * the IO resource for this bus |
378 | * bus->resource[1] is the mem resource for this bus | 378 | * the mem resource for this bus |
379 | * bus->resource[2] is the prefetch mem resource for this bus | 379 | * the prefetch mem resource for this bus |
380 | */ | 380 | */ |
381 | resource[0] = &ioport_resource; | 381 | pci_add_resource(&sys->resources, &ioport_resource); |
382 | resource[1] = &non_mem; | 382 | pci_add_resource(&sys->resources, &non_mem); |
383 | resource[2] = &pre_mem; | 383 | pci_add_resource(&sys->resources, &pre_mem); |
384 | 384 | ||
385 | return 1; | 385 | return 1; |
386 | } | 386 | } |
@@ -481,7 +481,7 @@ int __init pci_v3_setup(int nr, struct pci_sys_data *sys) | |||
481 | 481 | ||
482 | if (nr == 0) { | 482 | if (nr == 0) { |
483 | sys->mem_offset = PHYS_PCI_MEM_BASE; | 483 | sys->mem_offset = PHYS_PCI_MEM_BASE; |
484 | ret = pci_v3_setup_resources(sys->resource); | 484 | ret = pci_v3_setup_resources(sys); |
485 | } | 485 | } |
486 | 486 | ||
487 | return ret; | 487 | return ret; |
@@ -489,7 +489,8 @@ int __init pci_v3_setup(int nr, struct pci_sys_data *sys) | |||
489 | 489 | ||
490 | struct pci_bus * __init pci_v3_scan_bus(int nr, struct pci_sys_data *sys) | 490 | struct pci_bus * __init pci_v3_scan_bus(int nr, struct pci_sys_data *sys) |
491 | { | 491 | { |
492 | return pci_scan_bus(sys->busnr, &pci_v3_ops, sys); | 492 | return pci_scan_root_bus(NULL, sys->busnr, &pci_v3_ops, sys, |
493 | &sys->resources); | ||
493 | } | 494 | } |
494 | 495 | ||
495 | /* | 496 | /* |
diff --git a/arch/arm/mach-iop13xx/pci.c b/arch/arm/mach-iop13xx/pci.c index db012fadf88c..b8f5a8736511 100644 --- a/arch/arm/mach-iop13xx/pci.c +++ b/arch/arm/mach-iop13xx/pci.c | |||
@@ -537,14 +537,14 @@ struct pci_bus *iop13xx_scan_bus(int nr, struct pci_sys_data *sys) | |||
537 | while(time_before(jiffies, atux_trhfa_timeout)) | 537 | while(time_before(jiffies, atux_trhfa_timeout)) |
538 | udelay(100); | 538 | udelay(100); |
539 | 539 | ||
540 | bus = pci_bus_atux = pci_scan_bus(sys->busnr, | 540 | bus = pci_bus_atux = pci_scan_root_bus(NULL, sys->busnr, |
541 | &iop13xx_atux_ops, | 541 | &iop13xx_atux_ops, |
542 | sys); | 542 | sys, &sys->resources); |
543 | break; | 543 | break; |
544 | case IOP13XX_INIT_ATU_ATUE: | 544 | case IOP13XX_INIT_ATU_ATUE: |
545 | bus = pci_bus_atue = pci_scan_bus(sys->busnr, | 545 | bus = pci_bus_atue = pci_scan_root_bus(NULL, sys->busnr, |
546 | &iop13xx_atue_ops, | 546 | &iop13xx_atue_ops, |
547 | sys); | 547 | sys, &sys->resources); |
548 | break; | 548 | break; |
549 | } | 549 | } |
550 | 550 | ||
@@ -1084,9 +1084,8 @@ int iop13xx_pci_setup(int nr, struct pci_sys_data *sys) | |||
1084 | request_resource(&ioport_resource, &res[0]); | 1084 | request_resource(&ioport_resource, &res[0]); |
1085 | request_resource(&iomem_resource, &res[1]); | 1085 | request_resource(&iomem_resource, &res[1]); |
1086 | 1086 | ||
1087 | sys->resource[0] = &res[0]; | 1087 | pci_add_resource(&sys->resources, &res[0]); |
1088 | sys->resource[1] = &res[1]; | 1088 | pci_add_resource(&sys->resources, &res[1]); |
1089 | sys->resource[2] = NULL; | ||
1090 | 1089 | ||
1091 | return 1; | 1090 | return 1; |
1092 | } | 1091 | } |
diff --git a/arch/arm/mach-ixp2000/enp2611.c b/arch/arm/mach-ixp2000/enp2611.c index af9994537e01..39c08a11a686 100644 --- a/arch/arm/mach-ixp2000/enp2611.c +++ b/arch/arm/mach-ixp2000/enp2611.c | |||
@@ -145,7 +145,8 @@ static struct pci_ops enp2611_pci_ops = { | |||
145 | static struct pci_bus * __init enp2611_pci_scan_bus(int nr, | 145 | static struct pci_bus * __init enp2611_pci_scan_bus(int nr, |
146 | struct pci_sys_data *sys) | 146 | struct pci_sys_data *sys) |
147 | { | 147 | { |
148 | return pci_scan_bus(sys->busnr, &enp2611_pci_ops, sys); | 148 | return pci_scan_root_bus(NULL, sys->busnr, &enp2611_pci_ops, sys, |
149 | &sys->resources); | ||
149 | } | 150 | } |
150 | 151 | ||
151 | static int __init enp2611_pci_map_irq(const struct pci_dev *dev, u8 slot, | 152 | static int __init enp2611_pci_map_irq(const struct pci_dev *dev, u8 slot, |
diff --git a/arch/arm/mach-ixp2000/pci.c b/arch/arm/mach-ixp2000/pci.c index f5098b306fd3..626fda435aa9 100644 --- a/arch/arm/mach-ixp2000/pci.c +++ b/arch/arm/mach-ixp2000/pci.c | |||
@@ -132,7 +132,8 @@ static struct pci_ops ixp2000_pci_ops = { | |||
132 | 132 | ||
133 | struct pci_bus *ixp2000_pci_scan_bus(int nr, struct pci_sys_data *sysdata) | 133 | struct pci_bus *ixp2000_pci_scan_bus(int nr, struct pci_sys_data *sysdata) |
134 | { | 134 | { |
135 | return pci_scan_bus(sysdata->busnr, &ixp2000_pci_ops, sysdata); | 135 | return pci_scan_root_bus(NULL, sysdata->busnr, &ixp2000_pci_ops, |
136 | sysdata, &sysdata->resources); | ||
136 | } | 137 | } |
137 | 138 | ||
138 | 139 | ||
@@ -242,9 +243,8 @@ int ixp2000_pci_setup(int nr, struct pci_sys_data *sys) | |||
242 | if (nr >= 1) | 243 | if (nr >= 1) |
243 | return 0; | 244 | return 0; |
244 | 245 | ||
245 | sys->resource[0] = &ixp2000_pci_io_space; | 246 | pci_add_resource(&sys->resources, &ixp2000_pci_io_space); |
246 | sys->resource[1] = &ixp2000_pci_mem_space; | 247 | pci_add_resource(&sys->resources, &ixp2000_pci_mem_space); |
247 | sys->resource[2] = NULL; | ||
248 | 248 | ||
249 | return 1; | 249 | return 1; |
250 | } | 250 | } |
diff --git a/arch/arm/mach-ixp23xx/pci.c b/arch/arm/mach-ixp23xx/pci.c index e6be5711c700..25b5c462cea2 100644 --- a/arch/arm/mach-ixp23xx/pci.c +++ b/arch/arm/mach-ixp23xx/pci.c | |||
@@ -143,7 +143,8 @@ struct pci_ops ixp23xx_pci_ops = { | |||
143 | 143 | ||
144 | struct pci_bus *ixp23xx_pci_scan_bus(int nr, struct pci_sys_data *sysdata) | 144 | struct pci_bus *ixp23xx_pci_scan_bus(int nr, struct pci_sys_data *sysdata) |
145 | { | 145 | { |
146 | return pci_scan_bus(sysdata->busnr, &ixp23xx_pci_ops, sysdata); | 146 | return pci_scan_root_bus(NULL, sysdata->busnr, &ixp23xx_pci_ops, |
147 | sysdata, &sysdata->resources); | ||
147 | } | 148 | } |
148 | 149 | ||
149 | int ixp23xx_pci_abort_handler(unsigned long addr, unsigned int fsr, struct pt_regs *regs) | 150 | int ixp23xx_pci_abort_handler(unsigned long addr, unsigned int fsr, struct pt_regs *regs) |
@@ -280,9 +281,8 @@ int ixp23xx_pci_setup(int nr, struct pci_sys_data *sys) | |||
280 | if (nr >= 1) | 281 | if (nr >= 1) |
281 | return 0; | 282 | return 0; |
282 | 283 | ||
283 | sys->resource[0] = &ixp23xx_pci_io_space; | 284 | pci_add_resource(&sys->resources, &ixp23xx_pci_io_space); |
284 | sys->resource[1] = &ixp23xx_pci_mem_space; | 285 | pci_add_resource(&sys->resources, &ixp23xx_pci_mem_space); |
285 | sys->resource[2] = NULL; | ||
286 | 286 | ||
287 | return 1; | 287 | return 1; |
288 | } | 288 | } |
diff --git a/arch/arm/mach-ixp4xx/common-pci.c b/arch/arm/mach-ixp4xx/common-pci.c index 8325058ef871..5eff15f24bc2 100644 --- a/arch/arm/mach-ixp4xx/common-pci.c +++ b/arch/arm/mach-ixp4xx/common-pci.c | |||
@@ -472,9 +472,8 @@ int ixp4xx_setup(int nr, struct pci_sys_data *sys) | |||
472 | request_resource(&ioport_resource, &res[0]); | 472 | request_resource(&ioport_resource, &res[0]); |
473 | request_resource(&iomem_resource, &res[1]); | 473 | request_resource(&iomem_resource, &res[1]); |
474 | 474 | ||
475 | sys->resource[0] = &res[0]; | 475 | pci_add_resource(&sys->resources, &res[0]); |
476 | sys->resource[1] = &res[1]; | 476 | pci_add_resource(&sys->resources, &res[1]); |
477 | sys->resource[2] = NULL; | ||
478 | 477 | ||
479 | platform_notify = ixp4xx_pci_platform_notify; | 478 | platform_notify = ixp4xx_pci_platform_notify; |
480 | platform_notify_remove = ixp4xx_pci_platform_notify_remove; | 479 | platform_notify_remove = ixp4xx_pci_platform_notify_remove; |
@@ -484,7 +483,8 @@ int ixp4xx_setup(int nr, struct pci_sys_data *sys) | |||
484 | 483 | ||
485 | struct pci_bus * __devinit ixp4xx_scan_bus(int nr, struct pci_sys_data *sys) | 484 | struct pci_bus * __devinit ixp4xx_scan_bus(int nr, struct pci_sys_data *sys) |
486 | { | 485 | { |
487 | return pci_scan_bus(sys->busnr, &ixp4xx_ops, sys); | 486 | return pci_scan_root_bus(NULL, sys->busnr, &ixp4xx_ops, sys, |
487 | &sys->resources); | ||
488 | } | 488 | } |
489 | 489 | ||
490 | int dma_set_coherent_mask(struct device *dev, u64 mask) | 490 | int dma_set_coherent_mask(struct device *dev, u64 mask) |
diff --git a/arch/arm/mach-kirkwood/pcie.c b/arch/arm/mach-kirkwood/pcie.c index 74b992d810ea..9ca38de527e1 100644 --- a/arch/arm/mach-kirkwood/pcie.c +++ b/arch/arm/mach-kirkwood/pcie.c | |||
@@ -198,9 +198,8 @@ static int __init kirkwood_pcie_setup(int nr, struct pci_sys_data *sys) | |||
198 | if (request_resource(&iomem_resource, &pp->res[1])) | 198 | if (request_resource(&iomem_resource, &pp->res[1])) |
199 | panic("Request PCIe%d Memory resource failed\n", index); | 199 | panic("Request PCIe%d Memory resource failed\n", index); |
200 | 200 | ||
201 | sys->resource[0] = &pp->res[0]; | 201 | pci_add_resource(&sys->resources, &pp->res[0]); |
202 | sys->resource[1] = &pp->res[1]; | 202 | pci_add_resource(&sys->resources, &pp->res[1]); |
203 | sys->resource[2] = NULL; | ||
204 | sys->io_offset = 0; | 203 | sys->io_offset = 0; |
205 | 204 | ||
206 | /* | 205 | /* |
@@ -236,7 +235,8 @@ kirkwood_pcie_scan_bus(int nr, struct pci_sys_data *sys) | |||
236 | struct pci_bus *bus; | 235 | struct pci_bus *bus; |
237 | 236 | ||
238 | if (nr < num_pcie_ports) { | 237 | if (nr < num_pcie_ports) { |
239 | bus = pci_scan_bus(sys->busnr, &pcie_ops, sys); | 238 | bus = pci_scan_root_bus(NULL, sys->busnr, &pcie_ops, sys, |
239 | &sys->resources); | ||
240 | } else { | 240 | } else { |
241 | bus = NULL; | 241 | bus = NULL; |
242 | BUG(); | 242 | BUG(); |
diff --git a/arch/arm/mach-ks8695/pci.c b/arch/arm/mach-ks8695/pci.c index c7c9a188d105..b26f992071df 100644 --- a/arch/arm/mach-ks8695/pci.c +++ b/arch/arm/mach-ks8695/pci.c | |||
@@ -143,7 +143,8 @@ static struct pci_ops ks8695_pci_ops = { | |||
143 | 143 | ||
144 | static struct pci_bus* __init ks8695_pci_scan_bus(int nr, struct pci_sys_data *sys) | 144 | static struct pci_bus* __init ks8695_pci_scan_bus(int nr, struct pci_sys_data *sys) |
145 | { | 145 | { |
146 | return pci_scan_bus(sys->busnr, &ks8695_pci_ops, sys); | 146 | return pci_scan_root_bus(NULL, sys->busnr, &ks8695_pci_ops, sys, |
147 | &sys->resources); | ||
147 | } | 148 | } |
148 | 149 | ||
149 | static struct resource pci_mem = { | 150 | static struct resource pci_mem = { |
@@ -168,9 +169,8 @@ static int __init ks8695_pci_setup(int nr, struct pci_sys_data *sys) | |||
168 | request_resource(&iomem_resource, &pci_mem); | 169 | request_resource(&iomem_resource, &pci_mem); |
169 | request_resource(&ioport_resource, &pci_io); | 170 | request_resource(&ioport_resource, &pci_io); |
170 | 171 | ||
171 | sys->resource[0] = &pci_io; | 172 | pci_add_resource(&sys->resources, &pci_io); |
172 | sys->resource[1] = &pci_mem; | 173 | pci_add_resource(&sys->resources, &pci_mem); |
173 | sys->resource[2] = NULL; | ||
174 | 174 | ||
175 | /* Assign and enable processor bridge */ | 175 | /* Assign and enable processor bridge */ |
176 | ks8695_local_writeconfig(PCI_BASE_ADDRESS_0, KS8695_PCIMEM_PA); | 176 | ks8695_local_writeconfig(PCI_BASE_ADDRESS_0, KS8695_PCIMEM_PA); |
diff --git a/arch/arm/mach-mv78xx0/pcie.c b/arch/arm/mach-mv78xx0/pcie.c index c51af1cac300..c701135f139e 100644 --- a/arch/arm/mach-mv78xx0/pcie.c +++ b/arch/arm/mach-mv78xx0/pcie.c | |||
@@ -155,9 +155,8 @@ static int __init mv78xx0_pcie_setup(int nr, struct pci_sys_data *sys) | |||
155 | orion_pcie_set_local_bus_nr(pp->base, sys->busnr); | 155 | orion_pcie_set_local_bus_nr(pp->base, sys->busnr); |
156 | orion_pcie_setup(pp->base, &mv78xx0_mbus_dram_info); | 156 | orion_pcie_setup(pp->base, &mv78xx0_mbus_dram_info); |
157 | 157 | ||
158 | sys->resource[0] = &pp->res[0]; | 158 | pci_add_resource(&sys->resources, &pp->res[0]); |
159 | sys->resource[1] = &pp->res[1]; | 159 | pci_add_resource(&sys->resources, &pp->res[1]); |
160 | sys->resource[2] = NULL; | ||
161 | 160 | ||
162 | return 1; | 161 | return 1; |
163 | } | 162 | } |
@@ -251,7 +250,8 @@ mv78xx0_pcie_scan_bus(int nr, struct pci_sys_data *sys) | |||
251 | struct pci_bus *bus; | 250 | struct pci_bus *bus; |
252 | 251 | ||
253 | if (nr < num_pcie_ports) { | 252 | if (nr < num_pcie_ports) { |
254 | bus = pci_scan_bus(sys->busnr, &pcie_ops, sys); | 253 | bus = pci_scan_root_bus(NULL, sys->busnr, &pcie_ops, sys, |
254 | &sys->resources); | ||
255 | } else { | 255 | } else { |
256 | bus = NULL; | 256 | bus = NULL; |
257 | BUG(); | 257 | BUG(); |
diff --git a/arch/arm/mach-orion5x/pci.c b/arch/arm/mach-orion5x/pci.c index bc4a920e26ee..4eb93647aab7 100644 --- a/arch/arm/mach-orion5x/pci.c +++ b/arch/arm/mach-orion5x/pci.c | |||
@@ -176,7 +176,7 @@ static int __init pcie_setup(struct pci_sys_data *sys) | |||
176 | res[0].end = res[0].start + ORION5X_PCIE_IO_SIZE - 1; | 176 | res[0].end = res[0].start + ORION5X_PCIE_IO_SIZE - 1; |
177 | if (request_resource(&ioport_resource, &res[0])) | 177 | if (request_resource(&ioport_resource, &res[0])) |
178 | panic("Request PCIe IO resource failed\n"); | 178 | panic("Request PCIe IO resource failed\n"); |
179 | sys->resource[0] = &res[0]; | 179 | pci_add_resource(&sys->resources, &res[0]); |
180 | 180 | ||
181 | /* | 181 | /* |
182 | * IORESOURCE_MEM | 182 | * IORESOURCE_MEM |
@@ -187,9 +187,8 @@ static int __init pcie_setup(struct pci_sys_data *sys) | |||
187 | res[1].end = res[1].start + ORION5X_PCIE_MEM_SIZE - 1; | 187 | res[1].end = res[1].start + ORION5X_PCIE_MEM_SIZE - 1; |
188 | if (request_resource(&iomem_resource, &res[1])) | 188 | if (request_resource(&iomem_resource, &res[1])) |
189 | panic("Request PCIe Memory resource failed\n"); | 189 | panic("Request PCIe Memory resource failed\n"); |
190 | sys->resource[1] = &res[1]; | 190 | pci_add_resource(&sys->resources, &res[1]); |
191 | 191 | ||
192 | sys->resource[2] = NULL; | ||
193 | sys->io_offset = 0; | 192 | sys->io_offset = 0; |
194 | 193 | ||
195 | return 1; | 194 | return 1; |
@@ -505,7 +504,7 @@ static int __init pci_setup(struct pci_sys_data *sys) | |||
505 | res[0].end = res[0].start + ORION5X_PCI_IO_SIZE - 1; | 504 | res[0].end = res[0].start + ORION5X_PCI_IO_SIZE - 1; |
506 | if (request_resource(&ioport_resource, &res[0])) | 505 | if (request_resource(&ioport_resource, &res[0])) |
507 | panic("Request PCI IO resource failed\n"); | 506 | panic("Request PCI IO resource failed\n"); |
508 | sys->resource[0] = &res[0]; | 507 | pci_add_resource(&sys->resources, &res[0]); |
509 | 508 | ||
510 | /* | 509 | /* |
511 | * IORESOURCE_MEM | 510 | * IORESOURCE_MEM |
@@ -516,9 +515,8 @@ static int __init pci_setup(struct pci_sys_data *sys) | |||
516 | res[1].end = res[1].start + ORION5X_PCI_MEM_SIZE - 1; | 515 | res[1].end = res[1].start + ORION5X_PCI_MEM_SIZE - 1; |
517 | if (request_resource(&iomem_resource, &res[1])) | 516 | if (request_resource(&iomem_resource, &res[1])) |
518 | panic("Request PCI Memory resource failed\n"); | 517 | panic("Request PCI Memory resource failed\n"); |
519 | sys->resource[1] = &res[1]; | 518 | pci_add_resource(&sys->resources, &res[1]); |
520 | 519 | ||
521 | sys->resource[2] = NULL; | ||
522 | sys->io_offset = 0; | 520 | sys->io_offset = 0; |
523 | 521 | ||
524 | return 1; | 522 | return 1; |
@@ -579,9 +577,11 @@ struct pci_bus __init *orion5x_pci_sys_scan_bus(int nr, struct pci_sys_data *sys | |||
579 | struct pci_bus *bus; | 577 | struct pci_bus *bus; |
580 | 578 | ||
581 | if (nr == 0) { | 579 | if (nr == 0) { |
582 | bus = pci_scan_bus(sys->busnr, &pcie_ops, sys); | 580 | bus = pci_scan_root_bus(NULL, sys->busnr, &pcie_ops, sys, |
581 | &sys->resources); | ||
583 | } else if (nr == 1 && !orion5x_pci_disabled) { | 582 | } else if (nr == 1 && !orion5x_pci_disabled) { |
584 | bus = pci_scan_bus(sys->busnr, &pci_ops, sys); | 583 | bus = pci_scan_root_bus(NULL, sys->busnr, &pci_ops, sys, |
584 | &sys->resources); | ||
585 | } else { | 585 | } else { |
586 | bus = NULL; | 586 | bus = NULL; |
587 | BUG(); | 587 | BUG(); |
diff --git a/arch/arm/mach-sa1100/pci-nanoengine.c b/arch/arm/mach-sa1100/pci-nanoengine.c index dd39fee59549..0d01ca788922 100644 --- a/arch/arm/mach-sa1100/pci-nanoengine.c +++ b/arch/arm/mach-sa1100/pci-nanoengine.c | |||
@@ -131,7 +131,8 @@ static int __init pci_nanoengine_map_irq(const struct pci_dev *dev, u8 slot, | |||
131 | 131 | ||
132 | struct pci_bus * __init pci_nanoengine_scan_bus(int nr, struct pci_sys_data *sys) | 132 | struct pci_bus * __init pci_nanoengine_scan_bus(int nr, struct pci_sys_data *sys) |
133 | { | 133 | { |
134 | return pci_scan_bus(sys->busnr, &pci_nano_ops, sys); | 134 | return pci_scan_root_bus(NULL, sys->busnr, &pci_nano_ops, sys, |
135 | &sys->resources); | ||
135 | } | 136 | } |
136 | 137 | ||
137 | static struct resource pci_io_ports = { | 138 | static struct resource pci_io_ports = { |
@@ -226,7 +227,7 @@ static struct resource pci_prefetchable_memory = { | |||
226 | .flags = IORESOURCE_MEM | IORESOURCE_PREFETCH, | 227 | .flags = IORESOURCE_MEM | IORESOURCE_PREFETCH, |
227 | }; | 228 | }; |
228 | 229 | ||
229 | static int __init pci_nanoengine_setup_resources(struct resource **resource) | 230 | static int __init pci_nanoengine_setup_resources(struct pci_sys_data *sys) |
230 | { | 231 | { |
231 | if (request_resource(&ioport_resource, &pci_io_ports)) { | 232 | if (request_resource(&ioport_resource, &pci_io_ports)) { |
232 | printk(KERN_ERR "PCI: unable to allocate io port region\n"); | 233 | printk(KERN_ERR "PCI: unable to allocate io port region\n"); |
@@ -243,9 +244,9 @@ static int __init pci_nanoengine_setup_resources(struct resource **resource) | |||
243 | printk(KERN_ERR "PCI: unable to allocate prefetchable\n"); | 244 | printk(KERN_ERR "PCI: unable to allocate prefetchable\n"); |
244 | return -EBUSY; | 245 | return -EBUSY; |
245 | } | 246 | } |
246 | resource[0] = &pci_io_ports; | 247 | pci_add_resource(&sys->resources, &pci_io_ports); |
247 | resource[1] = &pci_non_prefetchable_memory; | 248 | pci_add_resource(&sys->resources, &pci_non_prefetchable_memory); |
248 | resource[2] = &pci_prefetchable_memory; | 249 | pci_add_resource(&sys->resources, &pci_prefetchable_memory); |
249 | 250 | ||
250 | return 1; | 251 | return 1; |
251 | } | 252 | } |
@@ -260,7 +261,7 @@ int __init pci_nanoengine_setup(int nr, struct pci_sys_data *sys) | |||
260 | if (nr == 0) { | 261 | if (nr == 0) { |
261 | sys->mem_offset = NANO_PCI_MEM_RW_PHYS; | 262 | sys->mem_offset = NANO_PCI_MEM_RW_PHYS; |
262 | sys->io_offset = 0x400; | 263 | sys->io_offset = 0x400; |
263 | ret = pci_nanoengine_setup_resources(sys->resource); | 264 | ret = pci_nanoengine_setup_resources(sys); |
264 | /* Enable alternate memory bus master mode, see | 265 | /* Enable alternate memory bus master mode, see |
265 | * "Intel StrongARM SA1110 Developer's Manual", | 266 | * "Intel StrongARM SA1110 Developer's Manual", |
266 | * section 10.8, "Alternate Memory Bus Master Mode". */ | 267 | * section 10.8, "Alternate Memory Bus Master Mode". */ |
diff --git a/arch/arm/mach-tegra/pcie.c b/arch/arm/mach-tegra/pcie.c index 97ef3e55dfdf..92947d86fc87 100644 --- a/arch/arm/mach-tegra/pcie.c +++ b/arch/arm/mach-tegra/pcie.c | |||
@@ -409,7 +409,7 @@ static int tegra_pcie_setup(int nr, struct pci_sys_data *sys) | |||
409 | pp->res[0].flags = IORESOURCE_IO; | 409 | pp->res[0].flags = IORESOURCE_IO; |
410 | if (request_resource(&ioport_resource, &pp->res[0])) | 410 | if (request_resource(&ioport_resource, &pp->res[0])) |
411 | panic("Request PCIe IO resource failed\n"); | 411 | panic("Request PCIe IO resource failed\n"); |
412 | sys->resource[0] = &pp->res[0]; | 412 | pci_add_resource(&sys->resources, &pp->res[0]); |
413 | 413 | ||
414 | /* | 414 | /* |
415 | * IORESOURCE_MEM | 415 | * IORESOURCE_MEM |
@@ -428,7 +428,7 @@ static int tegra_pcie_setup(int nr, struct pci_sys_data *sys) | |||
428 | pp->res[1].flags = IORESOURCE_MEM; | 428 | pp->res[1].flags = IORESOURCE_MEM; |
429 | if (request_resource(&iomem_resource, &pp->res[1])) | 429 | if (request_resource(&iomem_resource, &pp->res[1])) |
430 | panic("Request PCIe Memory resource failed\n"); | 430 | panic("Request PCIe Memory resource failed\n"); |
431 | sys->resource[1] = &pp->res[1]; | 431 | pci_add_resource(&sys->resources, &pp->res[1]); |
432 | 432 | ||
433 | /* | 433 | /* |
434 | * IORESOURCE_MEM | IORESOURCE_PREFETCH | 434 | * IORESOURCE_MEM | IORESOURCE_PREFETCH |
@@ -447,7 +447,7 @@ static int tegra_pcie_setup(int nr, struct pci_sys_data *sys) | |||
447 | pp->res[2].flags = IORESOURCE_MEM | IORESOURCE_PREFETCH; | 447 | pp->res[2].flags = IORESOURCE_MEM | IORESOURCE_PREFETCH; |
448 | if (request_resource(&iomem_resource, &pp->res[2])) | 448 | if (request_resource(&iomem_resource, &pp->res[2])) |
449 | panic("Request PCIe Prefetch Memory resource failed\n"); | 449 | panic("Request PCIe Prefetch Memory resource failed\n"); |
450 | sys->resource[2] = &pp->res[2]; | 450 | pci_add_resource(&sys->resources, &pp->res[2]); |
451 | 451 | ||
452 | return 1; | 452 | return 1; |
453 | } | 453 | } |
@@ -468,7 +468,8 @@ static struct pci_bus __init *tegra_pcie_scan_bus(int nr, | |||
468 | pp = tegra_pcie.port + nr; | 468 | pp = tegra_pcie.port + nr; |
469 | pp->root_bus_nr = sys->busnr; | 469 | pp->root_bus_nr = sys->busnr; |
470 | 470 | ||
471 | return pci_scan_bus(sys->busnr, &tegra_pcie_ops, sys); | 471 | return pci_scan_root_bus(NULL, sys->busnr, &tegra_pcie_ops, sys, |
472 | &sys->resources); | ||
472 | } | 473 | } |
473 | 474 | ||
474 | static struct hw_pci tegra_pcie_hw __initdata = { | 475 | static struct hw_pci tegra_pcie_hw __initdata = { |
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) |
diff --git a/arch/arm/plat-iop/pci.c b/arch/arm/plat-iop/pci.c index 845549cbbb27..f4d40a27111e 100644 --- a/arch/arm/plat-iop/pci.c +++ b/arch/arm/plat-iop/pci.c | |||
@@ -215,16 +215,16 @@ int iop3xx_pci_setup(int nr, struct pci_sys_data *sys) | |||
215 | sys->mem_offset = IOP3XX_PCI_LOWER_MEM_PA - *IOP3XX_OMWTVR0; | 215 | sys->mem_offset = IOP3XX_PCI_LOWER_MEM_PA - *IOP3XX_OMWTVR0; |
216 | sys->io_offset = IOP3XX_PCI_LOWER_IO_PA - *IOP3XX_OIOWTVR; | 216 | sys->io_offset = IOP3XX_PCI_LOWER_IO_PA - *IOP3XX_OIOWTVR; |
217 | 217 | ||
218 | sys->resource[0] = &res[0]; | 218 | pci_add_resource(&sys->resources, &res[0]); |
219 | sys->resource[1] = &res[1]; | 219 | pci_add_resource(&sys->resources, &res[1]); |
220 | sys->resource[2] = NULL; | ||
221 | 220 | ||
222 | return 1; | 221 | return 1; |
223 | } | 222 | } |
224 | 223 | ||
225 | struct pci_bus *iop3xx_pci_scan_bus(int nr, struct pci_sys_data *sys) | 224 | struct pci_bus *iop3xx_pci_scan_bus(int nr, struct pci_sys_data *sys) |
226 | { | 225 | { |
227 | return pci_scan_bus(sys->busnr, &iop3xx_ops, sys); | 226 | return pci_scan_root_bus(NULL, sys->busnr, &iop3xx_ops, sys, |
227 | &sys->resources); | ||
228 | } | 228 | } |
229 | 229 | ||
230 | void __init iop3xx_atu_setup(void) | 230 | void __init iop3xx_atu_setup(void) |