|
@@ -152,20 +152,24 @@ pcibios_pci_config_bridge(struct pci_dev *dev)
|
|
|
void
|
|
|
pcibios_add_pci_devices(struct pci_bus * bus)
|
|
|
{
|
|
|
- int slotno, num;
|
|
|
+ int slotno, num, mode;
|
|
|
struct pci_dev *dev;
|
|
|
struct device_node *dn = pci_bus_to_OF_node(bus);
|
|
|
|
|
|
eeh_add_device_tree_early(dn);
|
|
|
|
|
|
- if (_machine == PLATFORM_PSERIES_LPAR) {
|
|
|
+ mode = PCI_PROBE_NORMAL;
|
|
|
+ if (ppc_md.pci_probe_mode)
|
|
|
+ mode = ppc_md.pci_probe_mode(bus);
|
|
|
+
|
|
|
+ if (mode == PCI_PROBE_DEVTREE) {
|
|
|
/* use ofdt-based probe */
|
|
|
of_scan_bus(dn, bus);
|
|
|
if (!list_empty(&bus->devices)) {
|
|
|
pcibios_fixup_new_pci_devices(bus, 0);
|
|
|
pci_bus_add_devices(bus);
|
|
|
}
|
|
|
- } else {
|
|
|
+ } else if (mode == PCI_PROBE_NORMAL) {
|
|
|
/* use legacy probe */
|
|
|
slotno = PCI_SLOT(PCI_DN(dn->child)->devfn);
|
|
|
num = pci_scan_slot(bus, PCI_DEVFN(slotno, 0));
|