]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
PCI: dwc: ep: Call epc_create() early in dw_pcie_ep_init()
authorBjorn Helgaas <bhelgaas@google.com>
Sat, 15 Mar 2025 20:15:43 +0000 (15:15 -0500)
committerBjorn Helgaas <bhelgaas@google.com>
Mon, 24 Mar 2025 19:58:34 +0000 (14:58 -0500)
Move devm_pci_epc_create() to the beginning of dw_pcie_ep_init().

devm_pci_epc_create() is generic code that doesn't depend on any DWC
resource, so moving it earlier keeps all the subsequent devicetree-related
code together.

Link: https://lore.kernel.org/r/20250315201548.858189-9-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 80ac2f9e88eb5bac589d585ca27ba511a54faa56..100d26466f05d5b41ff346150e60605749a1f479 100644 (file)
@@ -904,6 +904,15 @@ int dw_pcie_ep_init(struct dw_pcie_ep *ep)
 
        INIT_LIST_HEAD(&ep->func_list);
 
+       epc = devm_pci_epc_create(dev, &epc_ops);
+       if (IS_ERR(epc)) {
+               dev_err(dev, "Failed to create epc device\n");
+               return PTR_ERR(epc);
+       }
+
+       ep->epc = epc;
+       epc_set_drvdata(epc, ep);
+
        ret = dw_pcie_get_resources(pci);
        if (ret)
                return ret;
@@ -918,15 +927,6 @@ int dw_pcie_ep_init(struct dw_pcie_ep *ep)
        if (ep->ops->pre_init)
                ep->ops->pre_init(ep);
 
-       epc = devm_pci_epc_create(dev, &epc_ops);
-       if (IS_ERR(epc)) {
-               dev_err(dev, "Failed to create epc device\n");
-               return PTR_ERR(epc);
-       }
-
-       ep->epc = epc;
-       epc_set_drvdata(epc, ep);
-
        ret = of_property_read_u8(np, "max-functions", &epc->max_functions);
        if (ret < 0)
                epc->max_functions = 1;