de2be0165c26e6c8d125583555a406f1ac8aa4fd
[openwrt/staging/xback.git] /
1 From eb90f876b7961d702d7fc549e14614860f531e60 Mon Sep 17 00:00:00 2001
2 From: Heiner Kallweit <hkallweit1@gmail.com>
3 Date: Thu, 31 Oct 2024 22:42:52 +0100
4 Subject: [PATCH] r8169: align RTL8125 EEE config with vendor driver
5
6 Align the EEE config for RTL8125A/RTL8125B with vendor driver r8125.
7 This should help to avoid compatibility issues.
8
9 Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
10 Link: https://patch.msgid.link/044c925e-8669-4b98-87df-95b4056f4f5f@gmail.com
11 Signed-off-by: Jakub Kicinski <kuba@kernel.org>
12 ---
13 .../net/ethernet/realtek/r8169_phy_config.c | 18 ++++++++++++------
14 1 file changed, 12 insertions(+), 6 deletions(-)
15
16 --- a/drivers/net/ethernet/realtek/r8169_phy_config.c
17 +++ b/drivers/net/ethernet/realtek/r8169_phy_config.c
18 @@ -89,19 +89,25 @@ static void rtl8168h_config_eee_phy(stru
19 phy_modify_paged(phydev, 0xa42, 0x14, 0x0000, 0x0080);
20 }
21
22 -static void rtl8125a_config_eee_phy(struct phy_device *phydev)
23 +static void rtl8125_common_config_eee_phy(struct phy_device *phydev)
24 {
25 - rtl8168h_config_eee_phy(phydev);
26 + phy_modify_paged(phydev, 0xa6d, 0x14, 0x0010, 0x0000);
27 + phy_modify_paged(phydev, 0xa42, 0x14, 0x0080, 0x0000);
28 + phy_modify_paged(phydev, 0xa4a, 0x11, 0x0200, 0x0000);
29 +}
30
31 +static void rtl8125a_config_eee_phy(struct phy_device *phydev)
32 +{
33 + rtl8168g_config_eee_phy(phydev);
34 + /* disable EEE at 2.5Gbps */
35 phy_modify_paged(phydev, 0xa6d, 0x12, 0x0001, 0x0000);
36 - phy_modify_paged(phydev, 0xa6d, 0x14, 0x0010, 0x0000);
37 + rtl8125_common_config_eee_phy(phydev);
38 }
39
40 static void rtl8125b_config_eee_phy(struct phy_device *phydev)
41 {
42 - phy_modify_paged(phydev, 0xa6d, 0x14, 0x0010, 0x0000);
43 - phy_modify_paged(phydev, 0xa42, 0x14, 0x0080, 0x0000);
44 - phy_modify_paged(phydev, 0xa4a, 0x11, 0x0200, 0x0000);
45 + rtl8168g_config_eee_phy(phydev);
46 + rtl8125_common_config_eee_phy(phydev);
47 }
48
49 static void rtl8169s_hw_phy_config(struct rtl8169_private *tp,