Skip to content

Commit 37cb596

Browse files
hkallweitgregkh
authored andcommitted
r8169: add support for RTL8125D
commit f75d1fb upstream. 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> Signed-off-by: Mathieu Tortuyaux <mtortuyaux@microsoft.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
1 parent 1f4b030 commit 37cb596

File tree

3 files changed

+27
-7
lines changed

3 files changed

+27
-7
lines changed

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
@@ -55,6 +55,7 @@
5555
#define FIRMWARE_8107E_2 "rtl_nic/rtl8107e-2.fw"
5656
#define FIRMWARE_8125A_3 "rtl_nic/rtl8125a-3.fw"
5757
#define FIRMWARE_8125B_2 "rtl_nic/rtl8125b-2.fw"
58+
#define FIRMWARE_8125D_1 "rtl_nic/rtl8125d-1.fw"
5859
#define FIRMWARE_8126A_2 "rtl_nic/rtl8126a-2.fw"
5960
#define FIRMWARE_8126A_3 "rtl_nic/rtl8126a-3.fw"
6061

@@ -138,6 +139,7 @@ static const struct {
138139
[RTL_GIGA_MAC_VER_61] = {"RTL8125A", FIRMWARE_8125A_3},
139140
/* reserve 62 for CFG_METHOD_4 in the vendor driver */
140141
[RTL_GIGA_MAC_VER_63] = {"RTL8125B", FIRMWARE_8125B_2},
142+
[RTL_GIGA_MAC_VER_64] = {"RTL8125D", FIRMWARE_8125D_1},
141143
[RTL_GIGA_MAC_VER_65] = {"RTL8126A", FIRMWARE_8126A_2},
142144
[RTL_GIGA_MAC_VER_66] = {"RTL8126A", FIRMWARE_8126A_3},
143145
};
@@ -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

@@ -2098,10 +2101,7 @@ static void rtl_set_eee_txidle_timer(struct rtl8169_private *tp)
20982101
tp->tx_lpi_timer = timer_val;
20992102
r8168_mac_ocp_write(tp, 0xe048, timer_val);
21002103
break;
2101-
case RTL_GIGA_MAC_VER_61:
2102-
case RTL_GIGA_MAC_VER_63:
2103-
case RTL_GIGA_MAC_VER_65:
2104-
case RTL_GIGA_MAC_VER_66:
2104+
case RTL_GIGA_MAC_VER_61 ... RTL_GIGA_MAC_VER_66:
21052105
tp->tx_lpi_timer = timer_val;
21062106
RTL_W16(tp, EEE_TXIDLE_TIMER_8125, timer_val);
21072107
break;
@@ -2233,6 +2233,9 @@ static enum mac_version rtl8169_get_mac_version(u16 xid, bool gmii)
22332233
{ 0x7cf, 0x64a, RTL_GIGA_MAC_VER_66 },
22342234
{ 0x7cf, 0x649, RTL_GIGA_MAC_VER_65 },
22352235

2236+
/* 8125D family. */
2237+
{ 0x7cf, 0x688, RTL_GIGA_MAC_VER_64 },
2238+
22362239
/* 8125B family. */
22372240
{ 0x7cf, 0x641, RTL_GIGA_MAC_VER_63 },
22382241

@@ -2500,9 +2503,7 @@ static void rtl_init_rxcfg(struct rtl8169_private *tp)
25002503
case RTL_GIGA_MAC_VER_61:
25012504
RTL_W32(tp, RxConfig, RX_FETCH_DFLT_8125 | RX_DMA_BURST);
25022505
break;
2503-
case RTL_GIGA_MAC_VER_63:
2504-
case RTL_GIGA_MAC_VER_65:
2505-
case RTL_GIGA_MAC_VER_66:
2506+
case RTL_GIGA_MAC_VER_63 ... RTL_GIGA_MAC_VER_66:
25062507
RTL_W32(tp, RxConfig, RX_FETCH_DFLT_8125 | RX_DMA_BURST |
25072508
RX_PAUSE_SLOT_ON);
25082509
break;
@@ -3840,6 +3841,12 @@ static void rtl_hw_start_8125b(struct rtl8169_private *tp)
38403841
rtl_hw_start_8125_common(tp);
38413842
}
38423843

3844+
static void rtl_hw_start_8125d(struct rtl8169_private *tp)
3845+
{
3846+
rtl_set_def_aspm_entry_latency(tp);
3847+
rtl_hw_start_8125_common(tp);
3848+
}
3849+
38433850
static void rtl_hw_start_8126a(struct rtl8169_private *tp)
38443851
{
38453852
rtl_disable_zrxdc_timeout(tp);
@@ -3889,6 +3896,7 @@ static void rtl_hw_config(struct rtl8169_private *tp)
38893896
[RTL_GIGA_MAC_VER_53] = rtl_hw_start_8117,
38903897
[RTL_GIGA_MAC_VER_61] = rtl_hw_start_8125a_2,
38913898
[RTL_GIGA_MAC_VER_63] = rtl_hw_start_8125b,
3899+
[RTL_GIGA_MAC_VER_64] = rtl_hw_start_8125d,
38923900
[RTL_GIGA_MAC_VER_65] = rtl_hw_start_8126a,
38933901
[RTL_GIGA_MAC_VER_66] = rtl_hw_start_8126a,
38943902
};
@@ -3906,6 +3914,7 @@ static void rtl_hw_start_8125(struct rtl8169_private *tp)
39063914
/* disable interrupt coalescing */
39073915
switch (tp->mac_version) {
39083916
case RTL_GIGA_MAC_VER_61:
3917+
case RTL_GIGA_MAC_VER_64:
39093918
for (i = 0xa00; i < 0xb00; i += 4)
39103919
RTL_W32(tp, i, 0);
39113920
break;

drivers/net/ethernet/realtek/r8169_phy_config.c

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

1107+
static void rtl8125d_hw_phy_config(struct rtl8169_private *tp,
1108+
struct phy_device *phydev)
1109+
{
1110+
r8169_apply_firmware(tp);
1111+
rtl8125_legacy_force_mode(phydev);
1112+
rtl8168g_disable_aldps(phydev);
1113+
rtl8125b_config_eee_phy(phydev);
1114+
}
1115+
11071116
static void rtl8126a_hw_phy_config(struct rtl8169_private *tp,
11081117
struct phy_device *phydev)
11091118
{
@@ -1160,6 +1169,7 @@ void r8169_hw_phy_config(struct rtl8169_private *tp, struct phy_device *phydev,
11601169
[RTL_GIGA_MAC_VER_53] = rtl8117_hw_phy_config,
11611170
[RTL_GIGA_MAC_VER_61] = rtl8125a_2_hw_phy_config,
11621171
[RTL_GIGA_MAC_VER_63] = rtl8125b_hw_phy_config,
1172+
[RTL_GIGA_MAC_VER_64] = rtl8125d_hw_phy_config,
11631173
[RTL_GIGA_MAC_VER_65] = rtl8126a_hw_phy_config,
11641174
[RTL_GIGA_MAC_VER_66] = rtl8126a_hw_phy_config,
11651175
};

0 commit comments

Comments
 (0)