Merge tag 'kvm-ppc-next-5.9-1' of git://git.kernel.org/pub/scm/linux/kernel/git/paulu...
[linux-2.6-microblaze.git] / drivers / pci / controller / pcie-brcmstb.c
index 7730ea8..85fa7d5 100644 (file)
@@ -172,7 +172,6 @@ struct brcm_pcie {
        struct device           *dev;
        void __iomem            *base;
        struct clk              *clk;
-       struct pci_bus          *root_bus;
        struct device_node      *np;
        bool                    ssc;
        int                     gen;
@@ -919,9 +918,10 @@ static void __brcm_pcie_remove(struct brcm_pcie *pcie)
 static int brcm_pcie_remove(struct platform_device *pdev)
 {
        struct brcm_pcie *pcie = platform_get_drvdata(pdev);
+       struct pci_host_bridge *bridge = pci_host_bridge_from_priv(pcie);
 
-       pci_stop_root_bus(pcie->root_bus);
-       pci_remove_root_bus(pcie->root_bus);
+       pci_stop_root_bus(bridge->bus);
+       pci_remove_root_bus(bridge->bus);
        __brcm_pcie_remove(pcie);
 
        return 0;
@@ -933,8 +933,6 @@ static int brcm_pcie_probe(struct platform_device *pdev)
        struct pci_host_bridge *bridge;
        struct device_node *fw_np;
        struct brcm_pcie *pcie;
-       struct pci_bus *child;
-       struct resource *res;
        int ret;
 
        /*
@@ -959,8 +957,7 @@ static int brcm_pcie_probe(struct platform_device *pdev)
        pcie->dev = &pdev->dev;
        pcie->np = np;
 
-       res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-       pcie->base = devm_ioremap_resource(&pdev->dev, res);
+       pcie->base = devm_platform_ioremap_resource(pdev, 0);
        if (IS_ERR(pcie->base))
                return PTR_ERR(pcie->base);
 
@@ -973,11 +970,6 @@ static int brcm_pcie_probe(struct platform_device *pdev)
 
        pcie->ssc = of_property_read_bool(np, "brcm,enable-ssc");
 
-       ret = pci_parse_request_of_pci_ranges(pcie->dev, &bridge->windows,
-                                             &bridge->dma_ranges, NULL);
-       if (ret)
-               return ret;
-
        ret = clk_prepare_enable(pcie->clk);
        if (ret) {
                dev_err(&pdev->dev, "could not enable clock\n");
@@ -997,27 +989,12 @@ static int brcm_pcie_probe(struct platform_device *pdev)
                }
        }
 
-       bridge->dev.parent = &pdev->dev;
-       bridge->busnr = 0;
        bridge->ops = &brcm_pcie_ops;
        bridge->sysdata = pcie;
-       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) {
-               dev_err(pcie->dev, "Scanning root bridge failed\n");
-               goto fail;
-       }
-
-       pci_assign_unassigned_bus_resources(bridge->bus);
-       list_for_each_entry(child, &bridge->bus->children, node)
-               pcie_bus_configure_settings(child);
-       pci_bus_add_devices(bridge->bus);
        platform_set_drvdata(pdev, pcie);
-       pcie->root_bus = bridge->bus;
 
-       return 0;
+       return pci_host_probe(bridge);
 fail:
        __brcm_pcie_remove(pcie);
        return ret;