generic: use genphy_soft_reset for RealTek 2.5G PHYs
authorDaniel Golle <daniel@makrotopia.org>
Sun, 2 Apr 2023 22:20:28 +0000 (01:20 +0300)
committerDaniel Golle <daniel@makrotopia.org>
Mon, 3 Apr 2023 01:32:28 +0000 (02:32 +0100)
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>
target/linux/generic/pending-5.15/724-net-phy-realtek-use-genphy_soft_reset-for-2.5G-PHYs.patch [new file with mode: 0644]

diff --git a/target/linux/generic/pending-5.15/724-net-phy-realtek-use-genphy_soft_reset-for-2.5G-PHYs.patch b/target/linux/generic/pending-5.15/724-net-phy-realtek-use-genphy_soft_reset-for-2.5G-PHYs.patch
new file mode 100644 (file)
index 0000000..c803278
--- /dev/null
@@ -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",