Message ID | 20230816152926.4093-8-jszhang@kernel.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | net: stmmac: add new features to xgmac | expand |
On Wed, Aug 16, 2023 at 11:29:24PM +0800, Jisheng Zhang wrote: > The snps dwmac IP may support safety features, and those Safety > Feature Correctible Error and Uncorrectible Error irqs may be > separate irqs. Add support to parse the safety irqs from DT. > > Signed-off-by: Jisheng Zhang <jszhang@kernel.org> > Acked-by: Alexandre TORGUE <alexandre.torgue@foss.st.com> > --- > .../net/ethernet/stmicro/stmmac/stmmac_platform.c | 12 ++++++++++++ > 1 file changed, 12 insertions(+) > > diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c > index be8e79c7aa34..4a2002eea870 100644 > --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c > +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c > @@ -737,6 +737,18 @@ int stmmac_get_platform_resources(struct platform_device *pdev, > dev_info(&pdev->dev, "IRQ eth_lpi not found\n"); > } > > + stmmac_res->sfty_ce_irq = platform_get_irq_byname_optional(pdev, "sfty_ce"); > + if (stmmac_res->sfty_ce_irq < 0) { > + if (stmmac_res->sfty_ce_irq == -EPROBE_DEFER) > + return -EPROBE_DEFER; > + } I think the error checking should be better than this. If i'm reading the code correctly, it should return -ENXIO if it does not exist, and since it is supposed to be optional, you can continue. Other values < 0 are real errors, and it should be returned. Andrew
diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c index be8e79c7aa34..4a2002eea870 100644 --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c @@ -737,6 +737,18 @@ int stmmac_get_platform_resources(struct platform_device *pdev, dev_info(&pdev->dev, "IRQ eth_lpi not found\n"); } + stmmac_res->sfty_ce_irq = platform_get_irq_byname_optional(pdev, "sfty_ce"); + if (stmmac_res->sfty_ce_irq < 0) { + if (stmmac_res->sfty_ce_irq == -EPROBE_DEFER) + return -EPROBE_DEFER; + } + + stmmac_res->sfty_ue_irq = platform_get_irq_byname_optional(pdev, "sfty_ue"); + if (stmmac_res->sfty_ue_irq < 0) { + if (stmmac_res->sfty_ue_irq == -EPROBE_DEFER) + return -EPROBE_DEFER; + } + stmmac_res->addr = devm_platform_ioremap_resource(pdev, 0); return PTR_ERR_OR_ZERO(stmmac_res->addr);