{
        struct device *dev = &pdev->dev;
        struct altera_pcie *pcie;
-       struct pci_bus *bus;
-       struct pci_bus *child;
        struct pci_host_bridge *bridge;
        int ret;
        const struct of_device_id *match;
        bridge->map_irq = of_irq_parse_and_map_pci;
        bridge->swizzle_irq = pci_common_swizzle;
 
-       ret = pci_scan_root_bus_bridge(bridge);
-       if (ret < 0)
-               return ret;
-
-       bus = bridge->bus;
-
-       pci_assign_unassigned_bus_resources(bus);
-
-       /* Configure PCI Express setting. */
-       list_for_each_entry(child, &bus->children, node)
-               pcie_bus_configure_settings(child);
-
-       pci_bus_add_devices(bus);
-       return ret;
+       return pci_host_probe(bridge);
 }
 
 static int altera_pcie_remove(struct platform_device *pdev)