Re: [PATCH] net: phy: micrel: ksz9131 led errata workaround
From: Andrew Lunn <andrew@lunn.ch>
Date: 2021-10-06 21:57:53
Also in:
lkml
On Wed, Oct 06, 2021 at 09:37:55AM +0200, Francesco Dolcini wrote:
quoted hunk ↗ jump to hunk
Micrel KSZ9131 PHY LED behavior is not correct when configured in Individual Mode, LED1 (Activity LED) is in the ON state when there is no-link. Workaround this by setting bit 9 of register 0x1e after verifying that the LED configuration is Individual Mode. This issue is described in KSZ9131RNX Silicon Errata DS80000693B (http://ww1.microchip.com/downloads/en/DeviceDoc/80000863A.pdf) and according to that it will not be corrected in a future silicon revision. Signed-off-by: Francesco Dolcini <redacted> --- drivers/net/phy/micrel.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+)diff --git a/drivers/net/phy/micrel.c b/drivers/net/phy/micrel.c index c330a5a9f665..661dedec84c4 100644 --- a/drivers/net/phy/micrel.c +++ b/drivers/net/phy/micrel.c@@ -1003,6 +1003,23 @@ static int ksz9131_config_rgmii_delay(struct phy_device *phydev) txcdll_val); } +/* Silicon Errata DS80000693B + * + * When LEDs are configured in Individual Mode, LED1 is ON in a no-link + * condition. Workaround is to set register 0x1e, bit 9, this way LED1 behaves + * according to the datasheet (off if there is no link). + */ + +static int ksz9131_led_errata(struct phy_device *phydev) +{ + int ret = 0; + + if (phy_read_mmd(phydev, 2, 0) & BIT(4))
It would be good to check the return code here. If there is an error, you are going to set bit 9. Otherwise this looks O.K. Andrew