Skip to content

Commit f75d1fb

Browse files
hkallweitkuba-moo
authored andcommitted
r8169: add support for RTL8125D
This adds support for new chip version RTL8125D, which can be found on boards like Gigabyte X870E AORUS ELITE WIFI7. Firmware rtl8125d-1.fw for this chip version is available in linux-firmware already. Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com> Reviewed-by: Simon Horman <horms@kernel.org> Link: https://patch.msgid.link/d0306912-e88e-4c25-8b5d-545ae8834c0c@gmail.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
1 parent a27646c commit f75d1fb

3 files changed

Lines changed: 27 additions & 7 deletions

File tree

drivers/net/ethernet/realtek/r8169.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@ enum mac_version {
6868
/* support for RTL_GIGA_MAC_VER_60 has been removed */
6969
RTL_GIGA_MAC_VER_61,
7070
RTL_GIGA_MAC_VER_63,
71+
RTL_GIGA_MAC_VER_64,
7172
RTL_GIGA_MAC_VER_65,
7273
RTL_GIGA_MAC_VER_66,
7374
RTL_GIGA_MAC_NONE

drivers/net/ethernet/realtek/r8169_main.c

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@
5656
#define FIRMWARE_8107E_2 "rtl_nic/rtl8107e-2.fw"
5757
#define FIRMWARE_8125A_3 "rtl_nic/rtl8125a-3.fw"
5858
#define FIRMWARE_8125B_2 "rtl_nic/rtl8125b-2.fw"
59+
#define FIRMWARE_8125D_1 "rtl_nic/rtl8125d-1.fw"
5960
#define FIRMWARE_8126A_2 "rtl_nic/rtl8126a-2.fw"
6061
#define FIRMWARE_8126A_3 "rtl_nic/rtl8126a-3.fw"
6162

@@ -139,6 +140,7 @@ static const struct {
139140
[RTL_GIGA_MAC_VER_61] = {"RTL8125A", FIRMWARE_8125A_3},
140141
/* reserve 62 for CFG_METHOD_4 in the vendor driver */
141142
[RTL_GIGA_MAC_VER_63] = {"RTL8125B", FIRMWARE_8125B_2},
143+
[RTL_GIGA_MAC_VER_64] = {"RTL8125D", FIRMWARE_8125D_1},
142144
[RTL_GIGA_MAC_VER_65] = {"RTL8126A", FIRMWARE_8126A_2},
143145
[RTL_GIGA_MAC_VER_66] = {"RTL8126A", FIRMWARE_8126A_3},
144146
};
@@ -707,6 +709,7 @@ MODULE_FIRMWARE(FIRMWARE_8168FP_3);
707709
MODULE_FIRMWARE(FIRMWARE_8107E_2);
708710
MODULE_FIRMWARE(FIRMWARE_8125A_3);
709711
MODULE_FIRMWARE(FIRMWARE_8125B_2);
712+
MODULE_FIRMWARE(FIRMWARE_8125D_1);
710713
MODULE_FIRMWARE(FIRMWARE_8126A_2);
711714
MODULE_FIRMWARE(FIRMWARE_8126A_3);
712715

@@ -2079,10 +2082,7 @@ static void rtl_set_eee_txidle_timer(struct rtl8169_private *tp)
20792082
tp->tx_lpi_timer = timer_val;
20802083
r8168_mac_ocp_write(tp, 0xe048, timer_val);
20812084
break;
2082-
case RTL_GIGA_MAC_VER_61:
2083-
case RTL_GIGA_MAC_VER_63:
2084-
case RTL_GIGA_MAC_VER_65:
2085-
case RTL_GIGA_MAC_VER_66:
2085+
case RTL_GIGA_MAC_VER_61 ... RTL_GIGA_MAC_VER_66:
20862086
tp->tx_lpi_timer = timer_val;
20872087
RTL_W16(tp, EEE_TXIDLE_TIMER_8125, timer_val);
20882088
break;
@@ -2293,6 +2293,9 @@ static enum mac_version rtl8169_get_mac_version(u16 xid, bool gmii)
22932293
{ 0x7cf, 0x64a, RTL_GIGA_MAC_VER_66 },
22942294
{ 0x7cf, 0x649, RTL_GIGA_MAC_VER_65 },
22952295

2296+
/* 8125D family. */
2297+
{ 0x7cf, 0x688, RTL_GIGA_MAC_VER_64 },
2298+
22962299
/* 8125B family. */
22972300
{ 0x7cf, 0x641, RTL_GIGA_MAC_VER_63 },
22982301

@@ -2558,9 +2561,7 @@ static void rtl_init_rxcfg(struct rtl8169_private *tp)
25582561
case RTL_GIGA_MAC_VER_61:
25592562
RTL_W32(tp, RxConfig, RX_FETCH_DFLT_8125 | RX_DMA_BURST);
25602563
break;
2561-
case RTL_GIGA_MAC_VER_63:
2562-
case RTL_GIGA_MAC_VER_65:
2563-
case RTL_GIGA_MAC_VER_66:
2564+
case RTL_GIGA_MAC_VER_63 ... RTL_GIGA_MAC_VER_66:
25642565
RTL_W32(tp, RxConfig, RX_FETCH_DFLT_8125 | RX_DMA_BURST |
25652566
RX_PAUSE_SLOT_ON);
25662567
break;
@@ -3872,6 +3873,12 @@ static void rtl_hw_start_8125b(struct rtl8169_private *tp)
38723873
rtl_hw_start_8125_common(tp);
38733874
}
38743875

