aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/pci/host/pci-xgene.c11
1 files changed, 5 insertions, 6 deletions
diff --git a/drivers/pci/host/pci-xgene.c b/drivers/pci/host/pci-xgene.c
index 7c3b54b9eb17..1a6108788f6f 100644
--- a/drivers/pci/host/pci-xgene.c
+++ b/drivers/pci/host/pci-xgene.c
@@ -246,14 +246,11 @@ static int xgene_pcie_ecam_init(struct pci_config_window *cfg, u32 ipversion)
246 ret = xgene_get_csr_resource(adev, &csr); 246 ret = xgene_get_csr_resource(adev, &csr);
247 if (ret) { 247 if (ret) {
248 dev_err(dev, "can't get CSR resource\n"); 248 dev_err(dev, "can't get CSR resource\n");
249 kfree(port);
250 return ret; 249 return ret;
251 } 250 }
252 port->csr_base = devm_ioremap_resource(dev, &csr); 251 port->csr_base = devm_ioremap_resource(dev, &csr);
253 if (IS_ERR(port->csr_base)) { 252 if (IS_ERR(port->csr_base))
254 kfree(port); 253 return PTR_ERR(port->csr_base);
255 return -ENOMEM;
256 }
257 254
258 port->cfg_base = cfg->win; 255 port->cfg_base = cfg->win;
259 port->version = ipversion; 256 port->version = ipversion;
@@ -638,7 +635,7 @@ static int xgene_pcie_probe_bridge(struct platform_device *pdev)
638 struct device_node *dn = dev->of_node; 635 struct device_node *dn = dev->of_node;
639 struct xgene_pcie_port *port; 636 struct xgene_pcie_port *port;
640 resource_size_t iobase = 0; 637 resource_size_t iobase = 0;
641 struct pci_bus *bus; 638 struct pci_bus *bus, *child;
642 int ret; 639 int ret;
643 LIST_HEAD(res); 640 LIST_HEAD(res);
644 641
@@ -681,6 +678,8 @@ static int xgene_pcie_probe_bridge(struct platform_device *pdev)
681 678
682 pci_scan_child_bus(bus); 679 pci_scan_child_bus(bus);
683 pci_assign_unassigned_bus_resources(bus); 680 pci_assign_unassigned_bus_resources(bus);
681 list_for_each_entry(child, &bus->children, node)
682 pcie_bus_configure_settings(child);
684 pci_bus_add_devices(bus); 683 pci_bus_add_devices(bus);
685 return 0; 684 return 0;
686 685