Re: [PATCH 2/2] PCI: dwc: Handle return value from endpoint .pre_init callback
Frank Li <[email protected]> Tue, 28 Jul 2026 15:12:36 -0400
| Newsgroups | org.kernel.vger.linux-omap,dev.linux.lists.imx,org.infradead.lists.linux-arm-kernel,org.infradead.lists.linux-rockchip,org.kernel.vger.linux-kernel,org.kernel.vger.linux-pci,org.kernel.vger.linux-renesas-soc |
|---|---|
| Message-ID | <amj_JPfOU2sNINxA@lizhi-Precision-Tower-5810> |
On Tue, Jul 28, 2026 at 03:24:25AM +0200, Marek Vasut wrote: > Add return value handling for struct dw_pcie_ep_ops .pre_init callback. > > Signed-off-by: Marek Vasut <[email protected]> > --- > Cc: "Krzysztof WilczyĆski" <[email protected]> > Cc: Anand Moon <[email protected]> > Cc: Bjorn Helgaas <[email protected]> > Cc: Frank Li <[email protected]> > Cc: Geert Uytterhoeven <[email protected]> > Cc: Heiko Stuebner <[email protected]> > Cc: Jesper Nilsson <[email protected]> > Cc: Jingoo Han <[email protected]> > Cc: Koichiro Den <[email protected]> > Cc: Lorenzo Pieralisi <[email protected]> > Cc: Magnus Damm <[email protected]> > Cc: Manivannan Sadhasivam <[email protected]> > Cc: Minghuan Lian <[email protected]> > Cc: Mingkai Hu <[email protected]> > Cc: Nicolas Frattaroli <[email protected]> > Cc: Niklas Cassel <[email protected]> > Cc: Qianfeng Rong <[email protected]> > Cc: Qiang Yu <[email protected]> > Cc: Rob Herring <[email protected]> > Cc: Roy Zang <[email protected]> > Cc: Shawn Lin <[email protected]> > Cc: Siddharth Vadapalli <[email protected]> > Cc: Srikanth Thokala <[email protected]> > Cc: Vignesh Raghavendra <[email protected]> > Cc: Yoshihiro Shimoda <[email protected]> > Cc: Yuho Choi <[email protected]> > Cc: [email protected] > Cc: [email protected] > Cc: [email protected] > Cc: [email protected] > Cc: [email protected] > Cc: [email protected] > Cc: [email protected] > --- Reviewed-by: Frank Li <[email protected]> > drivers/pci/controller/dwc/pcie-designware-ep.c | 7 +++++-- > drivers/pci/controller/dwc/pcie-designware.h | 2 +- > drivers/pci/controller/dwc/pcie-rcar-gen4.c | 6 ++++-- > 3 files changed, 10 insertions(+), 5 deletions(-) > > diff --git a/drivers/pci/controller/dwc/pcie-designware-ep.c b/drivers/pci/controller/dwc/pcie-designware-ep.c > index d78fb845582b2..b00239097d893 100644 > --- a/drivers/pci/controller/dwc/pcie-designware-ep.c > +++ b/drivers/pci/controller/dwc/pcie-designware-ep.c > @@ -1524,8 +1524,11 @@ int dw_pcie_ep_init(struct dw_pcie_ep *ep) > if (ret) > return ret; > > - if (ep->ops->pre_init) > - ep->ops->pre_init(ep); > + if (ep->ops->pre_init) { > + ret = ep->ops->pre_init(ep); > + if (ret) > + return ret; > + } > > ret = pci_epc_mem_init(epc, ep->phys_base, ep->addr_size, > ep->page_size); > diff --git a/drivers/pci/controller/dwc/pcie-designware.h b/drivers/pci/controller/dwc/pcie-designware.h > index 004b433f17135..6546dc3aa2075 100644 > --- a/drivers/pci/controller/dwc/pcie-designware.h > +++ b/drivers/pci/controller/dwc/pcie-designware.h > @@ -474,7 +474,7 @@ struct dw_pcie_rp { > }; > > struct dw_pcie_ep_ops { > - void (*pre_init)(struct dw_pcie_ep *ep); > + int (*pre_init)(struct dw_pcie_ep *ep); > int (*init)(struct dw_pcie_ep *ep); > int (*raise_irq)(struct dw_pcie_ep *ep, u8 func_no, > unsigned int type, u16 interrupt_num); > diff --git a/drivers/pci/controller/dwc/pcie-rcar-gen4.c b/drivers/pci/controller/dwc/pcie-rcar-gen4.c > index 5f7211b91ee5b..fbe465a29068f 100644 > --- a/drivers/pci/controller/dwc/pcie-rcar-gen4.c > +++ b/drivers/pci/controller/dwc/pcie-rcar-gen4.c > @@ -481,7 +481,7 @@ static void rcar_gen4_remove_dw_pcie_rp(struct rcar_gen4_pcie *rcar) > } > > /* Endpoint mode */ > -static void rcar_gen4_pcie_ep_pre_init(struct dw_pcie_ep *ep) > +static int rcar_gen4_pcie_ep_pre_init(struct dw_pcie_ep *ep) > { > struct dw_pcie *dw = to_dw_pcie_from_ep(ep); > struct rcar_gen4_pcie *rcar = to_rcar_gen4_pcie(dw); > @@ -489,9 +489,11 @@ static void rcar_gen4_pcie_ep_pre_init(struct dw_pcie_ep *ep) > > ret = rcar_gen4_pcie_common_init(rcar); > if (ret) > - return; > + return ret; > > writel(PCIEDMAINTSTSEN_INIT, rcar->base + PCIEDMAINTSTSEN); > + > + return 0; > } > > static void rcar_gen4_pcie_ep_deinit(struct rcar_gen4_pcie *rcar) > -- > 2.53.0 >