
Hi Nishanth!
On Thu, 2024-03-28 at 06:45 -0500, Nishanth Menon wrote:
On 07:29-20240328, A. Sverdlin wrote:
From: Alexander Sverdlin alexander.sverdlin@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.sverdlin@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 nm@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.
Thanks for the hint! I've totally missed this! And I'm even not sure the patch makes sense on "next". I'd need to retest if the problem is still there (and if there would be one, then it's rather subsystem problem, not am65-cpsw any more.
So the patch only makes sense for stable branches, if any.