tilepro pci: fix pci_bus.subordinate bad bombing from b918c62e
[profile/ivi/kernel-adaptation-intel-automotive.git] / arch / tile / kernel / pci.c
index b56d12b..33c1086 100644 (file)
@@ -310,6 +310,7 @@ int __init pcibios_init(void)
                if (pci_scan_flags[i] == 0 && controllers[i].ops != NULL) {
                        struct pci_controller *controller = &controllers[i];
                        struct pci_bus *bus;
+                       LIST_HEAD(resources);
 
                        if (tile_init_irqs(i, controller)) {
                                pr_err("PCI: Could not initialize IRQs\n");
@@ -327,9 +328,11 @@ int __init pcibios_init(void)
                         * This is inlined in linux/pci.h and calls into
                         * pci_scan_bus_parented() in probe.c.
                         */
-                       bus = pci_scan_bus(0, controller->ops, controller);
+                       pci_add_resource(&resources, &ioport_resource);
+                       pci_add_resource(&resources, &iomem_resource);
+                       bus = pci_scan_root_bus(NULL, 0, controller->ops, controller, &resources);
                        controller->root_bus = bus;
-                       controller->last_busno = bus->subordinate;
+                       controller->last_busno = bus->busn_res.end;
                }
        }
 
@@ -401,16 +404,6 @@ void pcibios_set_master(struct pci_dev *dev)
 }
 
 /*
- * This can be called from the generic PCI layer, but doesn't need to
- * do anything.
- */
-char __devinit *pcibios_setup(char *str)
-{
-       /* Nothing needs to be done. */
-       return str;
-}
-
-/*
  * This is called from the generic Linux layer.
  */
 void __devinit pcibios_update_irq(struct pci_dev *dev, int irq)