lkml.org 
[lkml]   [2021]   [Oct]   [18]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
SubjectRe: [PATCH net-next] phy: micrel: ksz8041nl: do not use power down mode
From
Date


Le 18/10/2021 à 11:42, Francesco Dolcini a écrit :
> From: Stefan Agner <stefan@agner.ch>
>
> Some Micrel KSZ8041NL PHY chips exhibit continous RX errors after using
> the power down mode bit (0.11). If the PHY is taken out of power down
> mode in a certain temperature range, the PHY enters a weird state which
> leads to continously reporting RX errors. In that state, the MAC is not
> able to receive or send any Ethernet frames and the activity LED is
> constantly blinking. Since Linux is using the suspend callback when the
> interface is taken down, ending up in that state can easily happen
> during a normal startup.
>
> Micrel confirmed the issue in errata DS80000700A [*], caused by abnormal
> clock recovery when using power down mode. Even the latest revision (A4,
> Revision ID 0x1513) seems to suffer that problem, and according to the
> errata is not going to be fixed.
>
> Remove the suspend/resume callback to avoid using the power down mode
> completely.

As far as I can see in the ERRATA, KSZ8041 RNLI also has the bug.
Shoudn't you also remove the suspend/resume on that one (which follows
in ksphy_driver[])

Christophe

>
> [*] https://ww1.microchip.com/downloads/en/DeviceDoc/80000700A.pdf
>
> Signed-off-by: Stefan Agner <stefan@agner.ch>
> Acked-by: Marcel Ziswiler <marcel.ziswiler@toradex.com>
> Signed-off-by: Francesco Dolcini <francesco.dolcini@toradex.com>
>
> ---
> There was a previous attempt to merge a similar patch, see
> https://lore.kernel.org/all/2ee9441d-1b3b-de6d-691d-b615c04c69d0@gmail.com/.
> ---
> drivers/net/phy/micrel.c | 2 --
> 1 file changed, 2 deletions(-)
>
> diff --git a/drivers/net/phy/micrel.c b/drivers/net/phy/micrel.c
> index ff452669130a..1f28d5fae677 100644
> --- a/drivers/net/phy/micrel.c
> +++ b/drivers/net/phy/micrel.c
> @@ -1676,8 +1676,6 @@ static struct phy_driver ksphy_driver[] = {
> .get_sset_count = kszphy_get_sset_count,
> .get_strings = kszphy_get_strings,
> .get_stats = kszphy_get_stats,
> - .suspend = genphy_suspend,
> - .resume = genphy_resume,
> }, {
> .phy_id = PHY_ID_KSZ8041RNLI,
> .phy_id_mask = MICREL_PHY_ID_MASK,
>

\
 
 \ /
  Last update: 2021-10-18 11:54    [W:0.068 / U:19.752 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site