PCI: brcmstb: Use pci_host_probe() to register host
authorRob Herring <robh@kernel.org>
Fri, 22 May 2020 23:48:21 +0000 (17:48 -0600)
committerLorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Fri, 10 Jul 2020 10:50:23 +0000 (11:50 +0100)
The brcmstb host driver does the same host registration and bus scanning
calls as pci_host_probe, so let's use it instead.

Link: https://lore.kernel.org/r/20200522234832.954484-5-robh@kernel.org
Tested-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
Signed-off-by: Rob Herring <robh@kernel.org>
Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Acked-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
Cc: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
Cc: bcm-kernel-feedback-list@broadcom.com
Cc: linux-rpi-kernel@lists.infradead.org
drivers/pci/controller/pcie-brcmstb.c

index 7730ea8..15c747c 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,7 +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;
 
@@ -1004,20 +1003,9 @@ static int brcm_pcie_probe(struct platform_device *pdev)
        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;