From: Joakim Zhang Date: Tue, 8 Jun 2021 03:15:35 +0000 (+0800) Subject: net: phy: realtek: add delay to fix RXC generation issue X-Git-Tag: v5.10.79~2692 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=8a4318c14ace3ecdd2d0b73a84a7f3b334b357bc;p=platform%2Fkernel%2Flinux-rpi.git net: phy: realtek: add delay to fix RXC generation issue [ Upstream commit 6813cc8cfdaf401476e1a007cec8ae338cefa573 ] PHY will delay about 11.5ms to generate RXC clock when switching from power down to normal operation. Read/write registers would also cause RXC become unstable and stop for a while during this process. Realtek engineer suggests 15ms or more delay can workaround this issue. Signed-off-by: Joakim Zhang Signed-off-by: David S. Miller Signed-off-by: Sasha Levin --- diff --git a/drivers/net/phy/realtek.c b/drivers/net/phy/realtek.c index 575580d..b487930 100644 --- a/drivers/net/phy/realtek.c +++ b/drivers/net/phy/realtek.c @@ -246,6 +246,19 @@ static int rtl8211f_config_init(struct phy_device *phydev) return 0; } +static int rtl821x_resume(struct phy_device *phydev) +{ + int ret; + + ret = genphy_resume(phydev); + if (ret < 0) + return ret; + + msleep(20); + + return 0; +} + static int rtl8211e_config_init(struct phy_device *phydev) { int ret = 0, oldpage; @@ -624,7 +637,7 @@ static struct phy_driver realtek_drvs[] = { .ack_interrupt = &rtl8211f_ack_interrupt, .config_intr = &rtl8211f_config_intr, .suspend = genphy_suspend, - .resume = genphy_resume, + .resume = rtl821x_resume, .read_page = rtl821x_read_page, .write_page = rtl821x_write_page, }, {