diff options
Diffstat (limited to 'drivers/pci/controller/pcie-brcmstb.c')
| -rw-r--r-- | drivers/pci/controller/pcie-brcmstb.c | 33 | 
1 files changed, 5 insertions, 28 deletions
| diff --git a/drivers/pci/controller/pcie-brcmstb.c b/drivers/pci/controller/pcie-brcmstb.c index 7730ea845ff2..85fa7d54f11f 100644 --- a/drivers/pci/controller/pcie-brcmstb.c +++ b/drivers/pci/controller/pcie-brcmstb.c @@ -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; |