[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