On Tue, May 28, 2024 at 03:00:37PM +0200, Niklas Cassel wrote: > Add a DWC specific wrapper function (dw_pcie_ep_deinit_notify()) around > pci_epc_deinit_notify(), similar to how we have a wrapper function > (dw_pcie_ep_init_notify()) around pci_epc_init_notify(). > > This will allow the DWC glue drivers to use the same API layer for init > and deinit notification. > > Signed-off-by: Niklas Cassel <cassel@xxxxxxxxxx> > --- > drivers/pci/controller/dwc/pcie-designware-ep.c | 13 +++++++++++++ > drivers/pci/controller/dwc/pcie-designware.h | 5 +++++ > 2 files changed, 18 insertions(+) > > diff --git a/drivers/pci/controller/dwc/pcie-designware-ep.c b/drivers/pci/controller/dwc/pcie-designware-ep.c > index 2063cf2049e5..3c9079651dff 100644 > --- a/drivers/pci/controller/dwc/pcie-designware-ep.c > +++ b/drivers/pci/controller/dwc/pcie-designware-ep.c > @@ -39,6 +39,19 @@ void dw_pcie_ep_init_notify(struct dw_pcie_ep *ep) > } > EXPORT_SYMBOL_GPL(dw_pcie_ep_init_notify); > > +/** > + * dw_pcie_ep_deinit_notify - Notify EPF drivers about EPC deinitialization > + * complete > + * @ep: DWC EP device > + */ > +void dw_pcie_ep_deinit_notify(struct dw_pcie_ep *ep) > +{ > + struct pci_epc *epc = ep->epc; > + > + pci_epc_deinit_notify(epc); > +} > +EXPORT_SYMBOL_GPL(dw_pcie_ep_deinit_notify); What is the value of this wrapper? I see that dw_pcie_ep_deinit_notify() would be parallel to dw_pcie_ep_init_notify() and dw_pcie_ep_linkup(), but none of these has any DWC-specific content other than the fact that pcie-designware.h provides stubs for the non-CONFIG_PCIE_DW_EP case. What if we added stubs to pci-epc.h pci_epc_init_notify(), pci_epc_deinit_notify(), pci_epc_linkup(), and pci_epc_linkdown() for the non-CONFIG_PCI_ENDPOINT case instead? Then we might be able to drop all these DWC-specific wrappers. > /** > * dw_pcie_ep_get_func_from_ep - Get the struct dw_pcie_ep_func corresponding to > * the endpoint function > diff --git a/drivers/pci/controller/dwc/pcie-designware.h b/drivers/pci/controller/dwc/pcie-designware.h > index f8e5431a207b..dc63f764b8ba 100644 > --- a/drivers/pci/controller/dwc/pcie-designware.h > +++ b/drivers/pci/controller/dwc/pcie-designware.h > @@ -672,6 +672,7 @@ int dw_pcie_ep_init(struct dw_pcie_ep *ep); > int dw_pcie_ep_init_registers(struct dw_pcie_ep *ep); > void dw_pcie_ep_init_notify(struct dw_pcie_ep *ep); > void dw_pcie_ep_deinit(struct dw_pcie_ep *ep); > +void dw_pcie_ep_deinit_notify(struct dw_pcie_ep *ep); > void dw_pcie_ep_cleanup(struct dw_pcie_ep *ep); > int dw_pcie_ep_raise_intx_irq(struct dw_pcie_ep *ep, u8 func_no); > int dw_pcie_ep_raise_msi_irq(struct dw_pcie_ep *ep, u8 func_no, > @@ -706,6 +707,10 @@ static inline void dw_pcie_ep_deinit(struct dw_pcie_ep *ep) > { > } > > +static inline void dw_pcie_ep_deinit_notify(struct dw_pcie_ep *ep) > +{ > +} > + > static inline void dw_pcie_ep_cleanup(struct dw_pcie_ep *ep) > { > } > -- > 2.45.1 >