Hi Siddhardth, Am Mi., 16. Apr. 2025 um 14:57 Uhr schrieb Siddharth Vadapalli <s-vadapa...@ti.com>: > > Currently, the phy_config() API is invoked by the driver only once since it > has been probed. While this works in general, it doesn't allow the driver > to bring the PHY back to its default reset state. As a result, the driver > might not be able to recover the PHY from a bad state. To address this, > move phy_config() into the driver's start callback (am65_cpsw_start()). > > Apart from providing the means to recover the PHY in the event of failure, > the implementation is in line with the idea of "reset and configure" that > is already followed by am65_cpsw_start() when it comes to programming the > CPSW MAC. >
I do not know if this is the same issue here, but I see that in case no cable is connected and I try to do a dhcp command the board/network stack of a J722S EVM stays in a broken state. After plugging a cable it is not possible to do a successful dhcp. It requires a reset to get a working network again. Same issue can be reproduced when unterrupt a running dhcp task with CTRL-C. ---- U-Boot 2025.07-rc3-g259a4765c26b (Sep 08 2025 - 10:44:20 +0200) SoC: J722S SR1.0 HS-FS Model: Texas Instruments J722S EVM DRAM: 2 GiB (total 8 GiB) Core: 91 devices, 29 uclasses, devicetree: separate MMC: mmc@fa10000: 0, mmc@fa00000: 1 Loading Environment from nowhere... OK In: serial@2800000 Out: serial@2800000 Err: serial@2800000 Net: eth0: ethernet@8000000port@1 Hit any key to stop autoboot: 0 => dhcp ethernet@8000000port@1 Waiting for PHY auto negotiation to complete......... TIMEOUT ! am65_cpsw_nuss_port ethernet@8000000port@1: phy_startup failed am65_cpsw_nuss_port ethernet@8000000port@1: am65_cpsw_start end error BOOTP broadcast 1 ---- Do you have an idea what is going on here? > Signed-off-by: Siddharth Vadapalli <s-vadapa...@ti.com> > --- > > Hello, > > This patch is based on commit > f892a7f397a Revert "Merge patch series "pxe: Precursor series for supporting > read_all() in extlinux / PXE"" > of the next branch of U-Boot. > > Regards, > Siddharth. > > drivers/net/ti/am65-cpsw-nuss.c | 9 ++++++--- > 1 file changed, 6 insertions(+), 3 deletions(-) > > diff --git a/drivers/net/ti/am65-cpsw-nuss.c b/drivers/net/ti/am65-cpsw-nuss.c > index 3c62fc0b428..9b69f36d04d 100644 > --- a/drivers/net/ti/am65-cpsw-nuss.c > +++ b/drivers/net/ti/am65-cpsw-nuss.c > @@ -438,6 +438,12 @@ static int am65_cpsw_start(struct udevice *dev) > port->port_sgmii_base + AM65_CPSW_SGMII_CONTROL_REG); > } > > + ret = phy_config(priv->phydev); > + if (ret < 0) { > + dev_err(dev, "phy_config failed: %d", ret); > + goto err_dis_rx; > + } > + > ret = phy_startup(priv->phydev); > if (ret) { > dev_err(dev, "phy_startup failed\n"); > @@ -639,9 +645,6 @@ static int am65_cpsw_phy_init(struct udevice *dev) > phydev->advertising = phydev->supported; > > priv->phydev = phydev; > - ret = phy_config(phydev); > - if (ret < 0) > - dev_err(dev, "phy_config() failed: %d", ret); > > return ret; > } > -- > 2.34.1 > BR, Heiko