3876+
static void rtl_hw_start_8125d(struct rtl8169_private *tp)
3877+
{
3878+
rtl_set_def_aspm_entry_latency(tp);
3879+
rtl_hw_start_8125_common(tp);
3880+
}
3881+
38753882
static void rtl_hw_start_8126a(struct rtl8169_private *tp)
38763883
{
38773884
rtl_set_def_aspm_entry_latency(tp);
@@ -3920,6 +3927,7 @@ static void rtl_hw_config(struct rtl8169_private *tp)
39203927
[RTL_GIGA_MAC_VER_53] = rtl_hw_start_8117,
39213928
[RTL_GIGA_MAC_VER_61] = rtl_hw_start_8125a_2,
39223929
[RTL_GIGA_MAC_VER_63] = rtl_hw_start_8125b,
3930+
[RTL_GIGA_MAC_VER_64] = rtl_hw_start_8125d,
39233931
[RTL_GIGA_MAC_VER_65] = rtl_hw_start_8126a,
39243932
[RTL_GIGA_MAC_VER_66] = rtl_hw_start_8126a,
39253933
};
@@ -3937,6 +3945,7 @@ static void rtl_hw_start_8125(struct rtl8169_private *tp)
39373945
/* disable interrupt coalescing */
39383946
switch (tp->mac_version) {
39393947
case RTL_GIGA_MAC_VER_61:
3948+
case RTL_GIGA_MAC_VER_64:
39403949
for (i = 0xa00; i < 0xb00; i += 4)
39413950
RTL_W32(tp, i, 0);
39423951
break;

drivers/net/ethernet/realtek/r8169_phy_config.c

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1103,6 +1103,15 @@ static void rtl8125b_hw_phy_config(struct rtl8169_private *tp,
11031103
rtl8125b_config_eee_phy(phydev);
11041104
}
11051105

1106+
static void rtl8125d_hw_phy_config(struct rtl8169_private *tp,
1107+
struct phy_device *phydev)
1108+
{
1109+
r8169_apply_firmware(tp);
1110+
rtl8125_legacy_force_mode(phydev);
1111+
rtl8168g_disable_aldps(phydev);
1112+
rtl8125b_config_eee_phy(phydev);
1113+
}
1114+
11061115
static void rtl8126a_hw_phy_config(struct rtl8169_private *tp,
11071116
struct phy_device *phydev)
11081117
{
@@ -1159,6 +1168,7 @@ void r8169_hw_phy_config(struct rtl8169_private *tp, struct phy_device *phydev,
11591168
[RTL_GIGA_MAC_VER_53] = rtl8117_hw_phy_config,
11601169
[RTL_GIGA_MAC_VER_61] = rtl8125a_2_hw_phy_config,
11611170
[RTL_GIGA_MAC_VER_63] = rtl8125b_hw_phy_config,
1171+
[RTL_GIGA_MAC_VER_64] = rtl8125d_hw_phy_config,
11621172
[RTL_GIGA_MAC_VER_65] = rtl8126a_hw_phy_config,
11631173
[RTL_GIGA_MAC_VER_66] = rtl8126a_hw_phy_config,
11641174
};

0 commit comments

Comments
 (0)