struct device *dev = &pdev->dev;
        struct advk_pcie *pcie;
        struct resource *res;
-       struct pci_bus *bus, *child;
        struct pci_host_bridge *bridge;
        int ret, irq;
 
        bridge->map_irq = of_irq_parse_and_map_pci;
        bridge->swizzle_irq = pci_common_swizzle;
 
-       ret = pci_scan_root_bus_bridge(bridge);
+       ret = pci_host_probe(bridge);
        if (ret < 0) {
                advk_pcie_remove_msi_irq_domain(pcie);
                advk_pcie_remove_irq_domain(pcie);
                return ret;
        }
 
-       bus = bridge->bus;
-
-       pci_bus_size_bridges(bus);
-       pci_bus_assign_resources(bus);
-
-       list_for_each_entry(child, &bus->children, node)
-               pcie_bus_configure_settings(child);
-
-       pci_bus_add_devices(bus);
        return 0;
 }