From: Rob Herring <robh@kernel.org>
Date: Fri, 22 May 2020 17:48:18 -0600
Subject: PCI: cadence: Use struct pci_host_bridge.windows list directly
Git-commit: 24344226f66beda742f233e08dfb3fb33932275b
Patch-mainline: v5.9-rc1
References: bsc#1179344
There's no need to create a temporary resource list and then splice it to
struct pci_host_bridge.windows list. Just use pci_host_bridge.windows
directly. The necessary clean-up is already handled by the PCI core.
Link: https://lore.kernel.org/r/20200522234832.954484-2-robh@kernel.org
Signed-off-by: Rob Herring <robh@kernel.org>
Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Cc: Tom Joseph <tjoseph@cadence.com>
Signed-off-by: Mian Yousaf Kaukab <yousaf.kaukab@suse.com>
---
drivers/pci/controller/cadence/pcie-cadence-host.c | 28 +++++----------------
1 file changed, 7 insertions(+), 21 deletions(-)
--- a/drivers/pci/controller/cadence/pcie-cadence-host.c
+++ b/drivers/pci/controller/cadence/pcie-cadence-host.c
@@ -173,14 +173,15 @@ static int cdns_pcie_host_init_address_t
}
static int cdns_pcie_host_init(struct device *dev,
- struct list_head *resources,
struct cdns_pcie_rc *rc)
{
+ struct pci_host_bridge *bridge = pci_host_bridge_from_priv(rc);
struct resource *bus_range = NULL;
int err;
/* Parse our PCI ranges and request their resources */
- err = pci_parse_request_of_pci_ranges(dev, resources, NULL, &bus_range);
+ err = pci_parse_request_of_pci_ranges(dev, &bridge->windows, NULL,
+ &bus_range);
if (err)
return err;
@@ -189,17 +190,9 @@ static int cdns_pcie_host_init(struct de
err = cdns_pcie_host_init_root_port(rc);
if (err)
- goto err_out;
-
- err = cdns_pcie_host_init_address_translation(rc);
- if (err)
- goto err_out;
-
- return 0;
+ return err;
- err_out:
- pci_free_resource_list(resources);
- return err;
+ return cdns_pcie_host_init_address_translation(rc);
}
int cdns_pcie_host_setup(struct cdns_pcie_rc *rc)
@@ -208,7 +201,6 @@ int cdns_pcie_host_setup(struct cdns_pci
struct platform_device *pdev = to_platform_device(dev);
struct device_node *np = dev->of_node;
struct pci_host_bridge *bridge;
- struct list_head resources;
struct cdns_pcie *pcie;
struct resource *res;
int ret;
@@ -252,11 +244,10 @@ int cdns_pcie_host_setup(struct cdns_pci
pcie->mem_res = res;
- ret = cdns_pcie_host_init(dev, &resources, rc);
+ ret = cdns_pcie_host_init(dev, rc);
if (ret)
return ret;
- list_splice_init(&resources, &bridge->windows);
bridge->dev.parent = dev;
bridge->busnr = pcie->bus;
bridge->ops = &cdns_pcie_host_ops;
@@ -265,12 +256,7 @@ int cdns_pcie_host_setup(struct cdns_pci
ret = pci_host_probe(bridge);
if (ret < 0)
- goto err_host_probe;
+ return ret;
return 0;
-
- err_host_probe:
- pci_free_resource_list(&resources);
-
- return ret;
}