Skip to content

Commit 445ed20

Browse files
committed
sys-kernel/coreos-sources: enable XID 688 chip
Signed-off-by: Mathieu Tortuyaux <[email protected]>
1 parent e4f10b5 commit 445ed20

File tree

2 files changed

+150
-0
lines changed

2 files changed

+150
-0
lines changed

sdk_container/src/third_party/coreos-overlay/sys-kernel/coreos-sources/coreos-sources-6.12.34.ebuild

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,4 +43,5 @@ UNIPATCH_LIST="
4343
${PATCH_DIR}/z0006-mtd-disable-slram-and-phram-when-locked-down.patch \
4444
${PATCH_DIR}/z0007-arm64-add-kernel-config-option-to-lock-down-when.patch \
4545
${PATCH_DIR}/z0008-tools-hv-fix-cross-compilation-for-ARM64.patch \
46+
${PATCH_DIR}/z0009-f75d1fbe7809bc5ed134204b920fd9e2fc5db1df.patch \
4647
"
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,149 @@
1+
From f75d1fbe7809bc5ed134204b920fd9e2fc5db1df Mon Sep 17 00:00:00 2001
2+
From: Heiner Kallweit <[email protected]>
3+
Date: Thu, 24 Oct 2024 22:42:33 +0200
4+
Subject: [PATCH] r8169: add support for RTL8125D
5+
6+
This adds support for new chip version RTL8125D, which can be found on
7+
boards like Gigabyte X870E AORUS ELITE WIFI7. Firmware rtl8125d-1.fw
8+
for this chip version is available in linux-firmware already.
9+
10+
Signed-off-by: Heiner Kallweit <[email protected]>
11+
Reviewed-by: Simon Horman <[email protected]>
12+
Link: https://patch.msgid.link/[email protected]
13+
Signed-off-by: Jakub Kicinski <[email protected]>
14+
---
15+
drivers/net/ethernet/realtek/r8169.h | 1 +
16+
drivers/net/ethernet/realtek/r8169_main.c | 23 +++++++++++++------
17+
.../net/ethernet/realtek/r8169_phy_config.c | 10 ++++++++
18+
3 files changed, 27 insertions(+), 7 deletions(-)
19+
20+
diff --git a/drivers/net/ethernet/realtek/r8169.h b/drivers/net/ethernet/realtek/r8169.h
21+
index e2db944e6fa8bd..be4c9622618d84 100644
22+
--- a/drivers/net/ethernet/realtek/r8169.h
23+
+++ b/drivers/net/ethernet/realtek/r8169.h
24+
@@ -68,6 +68,7 @@ enum mac_version {
25+
/* support for RTL_GIGA_MAC_VER_60 has been removed */
26+
RTL_GIGA_MAC_VER_61,
27+
RTL_GIGA_MAC_VER_63,
28+
+ RTL_GIGA_MAC_VER_64,
29+
RTL_GIGA_MAC_VER_65,
30+
RTL_GIGA_MAC_VER_66,
31+
RTL_GIGA_MAC_NONE
32+
diff --git a/drivers/net/ethernet/realtek/r8169_main.c b/drivers/net/ethernet/realtek/r8169_main.c
33+
index 79e7b223bd5b52..3da0f6be7d8a14 100644
34+
--- a/drivers/net/ethernet/realtek/r8169_main.c
35+
+++ b/drivers/net/ethernet/realtek/r8169_main.c
36+
@@ -56,6 +56,7 @@
37+
#define FIRMWARE_8107E_2 "rtl_nic/rtl8107e-2.fw"
38+
#define FIRMWARE_8125A_3 "rtl_nic/rtl8125a-3.fw"
39+
#define FIRMWARE_8125B_2 "rtl_nic/rtl8125b-2.fw"
40+
+#define FIRMWARE_8125D_1 "rtl_nic/rtl8125d-1.fw"
41+
#define FIRMWARE_8126A_2 "rtl_nic/rtl8126a-2.fw"
42+
#define FIRMWARE_8126A_3 "rtl_nic/rtl8126a-3.fw"
43+
44+
@@ -139,6 +140,7 @@ static const struct {
45+
[RTL_GIGA_MAC_VER_61] = {"RTL8125A", FIRMWARE_8125A_3},
46+
/* reserve 62 for CFG_METHOD_4 in the vendor driver */
47+
[RTL_GIGA_MAC_VER_63] = {"RTL8125B", FIRMWARE_8125B_2},
48+
+ [RTL_GIGA_MAC_VER_64] = {"RTL8125D", FIRMWARE_8125D_1},
49+
[RTL_GIGA_MAC_VER_65] = {"RTL8126A", FIRMWARE_8126A_2},
50+
[RTL_GIGA_MAC_VER_66] = {"RTL8126A", FIRMWARE_8126A_3},
51+
};
52+
@@ -707,6 +709,7 @@ MODULE_FIRMWARE(FIRMWARE_8168FP_3);
53+
MODULE_FIRMWARE(FIRMWARE_8107E_2);
54+
MODULE_FIRMWARE(FIRMWARE_8125A_3);
55+
MODULE_FIRMWARE(FIRMWARE_8125B_2);
56+
+MODULE_FIRMWARE(FIRMWARE_8125D_1);
57+
MODULE_FIRMWARE(FIRMWARE_8126A_2);
58+
MODULE_FIRMWARE(FIRMWARE_8126A_3);
59+
60+
@@ -2079,10 +2082,7 @@ static void rtl_set_eee_txidle_timer(struct rtl8169_private *tp)
61+
tp->tx_lpi_timer = timer_val;
62+
r8168_mac_ocp_write(tp, 0xe048, timer_val);
63+
break;
64+
- case RTL_GIGA_MAC_VER_61:
65+
- case RTL_GIGA_MAC_VER_63:
66+
- case RTL_GIGA_MAC_VER_65:
67+
- case RTL_GIGA_MAC_VER_66:
68+
+ case RTL_GIGA_MAC_VER_61 ... RTL_GIGA_MAC_VER_66:
69+
tp->tx_lpi_timer = timer_val;
70+
RTL_W16(tp, EEE_TXIDLE_TIMER_8125, timer_val);
71+
break;
72+
@@ -2293,6 +2293,9 @@ static enum mac_version rtl8169_get_mac_version(u16 xid, bool gmii)
73+
{ 0x7cf, 0x64a, RTL_GIGA_MAC_VER_66 },
74+
{ 0x7cf, 0x649, RTL_GIGA_MAC_VER_65 },
75+
76+
+ /* 8125D family. */
77+
+ { 0x7cf, 0x688, RTL_GIGA_MAC_VER_64 },
78+
+
79+
/* 8125B family. */
80+
{ 0x7cf, 0x641, RTL_GIGA_MAC_VER_63 },
81+
82+
@@ -2558,9 +2561,7 @@ static void rtl_init_rxcfg(struct rtl8169_private *tp)
83+
case RTL_GIGA_MAC_VER_61:
84+
RTL_W32(tp, RxConfig, RX_FETCH_DFLT_8125 | RX_DMA_BURST);
85+
break;
86+
- case RTL_GIGA_MAC_VER_63:
87+
- case RTL_GIGA_MAC_VER_65:
88+
- case RTL_GIGA_MAC_VER_66:
89+
+ case RTL_GIGA_MAC_VER_63 ... RTL_GIGA_MAC_VER_66:
90+
RTL_W32(tp, RxConfig, RX_FETCH_DFLT_8125 | RX_DMA_BURST |
91+
RX_PAUSE_SLOT_ON);
92+
break;
93+
@@ -3872,6 +3873,12 @@ static void rtl_hw_start_8125b(struct rtl8169_private *tp)
94+
rtl_hw_start_8125_common(tp);
95+
}
96+
97+
+static void rtl_hw_start_8125d(struct rtl8169_private *tp)
98+
+{
99+
+ rtl_set_def_aspm_entry_latency(tp);
100+
+ rtl_hw_start_8125_common(tp);
101+
+}
102+
+
103+
static void rtl_hw_start_8126a(struct rtl8169_private *tp)
104+
{
105+
rtl_set_def_aspm_entry_latency(tp);
106+
@@ -3920,6 +3927,7 @@ static void rtl_hw_config(struct rtl8169_private *tp)
107+
[RTL_GIGA_MAC_VER_53] = rtl_hw_start_8117,
108+
[RTL_GIGA_MAC_VER_61] = rtl_hw_start_8125a_2,
109+
[RTL_GIGA_MAC_VER_63] = rtl_hw_start_8125b,
110+
+ [RTL_GIGA_MAC_VER_64] = rtl_hw_start_8125d,
111+
[RTL_GIGA_MAC_VER_65] = rtl_hw_start_8126a,
112+
[RTL_GIGA_MAC_VER_66] = rtl_hw_start_8126a,
113+
};
114+
@@ -3937,6 +3945,7 @@ static void rtl_hw_start_8125(struct rtl8169_private *tp)
115+
/* disable interrupt coalescing */
116+
switch (tp->mac_version) {
117+
case RTL_GIGA_MAC_VER_61:
118+
+ case RTL_GIGA_MAC_VER_64:
119+
for (i = 0xa00; i < 0xb00; i += 4)
120+
RTL_W32(tp, i, 0);
121+
break;
122+
diff --git a/drivers/net/ethernet/realtek/r8169_phy_config.c b/drivers/net/ethernet/realtek/r8169_phy_config.c
123+
index d504abba75652c..8739f4b42aaf76 100644
124+
--- a/drivers/net/ethernet/realtek/r8169_phy_config.c
125+
+++ b/drivers/net/ethernet/realtek/r8169_phy_config.c
126+
@@ -1103,6 +1103,15 @@ static void rtl8125b_hw_phy_config(struct rtl8169_private *tp,
127+
rtl8125b_config_eee_phy(phydev);
128+
}
129+
130+
+static void rtl8125d_hw_phy_config(struct rtl8169_private *tp,
131+
+ struct phy_device *phydev)
132+
+{
133+
+ r8169_apply_firmware(tp);
134+
+ rtl8125_legacy_force_mode(phydev);
135+
+ rtl8168g_disable_aldps(phydev);
136+
+ rtl8125b_config_eee_phy(phydev);
137+
+}
138+
+
139+
static void rtl8126a_hw_phy_config(struct rtl8169_private *tp,
140+
struct phy_device *phydev)
141+
{
142+
@@ -1159,6 +1168,7 @@ void r8169_hw_phy_config(struct rtl8169_private *tp, struct phy_device *phydev,
143+
[RTL_GIGA_MAC_VER_53] = rtl8117_hw_phy_config,
144+
[RTL_GIGA_MAC_VER_61] = rtl8125a_2_hw_phy_config,
145+
[RTL_GIGA_MAC_VER_63] = rtl8125b_hw_phy_config,
146+
+ [RTL_GIGA_MAC_VER_64] = rtl8125d_hw_phy_config,
147+
[RTL_GIGA_MAC_VER_65] = rtl8126a_hw_phy_config,
148+
[RTL_GIGA_MAC_VER_66] = rtl8126a_hw_phy_config,
149+
};

0 commit comments

Comments
 (0)