On 07:29-20240328, A. Sverdlin wrote: > From: Alexander Sverdlin <alexander.sverd...@siemens.com> > > am65_cpsw_ofdata_parse_phy() tries to handle the case when PHY is not > specified in DT gracefully: > > am65_cpsw_nuss_port ethernet@8000000port@1: can't parse phy-handle port 1 (-2) > > am65_cpsw_mdio_init() in turn is prepared for this, checks > if priv->has_phy == 0 and bails out (leaving cpsw_common->bus == NULL). > > am65_cpsw_phy_init() however is not prepared for this and calls > phy_connect(cpsw_common->bus, ...) unconditionally, which leads to: > > "Synchronous Abort" handler, esr 0x8600000d, far 0x0 > elr: ffffffff808ab000 lr : 000000008083bde4 (reloc) > > where lr points to the instruction right after bus->read() in get_phy_id(). > > Fixes: 9d0dca1199d1 ("net: ethernet: ti: Introduce am654 gigabit eth switch > subsystem driver") > Signed-off-by: Alexander Sverdlin <alexander.sverd...@siemens.com> > --- > v2: rewritten subject; "is turn" -> "in turn" further down in message body > > drivers/net/ti/am65-cpsw-nuss.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/drivers/net/ti/am65-cpsw-nuss.c b/drivers/net/ti/am65-cpsw-nuss.c > index 6da018c0f9d5..d1e452b6b43c 100644 > --- a/drivers/net/ti/am65-cpsw-nuss.c > +++ b/drivers/net/ti/am65-cpsw-nuss.c > @@ -722,6 +722,9 @@ static int am65_cpsw_phy_init(struct udevice *dev) > u32 supported = PHY_GBIT_FEATURES; > int ret; > > + if (!priv->has_phy || !cpsw_common->bus) > + return 0; > + > phydev = phy_connect(cpsw_common->bus, > priv->phy_addr, > priv->dev, > -- > 2.44.0 >
Reviewed-by: Nishanth Menon <n...@ti.com> Thanks for fixing this. Btw, this no longer applies on next. only applies on master. Depending on where Tom would like to apply this change, might need a rebase. CC Roger. -- Regards, Nishanth Menon Key (0xDDB5849D1736249D) / Fingerprint: F8A2 8693 54EB 8232 17A3 1A34 DDB5 849D 1736 249D