]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
PCI: dwc: ep: Consolidate devicetree handling in dw_pcie_ep_get_resources()
authorBjorn Helgaas <bhelgaas@google.com>
Sat, 15 Mar 2025 20:15:44 +0000 (15:15 -0500)
committerBjorn Helgaas <bhelgaas@google.com>
Mon, 24 Mar 2025 19:58:34 +0000 (14:58 -0500)
Consolidate devicetree resource handling in dw_pcie_ep_get_resources().
No functional change intended.

Link: https://lore.kernel.org/r/20250315201548.858189-10-helgaas@kernel.org
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Reviewed-by: Frank Li <Frank.Li@nxp.com>
drivers/pci/controller/dwc/pcie-designware-ep.c

index 100d26466f05d5b41ff346150e60605749a1f479..2db834345ec212da5a9cab074d87150c241dd146 100644 (file)
@@ -883,6 +883,34 @@ void dw_pcie_ep_linkdown(struct dw_pcie_ep *ep)
 }
 EXPORT_SYMBOL_GPL(dw_pcie_ep_linkdown);
 
+static int dw_pcie_ep_get_resources(struct dw_pcie_ep *ep)
+{
+       struct dw_pcie *pci = to_dw_pcie_from_ep(ep);
+       struct device *dev = pci->dev;
+       struct platform_device *pdev = to_platform_device(dev);
+       struct device_node *np = dev->of_node;
+       struct pci_epc *epc = ep->epc;
+       struct resource *res;
+       int ret;
+
+       ret = dw_pcie_get_resources(pci);
+       if (ret)
+               return ret;
+
+       res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "addr_space");
+       if (!res)
+               return -EINVAL;
+
+       ep->phys_base = res->start;
+       ep->addr_size = resource_size(res);
+
+       ret = of_property_read_u8(np, "max-functions", &epc->max_functions);
+       if (ret < 0)
+               epc->max_functions = 1;
+
+       return 0;
+}
+
 /**
  * dw_pcie_ep_init - Initialize the endpoint device
  * @ep: DWC EP device
@@ -895,12 +923,9 @@ EXPORT_SYMBOL_GPL(dw_pcie_ep_linkdown);
 int dw_pcie_ep_init(struct dw_pcie_ep *ep)
 {
        int ret;
-       struct resource *res;
        struct pci_epc *epc;
        struct dw_pcie *pci = to_dw_pcie_from_ep(ep);
        struct device *dev = pci->dev;
-       struct platform_device *pdev = to_platform_device(dev);
-       struct device_node *np = dev->of_node;
 
        INIT_LIST_HEAD(&ep->func_list);
 
@@ -913,24 +938,13 @@ int dw_pcie_ep_init(struct dw_pcie_ep *ep)
        ep->epc = epc;
        epc_set_drvdata(epc, ep);
 
-       ret = dw_pcie_get_resources(pci);
+       ret = dw_pcie_ep_get_resources(ep);
        if (ret)
                return ret;
 
-       res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "addr_space");
-       if (!res)
-               return -EINVAL;
-
-       ep->phys_base = res->start;
-       ep->addr_size = resource_size(res);
-
        if (ep->ops->pre_init)
                ep->ops->pre_init(ep);
 
-       ret = of_property_read_u8(np, "max-functions", &epc->max_functions);
-       if (ret < 0)
-               epc->max_functions = 1;
-
        ret = pci_epc_mem_init(epc, ep->phys_base, ep->addr_size,
                               ep->page_size);
        if (ret < 0) {