struct device_node *np = dev->of_node;
        struct platform_device *pdev = to_platform_device(dev);
        struct resource_entry *win;
-       struct pci_bus *child;
        struct pci_host_bridge *bridge;
        struct resource *cfg_res;
        int ret;
 
        bridge->sysdata = pp;
 
-       ret = pci_scan_root_bus_bridge(bridge);
-       if (ret)
-               goto err_free_msi;
-
-       pp->root_bus = bridge->bus;
-
-       if (pp->ops->scan_bus)
-               pp->ops->scan_bus(pp);
-
-       pci_bus_size_bridges(pp->root_bus);
-       pci_bus_assign_resources(pp->root_bus);
-
-       list_for_each_entry(child, &pp->root_bus->children, node)
-               pcie_bus_configure_settings(child);
-
-       pci_bus_add_devices(pp->root_bus);
-       return 0;
+       ret = pci_host_probe(bridge);
+       if (!ret)
+               return 0;
 
 err_free_msi:
        if (pci_msi_enabled() && !pp->ops->msi_host_init)
 
 
 struct dw_pcie_host_ops {
        int (*host_init)(struct pcie_port *pp);
-       void (*scan_bus)(struct pcie_port *pp);
        void (*set_num_vectors)(struct pcie_port *pp);
        int (*msi_host_init)(struct pcie_port *pp);
 };