Message ID | 20250330083914.529222-4-s-vadapalli@ti.com |
---|---|
State | Superseded |
Headers | show |
Series | Loadable Module support for PCIe Cadence and J721E | expand |
On Sun, Mar 30, 2025 at 02:09:13PM +0530, Siddharth Vadapalli wrote: > Introduce the helper function cdns_pcie_ep_disable() which will undo the > configuration performed by cdns_pcie_ep_setup(). Also, export it for use > by the existing callers of cdns_pcie_ep_setup(), thereby allowing them > to cleanup on their exit path. > > Signed-off-by: Siddharth Vadapalli <s-vadapalli@ti.com> Reviewed-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org> - Mani > --- > > v1: > https://lore.kernel.org/r/20250307103128.3287497-4-s-vadapalli@ti.com/ > Changes since v1: > - Based on feedback from Mani at: > https://lore.kernel.org/r/20250318080304.jsmrxqil6pn74nzh@thinkpad/ > pci_epc_deinit_notify() has been included in cdns_pcie_ep_disable(). > > Regards, > Siddharth. > > drivers/pci/controller/cadence/pcie-cadence-ep.c | 11 +++++++++++ > drivers/pci/controller/cadence/pcie-cadence.h | 5 +++++ > 2 files changed, 16 insertions(+) > > diff --git a/drivers/pci/controller/cadence/pcie-cadence-ep.c b/drivers/pci/controller/cadence/pcie-cadence-ep.c > index b4bcef2d020a..ffd19cb25eed 100644 > --- a/drivers/pci/controller/cadence/pcie-cadence-ep.c > +++ b/drivers/pci/controller/cadence/pcie-cadence-ep.c > @@ -645,6 +645,17 @@ static const struct pci_epc_ops cdns_pcie_epc_ops = { > .get_features = cdns_pcie_ep_get_features, > }; > > +void cdns_pcie_ep_disable(struct cdns_pcie_ep *ep) > +{ > + struct device *dev = ep->pcie.dev; > + struct pci_epc *epc = to_pci_epc(dev); > + > + pci_epc_deinit_notify(epc); > + pci_epc_mem_free_addr(epc, ep->irq_phys_addr, ep->irq_cpu_addr, > + SZ_128K); > + pci_epc_mem_exit(epc); > +} > +EXPORT_SYMBOL_GPL(cdns_pcie_ep_disable); > > int cdns_pcie_ep_setup(struct cdns_pcie_ep *ep) > { > diff --git a/drivers/pci/controller/cadence/pcie-cadence.h b/drivers/pci/controller/cadence/pcie-cadence.h > index 0b6bed1ac146..387174d6e453 100644 > --- a/drivers/pci/controller/cadence/pcie-cadence.h > +++ b/drivers/pci/controller/cadence/pcie-cadence.h > @@ -555,11 +555,16 @@ static inline void __iomem *cdns_pci_map_bus(struct pci_bus *bus, unsigned int d > > #if IS_ENABLED(CONFIG_PCIE_CADENCE_EP) > int cdns_pcie_ep_setup(struct cdns_pcie_ep *ep); > +void cdns_pcie_ep_disable(struct cdns_pcie_ep *ep); > #else > static inline int cdns_pcie_ep_setup(struct cdns_pcie_ep *ep) > { > return 0; > } > + > +static inline void cdns_pcie_ep_disable(struct cdns_pcie_ep *ep) > +{ > +} > #endif > > void cdns_pcie_detect_quiet_min_delay_set(struct cdns_pcie *pcie); > -- > 2.34.1 >
diff --git a/drivers/pci/controller/cadence/pcie-cadence-ep.c b/drivers/pci/controller/cadence/pcie-cadence-ep.c index b4bcef2d020a..ffd19cb25eed 100644 --- a/drivers/pci/controller/cadence/pcie-cadence-ep.c +++ b/drivers/pci/controller/cadence/pcie-cadence-ep.c @@ -645,6 +645,17 @@ static const struct pci_epc_ops cdns_pcie_epc_ops = { .get_features = cdns_pcie_ep_get_features, }; +void cdns_pcie_ep_disable(struct cdns_pcie_ep *ep) +{ + struct device *dev = ep->pcie.dev; + struct pci_epc *epc = to_pci_epc(dev); + + pci_epc_deinit_notify(epc); + pci_epc_mem_free_addr(epc, ep->irq_phys_addr, ep->irq_cpu_addr, + SZ_128K); + pci_epc_mem_exit(epc); +} +EXPORT_SYMBOL_GPL(cdns_pcie_ep_disable); int cdns_pcie_ep_setup(struct cdns_pcie_ep *ep) { diff --git a/drivers/pci/controller/cadence/pcie-cadence.h b/drivers/pci/controller/cadence/pcie-cadence.h index 0b6bed1ac146..387174d6e453 100644 --- a/drivers/pci/controller/cadence/pcie-cadence.h +++ b/drivers/pci/controller/cadence/pcie-cadence.h @@ -555,11 +555,16 @@ static inline void __iomem *cdns_pci_map_bus(struct pci_bus *bus, unsigned int d #if IS_ENABLED(CONFIG_PCIE_CADENCE_EP) int cdns_pcie_ep_setup(struct cdns_pcie_ep *ep); +void cdns_pcie_ep_disable(struct cdns_pcie_ep *ep); #else static inline int cdns_pcie_ep_setup(struct cdns_pcie_ep *ep) { return 0; } + +static inline void cdns_pcie_ep_disable(struct cdns_pcie_ep *ep) +{ +} #endif void cdns_pcie_detect_quiet_min_delay_set(struct cdns_pcie *pcie);
Introduce the helper function cdns_pcie_ep_disable() which will undo the configuration performed by cdns_pcie_ep_setup(). Also, export it for use by the existing callers of cdns_pcie_ep_setup(), thereby allowing them to cleanup on their exit path. Signed-off-by: Siddharth Vadapalli <s-vadapalli@ti.com> --- v1: https://lore.kernel.org/r/20250307103128.3287497-4-s-vadapalli@ti.com/ Changes since v1: - Based on feedback from Mani at: https://lore.kernel.org/r/20250318080304.jsmrxqil6pn74nzh@thinkpad/ pci_epc_deinit_notify() has been included in cdns_pcie_ep_disable(). Regards, Siddharth. drivers/pci/controller/cadence/pcie-cadence-ep.c | 11 +++++++++++ drivers/pci/controller/cadence/pcie-cadence.h | 5 +++++ 2 files changed, 16 insertions(+)