[PATCH 2/2] PCI: dwc: Handle return value from endpoint .pre_init callback
Frank Li
Frank.li at oss.nxp.com
Tue Jul 28 12:12:36 PDT 2026
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 <marek.vasut+renesas at mailbox.org>
> ---
> Cc: "Krzysztof Wilczyński" <kwilczynski at kernel.org>
> Cc: Anand Moon <linux.amoon at gmail.com>
> Cc: Bjorn Helgaas <bhelgaas at google.com>
> Cc: Frank Li <Frank.Li at nxp.com>
> Cc: Geert Uytterhoeven <geert+renesas at glider.be>
> Cc: Heiko Stuebner <heiko at sntech.de>
> Cc: Jesper Nilsson <jesper.nilsson at axis.com>
> Cc: Jingoo Han <jingoohan1 at gmail.com>
> Cc: Koichiro Den <den at valinux.co.jp>
> Cc: Lorenzo Pieralisi <lpieralisi at kernel.org>
> Cc: Magnus Damm <magnus.damm at gmail.com>
> Cc: Manivannan Sadhasivam <mani at kernel.org>
> Cc: Minghuan Lian <minghuan.Lian at nxp.com>
> Cc: Mingkai Hu <mingkai.hu at nxp.com>
> Cc: Nicolas Frattaroli <nicolas.frattaroli at collabora.com>
> Cc: Niklas Cassel <cassel at kernel.org>
> Cc: Qianfeng Rong <rongqianfeng at vivo.com>
> Cc: Qiang Yu <qiang.yu at oss.qualcomm.com>
> Cc: Rob Herring <robh at kernel.org>
> Cc: Roy Zang <roy.zang at nxp.com>
> Cc: Shawn Lin <shawn.lin at rock-chips.com>
> Cc: Siddharth Vadapalli <s-vadapalli at ti.com>
> Cc: Srikanth Thokala <srikanth.thokala at intel.com>
> Cc: Vignesh Raghavendra <vigneshr at ti.com>
> Cc: Yoshihiro Shimoda <yoshihiro.shimoda.uh at renesas.com>
> Cc: Yuho Choi <dbgh9129 at gmail.com>
> Cc: imx at lists.linux.dev
> Cc: linux-arm-kernel at lists.infradead.org
> Cc: linux-kernel at vger.kernel.org
> Cc: linux-omap at vger.kernel.org
> Cc: linux-pci at vger.kernel.org
> Cc: linux-renesas-soc at vger.kernel.org
> Cc: linux-rockchip at lists.infradead.org
> ---
Reviewed-by: Frank Li <Frank.Li at nxp.com>
> 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
>
More information about the Linux-rockchip
mailing list