[PATCH 1/2] net: phy: micrel_ksz90x1: disable asymmetric pause for KSZ9031

Max Merchel Max.Merchel at ew.tq-group.com
Fri Nov 21 09:18:06 CET 2025


From: Markus Niebel <Markus.Niebel at ew.tq-group.com>

Disable the support due to chip errata and call genphy_config_aneg
instead of genphy_config. For a complete describtion look at the
errata sheets: DS80000691D or DS80000692D.

Signed-off-by: Markus Niebel <Markus.Niebel at ew.tq-group.com>
Signed-off-by: Max Merchel <Max.Merchel at ew.tq-group.com>
---
 drivers/net/phy/micrel_ksz90x1.c | 18 +++++++++++++++++-
 1 file changed, 17 insertions(+), 1 deletion(-)

diff --git a/drivers/net/phy/micrel_ksz90x1.c b/drivers/net/phy/micrel_ksz90x1.c
index a02dbe900b8..bc42506c65e 100644
--- a/drivers/net/phy/micrel_ksz90x1.c
+++ b/drivers/net/phy/micrel_ksz90x1.c
@@ -336,6 +336,7 @@ static int ksz9031_phy_extwrite(struct phy_device *phydev, int addr,
 
 static int ksz9031_config(struct phy_device *phydev)
 {
+	unsigned int features = phydev->drv->features;
 	int ret;
 
 	ret = ksz9031_of_config(phydev);
@@ -371,7 +372,22 @@ static int ksz9031_config(struct phy_device *phydev)
 		return 0;
 	}
 
-	return genphy_config(phydev);
+	/* Silicon Errata Sheet (DS80000691D or DS80000692D):
+	 * Whenever the device's Asymmetric Pause capability is set to 1,
+	 * link-up may fail after a link-up to link-down transition.
+	 *
+	 * Workaround:
+	 * Do not enable the Asymmetric Pause capability bit.
+	 */
+	features &= ~ADVERTISE_PAUSE_ASYM;
+	/* update feature support and forward to advertised features */
+	phydev->supported = features;
+	phydev->advertising = phydev->supported;
+
+	/* genphy_restart_aneg called from genphy_config_aneg */
+	return genphy_config_aneg(phydev);
+
+	return 0;
 }
 
 U_BOOT_PHY_DRIVER(ksz9031) = {
-- 
2.43.0



More information about the U-Boot mailing list