generic: use genphy_soft_reset for RealTek 2.5G PHYs
Some vendor bootloaders do weird things with those PHYs which result in link modes being reported wrongly. Start from a clean sheet by resetting the PHY. Reported-by: Yevhen Kolomeiko <jarvis2709@gmail.com> Signed-off-by: Daniel Golle <daniel@makrotopia.org>
This commit is contained in:
		| @@ -0,0 +1,65 @@ | |||||||
|  | From 85cd45580f5e3b26068cccb7d6173f200e754dc0 Mon Sep 17 00:00:00 2001 | ||||||
|  | From: Daniel Golle <daniel@makrotopia.org> | ||||||
|  | Date: Sun, 2 Apr 2023 23:56:16 +0100 | ||||||
|  | Subject: [PATCH 1/2] net: phy: realtek: use genphy_soft_reset for 2.5G PHYs | ||||||
|  |  | ||||||
|  | Some vendor bootloaders do weird things with those PHYs which result in | ||||||
|  | link modes being reported wrongly. Start from a clean sheet by resetting | ||||||
|  | the PHY. | ||||||
|  |  | ||||||
|  | Reported-by: Yevhen Kolomeiko <jarvis2709@gmail.com> | ||||||
|  | Signed-off-by: Daniel Golle <daniel@makrotopia.org> | ||||||
|  | --- | ||||||
|  |  drivers/net/phy/realtek.c | 6 ++++++ | ||||||
|  |  1 file changed, 6 insertions(+) | ||||||
|  |  | ||||||
|  | --- a/drivers/net/phy/realtek.c | ||||||
|  | +++ b/drivers/net/phy/realtek.c | ||||||
|  | @@ -1013,6 +1013,7 @@ static struct phy_driver realtek_drvs[] | ||||||
|  |  		.write_page	= rtl821x_write_page, | ||||||
|  |  		.read_mmd	= rtl822x_read_mmd, | ||||||
|  |  		.write_mmd	= rtl822x_write_mmd, | ||||||
|  | +		.soft_reset     = genphy_soft_reset, | ||||||
|  |  	}, { | ||||||
|  |  		PHY_ID_MATCH_EXACT(0x001cc840), | ||||||
|  |  		.name		= "RTL8226B_RTL8221B 2.5Gbps PHY", | ||||||
|  | @@ -1025,6 +1026,7 @@ static struct phy_driver realtek_drvs[] | ||||||
|  |  		.write_page	= rtl821x_write_page, | ||||||
|  |  		.read_mmd	= rtl822x_read_mmd, | ||||||
|  |  		.write_mmd	= rtl822x_write_mmd, | ||||||
|  | +		.soft_reset     = genphy_soft_reset, | ||||||
|  |  	}, { | ||||||
|  |  		PHY_ID_MATCH_EXACT(0x001cc838), | ||||||
|  |  		.name           = "RTL8226-CG 2.5Gbps PHY", | ||||||
|  | @@ -1035,6 +1037,7 @@ static struct phy_driver realtek_drvs[] | ||||||
|  |  		.resume         = rtlgen_resume, | ||||||
|  |  		.read_page      = rtl821x_read_page, | ||||||
|  |  		.write_page     = rtl821x_write_page, | ||||||
|  | +		.soft_reset     = genphy_soft_reset, | ||||||
|  |  	}, { | ||||||
|  |  		PHY_ID_MATCH_EXACT(0x001cc848), | ||||||
|  |  		.name           = "RTL8226B-CG_RTL8221B-CG 2.5Gbps PHY", | ||||||
|  | @@ -1045,6 +1048,7 @@ static struct phy_driver realtek_drvs[] | ||||||
|  |  		.resume         = rtlgen_resume, | ||||||
|  |  		.read_page      = rtl821x_read_page, | ||||||
|  |  		.write_page     = rtl821x_write_page, | ||||||
|  | +		.soft_reset     = genphy_soft_reset, | ||||||
|  |  	}, { | ||||||
|  |  		PHY_ID_MATCH_EXACT(0x001cc849), | ||||||
|  |  		.name           = "RTL8221B-VB-CG 2.5Gbps PHY", | ||||||
|  | @@ -1056,6 +1060,7 @@ static struct phy_driver realtek_drvs[] | ||||||
|  |  		.resume         = rtlgen_resume, | ||||||
|  |  		.read_page      = rtl821x_read_page, | ||||||
|  |  		.write_page     = rtl821x_write_page, | ||||||
|  | +		.soft_reset     = genphy_soft_reset, | ||||||
|  |  	}, { | ||||||
|  |  		PHY_ID_MATCH_EXACT(0x001cc84a), | ||||||
|  |  		.name           = "RTL8221B-VM-CG 2.5Gbps PHY", | ||||||
|  | @@ -1067,6 +1072,7 @@ static struct phy_driver realtek_drvs[] | ||||||
|  |  		.resume         = rtlgen_resume, | ||||||
|  |  		.read_page      = rtl821x_read_page, | ||||||
|  |  		.write_page     = rtl821x_write_page, | ||||||
|  | +		.soft_reset     = genphy_soft_reset, | ||||||
|  |  	}, { | ||||||
|  |  		PHY_ID_MATCH_EXACT(0x001cc961), | ||||||
|  |  		.name		= "RTL8366RB Gigabit Ethernet", | ||||||
		Reference in New Issue
	
	Block a user
	 Daniel Golle
					Daniel Golle