From: Markus Stockhausen Date: Wed, 27 Aug 2025 17:51:55 +0000 (-0400) Subject: generic: fix c45 soft reset for RTL8221B X-Git-Url: http://git.ipfire.org/gitweb/?a=commitdiff_plain;h=refs%2Fpull%2F19843%2Fhead;p=thirdparty%2Fopenwrt.git generic: fix c45 soft reset for RTL8221B The addition of the soft_reset() function to the RTL8221B PHYs missed to take care of C22/C45 standalone PHY versions. Especially on RTL930x switch devices with these PHY the reset fails for the C45 operation mode. This comes from the fact that the mdio bus disables C22 read/writes when being set to C45. Upstream has gained a proper C45 reset function. Use it for the C45 PHY models. Fixes: 7e3284eef7f ("generic: use genphy_soft_reset for RealTek 2.5G PHYs") Signed-off-by: Markus Stockhausen Link: https://github.com/openwrt/openwrt/pull/19843 Signed-off-by: Hauke Mehrtens --- diff --git a/target/linux/generic/pending-6.12/720-01-net-phy-realtek-use-genphy_soft_reset-for-2.5G-PHYs.patch b/target/linux/generic/pending-6.12/720-01-net-phy-realtek-use-genphy_soft_reset-for-2.5G-PHYs.patch index abe7478a656..9bb5737b396 100644 --- a/target/linux/generic/pending-6.12/720-01-net-phy-realtek-use-genphy_soft_reset-for-2.5G-PHYs.patch +++ b/target/linux/generic/pending-6.12/720-01-net-phy-realtek-use-genphy_soft_reset-for-2.5G-PHYs.patch @@ -51,7 +51,7 @@ Signed-off-by: Daniel Golle }, { .match_phy_device = rtl8221b_vb_cg_c45_match_phy_device, .name = "RTL8221B-VB-CG 2.5Gbps PHY (C45)", -+ .soft_reset = genphy_soft_reset, ++ .soft_reset = rtl822x_c45_soft_reset, .probe = rtl822x_probe, .config_init = rtl822xb_config_init, .get_rate_matching = rtl822xb_get_rate_matching, @@ -67,7 +67,7 @@ Signed-off-by: Daniel Golle }, { .match_phy_device = rtl8221b_vn_cg_c45_match_phy_device, .name = "RTL8221B-VN-CG 2.5Gbps PHY (C45)", -+ .soft_reset = genphy_soft_reset, ++ .soft_reset = rtl822x_c45_soft_reset, .probe = rtl822x_probe, .config_init = rtl822xb_config_init, .get_rate_matching = rtl822xb_get_rate_matching, diff --git a/target/linux/generic/pending-6.12/720-06-net-phy-realtek-support-interrupt-of-RTL8221B.patch b/target/linux/generic/pending-6.12/720-06-net-phy-realtek-support-interrupt-of-RTL8221B.patch index bac46cbeef0..855ea41c8ce 100644 --- a/target/linux/generic/pending-6.12/720-06-net-phy-realtek-support-interrupt-of-RTL8221B.patch +++ b/target/linux/generic/pending-6.12/720-06-net-phy-realtek-support-interrupt-of-RTL8221B.patch @@ -79,7 +79,7 @@ Signed-off-by: Jianhui Zhao .name = "RTL8221B-VB-CG 2.5Gbps PHY (C45)", + .config_intr = rtl8221b_config_intr, + .handle_interrupt = rtl8221b_handle_interrupt, - .soft_reset = genphy_soft_reset, + .soft_reset = rtl822x_c45_soft_reset, .probe = rtl822x_probe, .config_init = rtl822xb_config_init, @@ -1800,6 +1849,8 @@ static struct phy_driver realtek_drvs[] @@ -97,6 +97,6 @@ Signed-off-by: Jianhui Zhao .name = "RTL8221B-VN-CG 2.5Gbps PHY (C45)", + .config_intr = rtl8221b_config_intr, + .handle_interrupt = rtl8221b_handle_interrupt, - .soft_reset = genphy_soft_reset, + .soft_reset = rtl822x_c45_soft_reset, .probe = rtl822x_probe, .config_init = rtl822xb_config_init, diff --git a/target/linux/generic/pending-6.12/720-08-net-phy-realtek-work-around-broken-serdes.patch b/target/linux/generic/pending-6.12/720-08-net-phy-realtek-work-around-broken-serdes.patch index ceb67c23792..e451d13bd8f 100644 --- a/target/linux/generic/pending-6.12/720-08-net-phy-realtek-work-around-broken-serdes.patch +++ b/target/linux/generic/pending-6.12/720-08-net-phy-realtek-work-around-broken-serdes.patch @@ -40,7 +40,7 @@ Signed-off-by: Daniel Golle { @@ -1842,7 +1858,7 @@ static struct phy_driver realtek_drvs[] .handle_interrupt = rtl8221b_handle_interrupt, - .soft_reset = genphy_soft_reset, + .soft_reset = rtl822x_c45_soft_reset, .probe = rtl822x_probe, - .config_init = rtl822xb_config_init, + .config_init = rtl822xb_config_init_war, @@ -49,7 +49,7 @@ Signed-off-by: Daniel Golle .config_aneg = rtl822x_c45_config_aneg, @@ -1872,7 +1888,7 @@ static struct phy_driver realtek_drvs[] .handle_interrupt = rtl8221b_handle_interrupt, - .soft_reset = genphy_soft_reset, + .soft_reset = rtl822x_c45_soft_reset, .probe = rtl822x_probe, - .config_init = rtl822xb_config_init, + .config_init = rtl822xb_config_init_war,