* [PATCH v3 01/12] net/r8169: fix crash in RTL8168FP init
2026-02-12 5:58 [PATCH v3 00/12] net/r8169: update driver with new HW support and fixes Howard Wang
@ 2026-02-12 5:58 ` Howard Wang
2026-02-12 5:58 ` [PATCH v3 02/12] net/r8169: optimize Rx descriptor fetch number Howard Wang
` (11 subsequent siblings)
12 siblings, 0 replies; 15+ messages in thread
From: Howard Wang @ 2026-02-12 5:58 UTC (permalink / raw)
To: dev; +Cc: pro_nic_dpdk, Howard Wang
The rtl8168fp_ops structure was missing the hw_phy_mcu_config function
pointer, causing a NULL pointer dereference during device initialization
when the driver attempts to configure the PHY microcontroller.
Add hw_phy_mcu_config_8168fp() as a no-op function since the RTL8168FP
does not require PHY MCU configuration. This matches the pattern used
by other chip variants that don't need PHY MCU updates.
Fixes: d9ee71b5f1bc ("net/r8169: support RTL8168 series")
Signed-off-by: Howard Wang <howard_wang@realsil.com.cn>
---
drivers/net/r8169/base/rtl8168fp.c | 1 +
drivers/net/r8169/base/rtl8168fp.h | 1 +
drivers/net/r8169/base/rtl8168fp_mcu.c | 6 ++++++
3 files changed, 8 insertions(+)
diff --git a/drivers/net/r8169/base/rtl8168fp.c b/drivers/net/r8169/base/rtl8168fp.c
index b8a058bbd9..9aa3cabeb8 100644
--- a/drivers/net/r8169/base/rtl8168fp.c
+++ b/drivers/net/r8169/base/rtl8168fp.c
@@ -192,4 +192,5 @@ const struct rtl_hw_ops rtl8168fp_ops = {
.hw_ephy_config = hw_ephy_config_8168fp,
.hw_phy_config = hw_phy_config_8168fp,
.hw_mac_mcu_config = hw_mac_mcu_config_8168fp,
+ .hw_phy_mcu_config = hw_phy_mcu_config_8168fp,
};
diff --git a/drivers/net/r8169/base/rtl8168fp.h b/drivers/net/r8169/base/rtl8168fp.h
index 4613fe9a98..194f14af4e 100644
--- a/drivers/net/r8169/base/rtl8168fp.h
+++ b/drivers/net/r8169/base/rtl8168fp.h
@@ -10,5 +10,6 @@
extern const struct rtl_hw_ops rtl8168fp_ops;
void hw_mac_mcu_config_8168fp(struct rtl_hw *hw);
+void hw_phy_mcu_config_8168fp(struct rtl_hw *hw __rte_unused);
#endif
diff --git a/drivers/net/r8169/base/rtl8168fp_mcu.c b/drivers/net/r8169/base/rtl8168fp_mcu.c
index 839dcfde61..7757e5f448 100644
--- a/drivers/net/r8169/base/rtl8168fp_mcu.c
+++ b/drivers/net/r8169/base/rtl8168fp_mcu.c
@@ -268,3 +268,9 @@ hw_mac_mcu_config_8168fp(struct rtl_hw *hw)
break;
}
}
+
+void
+hw_phy_mcu_config_8168fp(struct rtl_hw *hw __rte_unused)
+{
+ /* Do nothing */
+}
--
2.34.1
^ permalink raw reply related [flat|nested] 15+ messages in thread* [PATCH v3 02/12] net/r8169: optimize Rx descriptor fetch number
2026-02-12 5:58 [PATCH v3 00/12] net/r8169: update driver with new HW support and fixes Howard Wang
2026-02-12 5:58 ` [PATCH v3 01/12] net/r8169: fix crash in RTL8168FP init Howard Wang
@ 2026-02-12 5:58 ` Howard Wang
2026-02-12 5:58 ` [PATCH v3 03/12] net/r8169: add support for RTL8168KD Howard Wang
` (10 subsequent siblings)
12 siblings, 0 replies; 15+ messages in thread
From: Howard Wang @ 2026-02-12 5:58 UTC (permalink / raw)
To: dev; +Cc: pro_nic_dpdk, Howard Wang
Update the Rx descriptor fetch number to optimize Rx performance for
RTL8126 and RTL8127.
This parameter controls the number of Rx descriptors fetched in a
single batch. Based on hardware characteristics, the values are tuned
as follows:
- RTL8126: 20
- RTL8127: 12
Signed-off-by: Howard Wang <howard_wang@realsil.com.cn>
---
drivers/net/r8169/base/rtl8126a.c | 4 ++--
drivers/net/r8169/base/rtl8127.c | 2 +-
drivers/net/r8169/r8169_compat.h | 2 ++
3 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/drivers/net/r8169/base/rtl8126a.c b/drivers/net/r8169/base/rtl8126a.c
index 047ef83587..58b1cc2664 100644
--- a/drivers/net/r8169/base/rtl8126a.c
+++ b/drivers/net/r8169/base/rtl8126a.c
@@ -14,12 +14,12 @@ hw_init_rxcfg_8126a(struct rtl_hw *hw)
{
switch (hw->mcfg) {
case CFG_METHOD_69:
- RTL_W32(hw, RxConfig, Rx_Fetch_Number_8 | RxCfg_pause_slot_en |
+ RTL_W32(hw, RxConfig, Rx_Fetch_Number_20 | RxCfg_pause_slot_en |
(RX_DMA_BURST_512 << RxCfgDMAShift));
break;
case CFG_METHOD_70:
case CFG_METHOD_71:
- RTL_W32(hw, RxConfig, Rx_Fetch_Number_8 | Rx_Close_Multiple |
+ RTL_W32(hw, RxConfig, Rx_Fetch_Number_20 | Rx_Close_Multiple |
RxCfg_pause_slot_en | (RX_DMA_BURST_512 << RxCfgDMAShift));
break;
}
diff --git a/drivers/net/r8169/base/rtl8127.c b/drivers/net/r8169/base/rtl8127.c
index 9e79255e3c..26c2cfd25b 100644
--- a/drivers/net/r8169/base/rtl8127.c
+++ b/drivers/net/r8169/base/rtl8127.c
@@ -14,7 +14,7 @@ hw_init_rxcfg_8127(struct rtl_hw *hw)
{
switch (hw->mcfg) {
case CFG_METHOD_91:
- RTL_W32(hw, RxConfig, Rx_Fetch_Number_8 | Rx_Close_Multiple |
+ RTL_W32(hw, RxConfig, Rx_Fetch_Number_12 | Rx_Close_Multiple |
RxCfg_pause_slot_en | (RX_DMA_BURST_512 << RxCfgDMAShift));
break;
}
diff --git a/drivers/net/r8169/r8169_compat.h b/drivers/net/r8169/r8169_compat.h
index 9163c7f59f..ab6a984a54 100644
--- a/drivers/net/r8169/r8169_compat.h
+++ b/drivers/net/r8169/r8169_compat.h
@@ -563,6 +563,8 @@ enum RTL_chipset_name {
#define TX_DMA_BURST_16 0
#define InterFrameGap 0x03 /* 3 means InterFrameGap = the shortest one */
#define Rx_Fetch_Number_8 (1 << 30)
+#define Rx_Fetch_Number_12 (BIT_30 | BIT_29)
+#define Rx_Fetch_Number_20 (BIT_31 | BIT_29)
#define Rx_Close_Multiple (1 << 21)
#define RxEarly_off_V2 (1 << 11)
#define Rx_Single_fetch_V2 (1 << 14)
--
2.34.1
^ permalink raw reply related [flat|nested] 15+ messages in thread* [PATCH v3 03/12] net/r8169: add support for RTL8168KD
2026-02-12 5:58 [PATCH v3 00/12] net/r8169: update driver with new HW support and fixes Howard Wang
2026-02-12 5:58 ` [PATCH v3 01/12] net/r8169: fix crash in RTL8168FP init Howard Wang
2026-02-12 5:58 ` [PATCH v3 02/12] net/r8169: optimize Rx descriptor fetch number Howard Wang
@ 2026-02-12 5:58 ` Howard Wang
2026-02-12 5:58 ` [PATCH v3 04/12] net/r8169: update hardware configurations for 8127 Howard Wang
` (9 subsequent siblings)
12 siblings, 0 replies; 15+ messages in thread
From: Howard Wang @ 2026-02-12 5:58 UTC (permalink / raw)
To: dev; +Cc: pro_nic_dpdk, Howard Wang
This chip supports network speeds up to 1Gbps.
Signed-off-by: Howard Wang <howard_wang@realsil.com.cn>
---
drivers/net/r8169/base/rtl8125d.c | 15 +++-
drivers/net/r8169/base/rtl8125d_mcu.c | 112 +++++++++++++++++++++++++-
drivers/net/r8169/base/rtl8125d_mcu.h | 1 +
drivers/net/r8169/r8169_compat.h | 3 +-
drivers/net/r8169/r8169_hw.c | 64 ++++++++-------
drivers/net/r8169/r8169_phy.c | 18 ++---
6 files changed, 168 insertions(+), 45 deletions(-)
diff --git a/drivers/net/r8169/base/rtl8125d.c b/drivers/net/r8169/base/rtl8125d.c
index 55bfdbcf21..29be122e6b 100644
--- a/drivers/net/r8169/base/rtl8125d.c
+++ b/drivers/net/r8169/base/rtl8125d.c
@@ -7,7 +7,10 @@
#include "../r8169_phy.h"
#include "rtl8125d_mcu.h"
-/* For RTL8125D, CFG_METHOD_56,57 */
+/*
+ * For RTL8125D, CFG_METHOD_56,57
+ * For RTL8168KD, CFG_METHOD_59
+ */
static void
hw_init_rxcfg_8125d(struct rtl_hw *hw)
@@ -22,6 +25,7 @@ hw_ephy_config_8125d(struct rtl_hw *hw)
switch (hw->mcfg) {
case CFG_METHOD_56:
case CFG_METHOD_57:
+ case CFG_METHOD_59:
/* Nothing to do */
break;
}
@@ -264,6 +268,7 @@ hw_phy_config_8125d(struct rtl_hw *hw)
rtl_hw_phy_config_8125d_1(hw);
break;
case CFG_METHOD_57:
+ case CFG_METHOD_59:
rtl_hw_phy_config_8125d_2(hw);
break;
}
@@ -277,10 +282,17 @@ hw_mac_mcu_config_8125d(struct rtl_hw *hw)
rtl_hw_disable_mac_mcu_bps(hw);
+ /* Get H/W mac mcu patch code version */
+ hw->hw_mcu_patch_code_ver = rtl_get_hw_mcu_patch_code_ver(hw);
+
switch (hw->mcfg) {
case CFG_METHOD_56:
rtl_set_mac_mcu_8125d_1(hw);
break;
+ case CFG_METHOD_57:
+ case CFG_METHOD_59:
+ rtl_set_mac_mcu_8125d_2(hw);
+ break;
}
}
@@ -292,6 +304,7 @@ hw_phy_mcu_config_8125d(struct rtl_hw *hw)
rtl_set_phy_mcu_8125d_1(hw);
break;
case CFG_METHOD_57:
+ case CFG_METHOD_59:
rtl_set_phy_mcu_8125d_2(hw);
break;
}
diff --git a/drivers/net/r8169/base/rtl8125d_mcu.c b/drivers/net/r8169/base/rtl8125d_mcu.c
index 2f6d1df584..c99681ad33 100644
--- a/drivers/net/r8169/base/rtl8125d_mcu.c
+++ b/drivers/net/r8169/base/rtl8125d_mcu.c
@@ -7,7 +7,10 @@
#include "../r8169_phy.h"
#include "rtl8125d_mcu.h"
-/* For RTL8125D, CFG_METHOD_56,57 */
+/*
+ * For RTL8125D, CFG_METHOD_56,57
+ * For RTL8168KD, CFG_METHOD_59
+ */
/* ------------------------------------MAC 8125D------------------------------------- */
@@ -110,6 +113,113 @@ rtl_set_mac_mcu_8125d_1(struct rtl_hw *hw)
rtl_mac_ocp_write(hw, 0xFC48, 0x0001);
}
+void
+rtl_set_mac_mcu_8125d_2(struct rtl_hw *hw)
+{
+ u16 entry_cnt;
+ static const u16 mcu_patch_code[] = {
+ 0xE010, 0xE014, 0xE016, 0xE018, 0xE01A, 0xE01C, 0xE01E, 0xE020, 0xE022,
+ 0xE024, 0xE026, 0xE028, 0xE02A, 0xE02C, 0xE02E, 0xE030, 0xC104, 0xC202,
+ 0xBA00, 0x2384, 0xD116, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000,
+ 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000,
+ 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000,
+ 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000,
+ 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000,
+ 0xC602, 0xBE00, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6938,
+ 0x0A19, 0x030E, 0x0B2F
+ };
+
+ entry_cnt = ARRAY_SIZE(mcu_patch_code);
+
+ /* Get BIN mac mcu patch code version */
+ hw->bin_mcu_patch_code_ver = rtl_get_bin_mcu_patch_code_ver(mcu_patch_code,
+ entry_cnt);
+
+ if (hw->hw_mcu_patch_code_ver != hw->bin_mcu_patch_code_ver)
+ rtl_write_mac_mcu_ram_code(hw, mcu_patch_code, entry_cnt);
+
+ rtl_mac_ocp_write(hw, 0xFC26, 0x8000);
+ rtl_mac_ocp_write(hw, 0xFC28, 0x2382);
+ rtl_mac_ocp_write(hw, 0xFC48, 0x0001);
+}
+
/* ------------------------------------PHY 8125D--------------------------------------- */
static const u16 phy_mcu_ram_code_8125d_1_1[] = {
diff --git a/drivers/net/r8169/base/rtl8125d_mcu.h b/drivers/net/r8169/base/rtl8125d_mcu.h
index 163e0e8123..82b70e5b53 100644
--- a/drivers/net/r8169/base/rtl8125d_mcu.h
+++ b/drivers/net/r8169/base/rtl8125d_mcu.h
@@ -6,6 +6,7 @@
#define RTL8125D_MCU_H
void rtl_set_mac_mcu_8125d_1(struct rtl_hw *hw);
+void rtl_set_mac_mcu_8125d_2(struct rtl_hw *hw);
void rtl_set_phy_mcu_8125d_1(struct rtl_hw *hw);
void rtl_set_phy_mcu_8125d_2(struct rtl_hw *hw);
diff --git a/drivers/net/r8169/r8169_compat.h b/drivers/net/r8169/r8169_compat.h
index ab6a984a54..d2d928cdd7 100644
--- a/drivers/net/r8169/r8169_compat.h
+++ b/drivers/net/r8169/r8169_compat.h
@@ -105,7 +105,7 @@ enum mcfg {
CFG_METHOD_69,
CFG_METHOD_70,
CFG_METHOD_71,
- CFG_METHOD_91,
+ CFG_METHOD_91 = 91,
CFG_METHOD_MAX,
CFG_METHOD_DEFAULT = 0xFF
};
@@ -525,6 +525,7 @@ enum RTL_chipset_name {
RTL8125BP,
RTL8125D,
RTL8125CP,
+ RTL8168KD,
RTL8126A,
RTL8168EP,
RTL8168FP,
diff --git a/drivers/net/r8169/r8169_hw.c b/drivers/net/r8169/r8169_hw.c
index e1521f5f9d..32c370deba 100644
--- a/drivers/net/r8169/r8169_hw.c
+++ b/drivers/net/r8169/r8169_hw.c
@@ -630,6 +630,7 @@ rtl_stop_all_request(struct rtl_hw *hw)
case CFG_METHOD_56:
case CFG_METHOD_57:
case CFG_METHOD_58:
+ case CFG_METHOD_59:
case CFG_METHOD_69:
case CFG_METHOD_70:
case CFG_METHOD_71:
@@ -687,6 +688,7 @@ rtl_wait_txrx_fifo_empty(struct rtl_hw *hw)
case CFG_METHOD_56:
case CFG_METHOD_57:
case CFG_METHOD_58:
+ case CFG_METHOD_59:
case CFG_METHOD_69:
case CFG_METHOD_70:
case CFG_METHOD_71:
@@ -924,6 +926,7 @@ rtl8125_set_rx_desc_type(struct rtl_hw *hw)
case CFG_METHOD_56:
case CFG_METHOD_57:
case CFG_METHOD_58:
+ case CFG_METHOD_59:
RTL_W8(hw, 0xD8, RTL_R8(hw, 0xD8) & ~EnableRxDescV4_0);
break;
case CFG_METHOD_69:
@@ -1044,8 +1047,11 @@ rtl8125_hw_config(struct rtl_hw *hw)
rtl_oob_mutex_lock(hw);
- /* MAC_PWRDWN_CR0 */
- rtl_mac_ocp_write(hw, 0xE0C0, 0x4000);
+ if (hw->mcfg == CFG_METHOD_56 || hw->mcfg == CFG_METHOD_57 ||
+ hw->mcfg == CFG_METHOD_59)
+ rtl_mac_ocp_write(hw, 0xE0C0, 0x4403);
+ else
+ rtl_mac_ocp_write(hw, 0xE0C0, 0x4000);
rtl_set_mac_ocp_bit(hw, 0xE052, (BIT_6 | BIT_5));
rtl_clear_mac_ocp_bit(hw, 0xE052, (BIT_3 | BIT_7));
@@ -1065,10 +1071,15 @@ rtl8125_hw_config(struct rtl_hw *hw)
mac_ocp_data |= 0x45F;
rtl_mac_ocp_write(hw, 0xD430, mac_ocp_data);
- if (!hw->DASH)
- RTL_W8(hw, 0xD0, RTL_R8(hw, 0xD0) | BIT_6 | BIT_7);
- else
- RTL_W8(hw, 0xD0, RTL_R8(hw, 0xD0) & ~(BIT_6 | BIT_7));
+ if (hw->DASH) {
+ RTL_W8(hw, 0xD0, RTL_R8(hw, 0xD0) & ~BIT_6);
+ RTL_W8(hw, 0xF2, RTL_R8(hw, 0xF2) & ~BIT_6);
+ RTL_W8(hw, 0xD0, RTL_R8(hw, 0xD0) & ~BIT_7);
+ } else {
+ RTL_W8(hw, 0xD0, RTL_R8(hw, 0xD0) | BIT_6);
+ RTL_W8(hw, 0xF2, RTL_R8(hw, 0xF2) | BIT_6);
+ RTL_W8(hw, 0xD0, RTL_R8(hw, 0xD0) | BIT_7);
+ }
if (hw->mcfg == CFG_METHOD_48 || hw->mcfg == CFG_METHOD_49 ||
hw->mcfg == CFG_METHOD_52)
@@ -1243,9 +1254,10 @@ rtl_set_hw_ops(struct rtl_hw *hw)
case CFG_METHOD_55:
hw->hw_ops = rtl8125bp_ops;
return 0;
- /* 8125D */
+ /* 8125D and 8168KD */
case CFG_METHOD_56:
case CFG_METHOD_57:
+ case CFG_METHOD_59:
hw->hw_ops = rtl8125d_ops;
return 0;
/* 8125CP */
@@ -1538,6 +1550,9 @@ rtl_init_software_variable(struct rtl_hw *hw)
case CFG_METHOD_58:
hw->chipset_name = RTL8125CP;
break;
+ case CFG_METHOD_59:
+ hw->chipset_name = RTL8168KD;
+ break;
case CFG_METHOD_69:
case CFG_METHOD_70:
case CFG_METHOD_71:
@@ -1688,6 +1703,7 @@ rtl_init_software_variable(struct rtl_hw *hw)
case CFG_METHOD_56:
case CFG_METHOD_57:
case CFG_METHOD_58:
+ case CFG_METHOD_59:
case CFG_METHOD_69:
case CFG_METHOD_70:
case CFG_METHOD_71:
@@ -1710,6 +1726,7 @@ rtl_init_software_variable(struct rtl_hw *hw)
case CFG_METHOD_56:
case CFG_METHOD_57:
case CFG_METHOD_58:
+ case CFG_METHOD_59:
case CFG_METHOD_91:
hw->HwSuppTxNoCloseVer = 6;
break;
@@ -1801,6 +1818,7 @@ rtl_init_software_variable(struct rtl_hw *hw)
hw->sw_ram_code_ver = NIC_RAMCODE_VERSION_CFG_METHOD_56;
break;
case CFG_METHOD_57:
+ case CFG_METHOD_59:
hw->sw_ram_code_ver = NIC_RAMCODE_VERSION_CFG_METHOD_57;
break;
case CFG_METHOD_58:
@@ -1859,6 +1877,7 @@ rtl_init_software_variable(struct rtl_hw *hw)
case CFG_METHOD_56:
case CFG_METHOD_57:
case CFG_METHOD_58:
+ case CFG_METHOD_59:
case CFG_METHOD_91:
hw->HwSuppIntMitiVer = 6;
break;
@@ -1902,37 +1921,18 @@ rtl_exit_realwow(struct rtl_hw *hw)
u32 csi_tmp;
/* Disable realwow function */
- switch (hw->mcfg) {
- case CFG_METHOD_21:
- case CFG_METHOD_22:
+ if (rtl_is_8125(hw)) {
+ rtl_mac_ocp_write(hw, 0xC0BC, 0x00FF);
+ } else if (hw->mcfg == CFG_METHOD_21 || hw->mcfg == CFG_METHOD_22) {
RTL_W32(hw, MACOCP, 0x605E0000);
RTL_W32(hw, MACOCP, (0xE05E << 16) |
(RTL_R32(hw, MACOCP) & 0xFFFE));
RTL_W32(hw, MACOCP, 0xE9720000);
RTL_W32(hw, MACOCP, 0xF2140010);
- break;
- case CFG_METHOD_26:
+ } else if (hw->mcfg == CFG_METHOD_26) {
RTL_W32(hw, MACOCP, 0xE05E00FF);
RTL_W32(hw, MACOCP, 0xE9720000);
rtl_mac_ocp_write(hw, 0xE428, 0x0010);
- break;
- case CFG_METHOD_48:
- case CFG_METHOD_49:
- case CFG_METHOD_50:
- case CFG_METHOD_51:
- case CFG_METHOD_52:
- case CFG_METHOD_53:
- case CFG_METHOD_54:
- case CFG_METHOD_55:
- case CFG_METHOD_56:
- case CFG_METHOD_57:
- case CFG_METHOD_58:
- case CFG_METHOD_69:
- case CFG_METHOD_70:
- case CFG_METHOD_71:
- case CFG_METHOD_91:
- rtl_mac_ocp_write(hw, 0xC0BC, 0x00FF);
- break;
}
switch (hw->mcfg) {
@@ -2059,7 +2059,7 @@ rtl_disable_ocp_phy_power_saving(struct rtl_hw *hw)
rtl_clear_phy_mcu_patch_request(hw);
}
} else if (hw->mcfg == CFG_METHOD_48 || hw->mcfg == CFG_METHOD_49 ||
- hw->mcfg == CFG_METHOD_52){
+ hw->mcfg == CFG_METHOD_52) {
val = rtl_mdio_direct_read_phy_ocp(hw, 0xC416);
if (val != 0x0050) {
rtl_set_phy_mcu_patch_request(hw);
@@ -2400,6 +2400,8 @@ rtl_get_mac_version(struct rtl_hw *hw, struct rte_pci_device *pci_dev)
hw->mcfg = CFG_METHOD_52;
else if (hw->mcfg == CFG_METHOD_51)
hw->mcfg = CFG_METHOD_53;
+ else if (hw->mcfg == CFG_METHOD_57)
+ hw->mcfg = CFG_METHOD_59;
}
}
diff --git a/drivers/net/r8169/r8169_phy.c b/drivers/net/r8169/r8169_phy.c
index 50c24d1504..1239319da5 100644
--- a/drivers/net/r8169/r8169_phy.c
+++ b/drivers/net/r8169/r8169_phy.c
@@ -558,10 +558,6 @@ rtl_powerdown_pll(struct rtl_hw *hw)
if (hw->mcfg >= CFG_METHOD_21 && hw->mcfg <= CFG_METHOD_36) {
RTL_W8(hw, 0xD0, RTL_R8(hw, 0xD0) & ~BIT_6);
RTL_W8(hw, 0xF2, RTL_R8(hw, 0xF2) & ~BIT_6);
- } else if ((hw->mcfg >= CFG_METHOD_48 && hw->mcfg <= CFG_METHOD_58) ||
- (hw->mcfg >= CFG_METHOD_69 && hw->mcfg <= CFG_METHOD_71) ||
- hw->mcfg == CFG_METHOD_91) {
- RTL_W8(hw, 0xF2, RTL_R8(hw, 0xF2) & ~BIT_6);
}
}
@@ -893,17 +889,14 @@ rtl_is_adv_eee_enabled(struct rtl_hw *hw)
{
bool enabled = false;
- if (hw->mcfg >= CFG_METHOD_25 && hw->mcfg <= CFG_METHOD_36) {
+ if (rtl_is_8125(hw)) {
+ if (rtl_mdio_direct_read_phy_ocp(hw, 0xA430) & BIT_15)
+ enabled = true;
+ } else if (hw->mcfg >= CFG_METHOD_25 && hw->mcfg <= CFG_METHOD_36) {
rtl_mdio_write(hw, 0x1F, 0x0A43);
if (rtl_mdio_read(hw, 0x10) & BIT_15)
enabled = true;
rtl_mdio_write(hw, 0x1F, 0x0000);
- } else if ((hw->mcfg >= CFG_METHOD_48 && hw->mcfg <= CFG_METHOD_55) ||
- hw->mcfg == CFG_METHOD_58 || hw->mcfg == CFG_METHOD_69 ||
- hw->mcfg == CFG_METHOD_70 || hw->mcfg == CFG_METHOD_71 ||
- hw->mcfg == CFG_METHOD_91){
- if (rtl_mdio_direct_read_phy_ocp(hw, 0xA430) & BIT_15)
- enabled = true;
}
return enabled;
@@ -982,6 +975,7 @@ _rtl_disable_adv_eee(struct rtl_hw *hw)
case CFG_METHOD_56:
case CFG_METHOD_57:
case CFG_METHOD_58:
+ case CFG_METHOD_59:
case CFG_METHOD_69:
case CFG_METHOD_70:
case CFG_METHOD_71:
@@ -1068,6 +1062,7 @@ rtl_disable_eee(struct rtl_hw *hw)
case CFG_METHOD_56:
case CFG_METHOD_57:
case CFG_METHOD_58:
+ case CFG_METHOD_59:
rtl_clear_mac_ocp_bit(hw, 0xE040, (BIT_1 | BIT_0));
rtl_set_eth_phy_ocp_bit(hw, 0xA432, BIT_4);
@@ -1232,6 +1227,7 @@ rtl_set_speed_xmii(struct rtl_hw *hw, u8 autoneg, u32 speed, u8 duplex, u64 adv)
case CFG_METHOD_56:
case CFG_METHOD_57:
case CFG_METHOD_58:
+ case CFG_METHOD_59:
mask |= BIT_0;
rtl_clear_eth_phy_ocp_bit(hw, 0xA428, BIT_9);
rtl_clear_eth_phy_ocp_bit(hw, 0xA5EA, mask);
--
2.34.1
^ permalink raw reply related [flat|nested] 15+ messages in thread* [PATCH v3 04/12] net/r8169: update hardware configurations for 8127
2026-02-12 5:58 [PATCH v3 00/12] net/r8169: update driver with new HW support and fixes Howard Wang
` (2 preceding siblings ...)
2026-02-12 5:58 ` [PATCH v3 03/12] net/r8169: add support for RTL8168KD Howard Wang
@ 2026-02-12 5:58 ` Howard Wang
2026-02-12 5:58 ` [PATCH v3 05/12] net/r8169: adjust jumbo frame size limit for non-1G cards Howard Wang
` (8 subsequent siblings)
12 siblings, 0 replies; 15+ messages in thread
From: Howard Wang @ 2026-02-12 5:58 UTC (permalink / raw)
To: dev; +Cc: pro_nic_dpdk, Howard Wang
Update hw configurations as below:
enable RTL8127ATF flow control,
phy config,
mac mcu patch,
phy mcu patch.
Signed-off-by: Howard Wang <howard_wang@realsil.com.cn>
---
drivers/net/r8169/base/rtl8127.c | 13 +-
drivers/net/r8169/base/rtl8127_mcu.c | 1332 +++++++++++++++++++-------
drivers/net/r8169/r8169_fiber.c | 15 +-
drivers/net/r8169/r8169_hw.h | 2 +-
4 files changed, 1009 insertions(+), 353 deletions(-)
diff --git a/drivers/net/r8169/base/rtl8127.c b/drivers/net/r8169/base/rtl8127.c
index 26c2cfd25b..3ed7b18d84 100644
--- a/drivers/net/r8169/base/rtl8127.c
+++ b/drivers/net/r8169/base/rtl8127.c
@@ -195,6 +195,15 @@ rtl_hw_phy_config_8127a_1(struct rtl_hw *hw)
rtl_mdio_direct_write_phy_ocp(hw, 0xB87C, 0x82CE);
rtl_clear_and_set_eth_phy_ocp_bit(hw, 0xB87E, 0xF000, 0x4000);
+ rtl_mdio_direct_write_phy_ocp(hw, 0xB87C, 0x83A5);
+ rtl_clear_and_set_eth_phy_ocp_bit(hw, 0xB87E, 0xFF00, 0x0400);
+ rtl_mdio_direct_write_phy_ocp(hw, 0xB87C, 0x83A6);
+ rtl_clear_and_set_eth_phy_ocp_bit(hw, 0xB87E, 0xFF00, 0x0400);
+ rtl_mdio_direct_write_phy_ocp(hw, 0xB87C, 0x83A7);
+ rtl_clear_and_set_eth_phy_ocp_bit(hw, 0xB87E, 0xFF00, 0x0400);
+ rtl_mdio_direct_write_phy_ocp(hw, 0xB87C, 0x83A8);
+ rtl_clear_and_set_eth_phy_ocp_bit(hw, 0xB87E, 0xFF00, 0x0400);
+
rtl_mdio_direct_write_phy_ocp(hw, 0xB87C, 0x84AC);
rtl_mdio_direct_write_phy_ocp(hw, 0xB87E, 0x0000);
rtl_mdio_direct_write_phy_ocp(hw, 0xB87C, 0x84AE);
@@ -207,7 +216,7 @@ rtl_hw_phy_config_8127a_1(struct rtl_hw *hw)
rtl_mdio_direct_write_phy_ocp(hw, 0xB87C, 0x8FFC);
rtl_mdio_direct_write_phy_ocp(hw, 0xB87E, 0x6008);
rtl_mdio_direct_write_phy_ocp(hw, 0xB87C, 0x8FFE);
- rtl_mdio_direct_write_phy_ocp(hw, 0xB87E, 0xF450);
+ rtl_mdio_direct_write_phy_ocp(hw, 0xB87E, 0xF4FF);
rtl_mdio_direct_write_phy_ocp(hw, 0xB87C, 0x8015);
rtl_set_eth_phy_ocp_bit(hw, 0xB87E, BIT_9);
@@ -336,6 +345,8 @@ rtl_hw_phy_config_8127a_1(struct rtl_hw *hw)
rtl_clear_and_set_eth_phy_ocp_bit(hw, 0xA438, 0xFF00, 0x1600);
rtl_set_eth_phy_ocp_bit(hw, 0xA430, BIT_1 | BIT_0);
+ rtl_set_eth_phy_ocp_bit(hw, 0xA442, BIT_7);
+ rtl_clear_eth_phy_ocp_bit(hw, 0xA430, BIT_12);
}
static void
diff --git a/drivers/net/r8169/base/rtl8127_mcu.c b/drivers/net/r8169/base/rtl8127_mcu.c
index facbae8132..79e518a91f 100644
--- a/drivers/net/r8169/base/rtl8127_mcu.c
+++ b/drivers/net/r8169/base/rtl8127_mcu.c
@@ -17,7 +17,7 @@ rtl_set_mac_mcu_8127a_1(struct rtl_hw *hw)
u16 entry_cnt;
static const u16 mcu_patch_code[] = {
0xE010, 0xE023, 0xE036, 0xE049, 0xE05C, 0xE075, 0xE0B1, 0xE117, 0xE11B,
- 0xE11D, 0xE11F, 0xE121, 0xE123, 0xE125, 0xE127, 0xE129, 0x7020, 0xB405,
+ 0xE1F7, 0xE1F9, 0xE297, 0xE299, 0xE29B, 0xE29D, 0xE29F, 0x7020, 0xB405,
0xB404, 0xC50F, 0x74A0, 0xC50E, 0x4025, 0xF005, 0x4850, 0x4025, 0xF002,
0xE002, 0x4809, 0xB004, 0xB005, 0xC502, 0xBD00, 0x1522, 0xD006, 0x0004,
0x7760, 0xB405, 0xB404, 0xC50F, 0x74A0, 0xC50E, 0x4025, 0xF005, 0x4850,
@@ -48,10 +48,51 @@ rtl_set_mac_mcu_8127a_1(struct rtl_hw *hw)
0xB000, 0xB001, 0xB002, 0xB003, 0xB004, 0xB005, 0xB006, 0xB007, 0x2125,
0xC102, 0xB900, 0x1A6C, 0xD410, 0xC000, 0xE86C, 0xB600, 0xB800, 0xB40A,
0xE024, 0x5A00, 0x5A81, 0x0073, 0x5A80, 0x0042, 0x0001, 0xC104, 0xC202,
- 0xBA00, 0x1A2E, 0xC896, 0xC302, 0xBB00, 0x0000, 0xC002, 0xB800, 0x0000,
- 0xC002, 0xB800, 0x0000, 0xC502, 0xBD00, 0x0000, 0xC102, 0xB900, 0x0000,
- 0xC102, 0xB900, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000,
- 0x6961, 0x0019, 0x050C, 0x140C
+ 0xBA00, 0x1A2E, 0xC896, 0xB400, 0xB401, 0xB402, 0xB403, 0xB404, 0xB405,
+ 0xB406, 0xB407, 0xC11F, 0xC21F, 0x9A24, 0xC21B, 0x9A26, 0xE83B, 0x7320,
+ 0x7422, 0xC010, 0x7200, 0x4822, 0x9A00, 0x7218, 0x4822, 0x9A18, 0x7206,
+ 0x4822, 0x9A06, 0x720C, 0x49C0, 0xF00D, 0x4822, 0x9A0C, 0xE00C, 0xDC46,
+ 0xD40C, 0xE008, 0xDEAD, 0xDE20, 0x0012, 0x3D02, 0xE8E0, 0x0168, 0x48A2,
+ 0x9A0C, 0x49CF, 0xF058, 0x1301, 0xF00A, 0x1302, 0xF00D, 0x1303, 0xF01B,
+ 0x1304, 0xF01F, 0x1305, 0xF024, 0xE043, 0xE858, 0xC7EC, 0xE863, 0xE893,
+ 0xE048, 0xE853, 0xC7E7, 0x4878, 0xE85D, 0xE88D, 0xE042, 0xE8E0, 0xF180,
+ 0xBD02, 0x8FFE, 0xC000, 0xC1DF, 0x6227, 0x49A6, 0xF1FD, 0xFF80, 0xE843,
+ 0xC7D7, 0x4879, 0xE84D, 0xE87D, 0xE032, 0xE83D, 0xC7D1, 0x4878, 0x4879,
+ 0xE846, 0xE876, 0xE02B, 0xC5C8, 0x76A0, 0x4868, 0x9EA0, 0xC5C3, 0x71A0,
+ 0xC5E7, 0x70A0, 0xC2E1, 0x9940, 0x9842, 0xC1DF, 0x9944, 0xC1DE, 0x9946,
+ 0xEFDF, 0x71A2, 0x70A4, 0xC2D7, 0x9940, 0x9842, 0xC16C, 0x9944, 0xC1D4,
+ 0x9946, 0xEFD5, 0xC5AE, 0x76A0, 0x48E8, 0x9EA0, 0xE856, 0xE00B, 0xC6A9,
+ 0xC2C8, 0x9E40, 0x9E42, 0xC1C6, 0x9944, 0xC1C5, 0x9946, 0xEFC6, 0xE84B,
+ 0xB007, 0xB006, 0xB005, 0xB004, 0xB003, 0xB002, 0xB001, 0xB000, 0x1100,
+ 0xC202, 0xBA00, 0x1A86, 0xC694, 0xE807, 0x1D00, 0x9DC0, 0xC5B2, 0x9DC2,
+ 0xE802, 0xFF80, 0xC18C, 0x7222, 0x49AE, 0xF1FD, 0xFF80, 0xC687, 0x9FC2,
+ 0xEFF9, 0x70C0, 0x0702, 0x9FC2, 0xEFF5, 0x71C0, 0xC235, 0x9940, 0x9842,
+ 0xC19C, 0x9944, 0xC12E, 0x9946, 0xEF9C, 0x0701, 0x9FC2, 0xEFE9, 0x70C0,
+ 0x0704, 0x9FC2, 0xEFE5, 0x71C0, 0xC225, 0x9940, 0x9842, 0xC123, 0x9944,
+ 0xC11E, 0x9946, 0xEF8C, 0x071A, 0x9FC2, 0xEFD9, 0x70C0, 0x0728, 0x9FC2,
+ 0xEFD5, 0x71C0, 0xC215, 0x9940, 0x9842, 0xC114, 0x9944, 0xC10E, 0x9946,
+ 0xEF7C, 0xFF80, 0x48CF, 0xC20B, 0x9B40, 0x9C42, 0xC107, 0x9944, 0xC104,
+ 0x9946, 0xEF72, 0xFF80, 0xBD02, 0xF168, 0xE8E0, 0xF184, 0xF188, 0xC502,
+ 0xBD00, 0x0000, 0xB400, 0xB401, 0xB402, 0xB403, 0xC079, 0xC377, 0x7160,
+ 0x9906, 0xC376, 0xE87C, 0xC073, 0x9900, 0x1906, 0xC371, 0xE884, 0xC170,
+ 0xC370, 0xE881, 0x1908, 0xC36B, 0xE87E, 0xC36C, 0xE86F, 0x1A88, 0x44CA,
+ 0xE879, 0xC367, 0x4833, 0xE869, 0x4816, 0xE874, 0xC362, 0x4838, 0xE864,
+ 0x1A88, 0x44CA, 0xE86E, 0xC35C, 0x4838, 0x4833, 0xE85D, 0x4816, 0xE868,
+ 0xC357, 0xE859, 0x1A88, 0x44CA, 0xE863, 0xC352, 0x4833, 0xE853, 0x4816,
+ 0xE85E, 0xC34D, 0x4838, 0xE84E, 0x1A88, 0x44CA, 0xE858, 0xC347, 0x4838,
+ 0x4833, 0xE847, 0x4816, 0xE852, 0xC342, 0xE843, 0x1A58, 0x44CA, 0xE84D,
+ 0xC33D, 0x4833, 0xE83D, 0x4816, 0xE848, 0xC338, 0x4838, 0xE838, 0x1A58,
+ 0x44CA, 0xE842, 0xC332, 0x4838, 0x4833, 0xE831, 0x4816, 0xE83C, 0xC32D,
+ 0xE82D, 0x1A58, 0x44CA, 0xE837, 0xC328, 0x4833, 0xE827, 0x4816, 0xE832,
+ 0xC323, 0x4838, 0xE822, 0x1A58, 0x44CA, 0xE82C, 0xC31D, 0x4838, 0x4833,
+ 0xE81B, 0x4816, 0xE826, 0xC010, 0x7100, 0xC30F, 0xE822, 0xC00C, 0x7106,
+ 0xC309, 0x9960, 0xB003, 0xB002, 0xB001, 0xB000, 0xC402, 0xBC00, 0x15B0,
+ 0xDE20, 0xDD26, 0x0FFE, 0x0000, 0x6F00, 0x8086, 0x8486, 0x8886, 0x8C86,
+ 0xC0F7, 0x7202, 0x49AE, 0xF1FD, 0x44D3, 0x4413, 0x48AF, 0x9A02, 0x7202,
+ 0x49AE, 0xF1FE, 0x7100, 0xFF80, 0xC0EA, 0x7202, 0x49AE, 0xF1FD, 0x9900,
+ 0x44D3, 0x4413, 0x482F, 0x9A02, 0x7202, 0x49AE, 0xF1FE, 0xFF80, 0xC502,
+ 0xBD00, 0x0000, 0xC102, 0xB900, 0x0000, 0xC102, 0xB900, 0x0000, 0xC602,
+ 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0x6961, 0x0019, 0x0A1E, 0x0F2A
};
entry_cnt = ARRAY_SIZE(mcu_patch_code);
@@ -73,8 +114,9 @@ rtl_set_mac_mcu_8127a_1(struct rtl_hw *hw)
rtl_mac_ocp_write(hw, 0xFC32, 0x0166);
rtl_mac_ocp_write(hw, 0xFC34, 0x1A6A);
rtl_mac_ocp_write(hw, 0xFC36, 0x1A2C);
+ rtl_mac_ocp_write(hw, 0xFC3C, 0x1598);
- rtl_mac_ocp_write(hw, 0xFC48, 0x00FF);
+ rtl_mac_ocp_write(hw, 0xFC48, 0x04FF);
}
/* ------------------------------------PHY 8127------------------------------------- */
@@ -124,97 +166,649 @@ static const u16 phy_mcu_ram_code_8127a_1[] = {
0xa436, 0xA082, 0xa438, 0x0117, 0xa436, 0xA080, 0xa438, 0x0027,
0xa436, 0xA090, 0xa438, 0x00ff, 0xa436, 0xA016, 0xa438, 0x0020,
0xa436, 0xA012, 0xa438, 0x0000, 0xa436, 0xA014, 0xa438, 0x1800,
- 0xa438, 0x8010, 0xa438, 0x1800, 0xa438, 0x801d, 0xa438, 0x1800,
- 0xa438, 0x803b, 0xa438, 0x1800, 0xa438, 0x8087, 0xa438, 0x1800,
- 0xa438, 0x808e, 0xa438, 0x1800, 0xa438, 0x809d, 0xa438, 0x1800,
- 0xa438, 0x80b7, 0xa438, 0x1800, 0xa438, 0x80c4, 0xa438, 0xd1bc,
+ 0xa438, 0x8010, 0xa438, 0x1800, 0xa438, 0x8663, 0xa438, 0x1800,
+ 0xa438, 0x8681, 0xa438, 0x1800, 0xa438, 0x86cd, 0xa438, 0x1800,
+ 0xa438, 0x86d4, 0xa438, 0x1800, 0xa438, 0x86e3, 0xa438, 0x1800,
+ 0xa438, 0x8944, 0xa438, 0x1800, 0xa438, 0x8951, 0xa438, 0xd1bc,
0xa438, 0xd040, 0xa438, 0x1000, 0xa438, 0x1cd2, 0xa438, 0xd700,
- 0xa438, 0x5fba, 0xa438, 0xd700, 0xa438, 0x273d, 0xa438, 0x801b,
- 0xa438, 0x1800, 0xa438, 0x07d1, 0xa438, 0x1800, 0xa438, 0x080e,
- 0xa438, 0xd700, 0xa438, 0x37c9, 0xa438, 0x8032, 0xa438, 0x33a9,
- 0xa438, 0x802a, 0xa438, 0xd705, 0xa438, 0x4084, 0xa438, 0xd1f4,
- 0xa438, 0xd048, 0xa438, 0xf013, 0xa438, 0xd1b7, 0xa438, 0xd04b,
- 0xa438, 0xf010, 0xa438, 0xd705, 0xa438, 0x4084, 0xa438, 0xd1f4,
- 0xa438, 0xd048, 0xa438, 0xf00b, 0xa438, 0xd1b7, 0xa438, 0xd04b,
- 0xa438, 0xf008, 0xa438, 0xd705, 0xa438, 0x4084, 0xa438, 0xd1f4,
- 0xa438, 0xd048, 0xa438, 0xf003, 0xa438, 0xd1b7, 0xa438, 0xd04b,
- 0xa438, 0x1800, 0xa438, 0x14cc, 0xa438, 0xd700, 0xa438, 0x2b59,
- 0xa438, 0x803f, 0xa438, 0xf003, 0xa438, 0x1800, 0xa438, 0x118f,
- 0xa438, 0x6060, 0xa438, 0x1800, 0xa438, 0x1167, 0xa438, 0xd700,
- 0xa438, 0x60c7, 0xa438, 0xd704, 0xa438, 0x609f, 0xa438, 0xd705,
- 0xa438, 0x4043, 0xa438, 0xf003, 0xa438, 0x1800, 0xa438, 0x1150,
- 0xa438, 0x0c03, 0xa438, 0x1502, 0xa438, 0x8702, 0xa438, 0x8011,
- 0xa438, 0x9503, 0xa438, 0x800a, 0xa438, 0x81a0, 0xa438, 0x8302,
- 0xa438, 0x8480, 0xa438, 0x8686, 0xa438, 0xcde0, 0xa438, 0xd1ff,
- 0xa438, 0xd049, 0xa438, 0x1000, 0xa438, 0x1cd2, 0xa438, 0xd700,
- 0xa438, 0x5fba, 0xa438, 0xd705, 0xa438, 0x417e, 0xa438, 0x0c03,
- 0xa438, 0x1502, 0xa438, 0xa011, 0xa438, 0x9503, 0xa438, 0xd1c8,
- 0xa438, 0xd045, 0xa438, 0x1000, 0xa438, 0x1cd2, 0xa438, 0xd700,
- 0xa438, 0x5fba, 0xa438, 0x0c03, 0xa438, 0x1502, 0xa438, 0xa702,
- 0xa438, 0x9503, 0xa438, 0xa00a, 0xa438, 0xa1a0, 0xa438, 0xa480,
- 0xa438, 0xa686, 0xa438, 0xd705, 0xa438, 0x605e, 0xa438, 0xa302,
- 0xa438, 0x9503, 0xa438, 0xd700, 0xa438, 0x37c9, 0xa438, 0x8083,
- 0xa438, 0x33a9, 0xa438, 0x807f, 0xa438, 0xd178, 0xa438, 0xd04b,
- 0xa438, 0x1800, 0xa438, 0x115d, 0xa438, 0xd1c8, 0xa438, 0xd04b,
- 0xa438, 0x1800, 0xa438, 0x115d, 0xa438, 0xd1e6, 0xa438, 0xd04b,
- 0xa438, 0x1800, 0xa438, 0x115d, 0xa438, 0xd71f, 0xa438, 0x6080,
- 0xa438, 0xd704, 0xa438, 0x1800, 0xa438, 0x1bc0, 0xa438, 0x1800,
- 0xa438, 0x1bc4, 0xa438, 0x4134, 0xa438, 0xd115, 0xa438, 0xd04f,
- 0xa438, 0x1000, 0xa438, 0x1d0b, 0xa438, 0x1000, 0xa438, 0x80ad,
- 0xa438, 0x1800, 0xa438, 0x01f2, 0xa438, 0x1000, 0xa438, 0x1d0b,
- 0xa438, 0x1000, 0xa438, 0x80ad, 0xa438, 0x1800, 0xa438, 0x01f9,
- 0xa438, 0x2969, 0xa438, 0x80a3, 0xa438, 0xd700, 0xa438, 0x606b,
- 0xa438, 0xd701, 0xa438, 0x60b4, 0xa438, 0x1000, 0xa438, 0x80ad,
- 0xa438, 0x1800, 0xa438, 0x0551, 0xa438, 0xd196, 0xa438, 0xd04d,
- 0xa438, 0x1000, 0xa438, 0x80ad, 0xa438, 0x1800, 0xa438, 0x054d,
- 0xa438, 0xd208, 0xa438, 0x0c09, 0xa438, 0x1301, 0xa438, 0x1000,
- 0xa438, 0x1cd2, 0xa438, 0xd701, 0xa438, 0x5fa3, 0xa438, 0xb302,
- 0xa438, 0xd200, 0xa438, 0x0800, 0xa438, 0xd705, 0xa438, 0x6064,
- 0xa438, 0x1800, 0xa438, 0x140a, 0xa438, 0x8810, 0xa438, 0xd199,
- 0xa438, 0xd04b, 0xa438, 0x1000, 0xa438, 0x1cd2, 0xa438, 0xd700,
- 0xa438, 0x5fba, 0xa438, 0x1800, 0xa438, 0x140a, 0xa436, 0xA10E,
- 0xa438, 0xffff, 0xa436, 0xA10C, 0xa438, 0x1352, 0xa436, 0xA10A,
- 0xa438, 0x0545, 0xa436, 0xA108, 0xa438, 0x01ed, 0xa436, 0xA106,
- 0xa438, 0x1bbf, 0xa436, 0xA104, 0xa438, 0x114b, 0xa436, 0xA102,
- 0xa438, 0x14bf, 0xa436, 0xA100, 0xa438, 0x07ce, 0xa436, 0xA110,
- 0xa438, 0x007f, 0xa436, 0xA016, 0xa438, 0x0020, 0xa436, 0xA012,
- 0xa438, 0x1ff8, 0xa436, 0xA014, 0xa438, 0xd1ce, 0xa438, 0x0000,
+ 0xa438, 0x5fba, 0xa438, 0xd700, 0xa438, 0x273d, 0xa438, 0x8056,
+ 0xa438, 0xd700, 0xa438, 0x37c9, 0xa438, 0x802e, 0xa438, 0x33a9,
+ 0xa438, 0x8026, 0xa438, 0xd702, 0xa438, 0x6099, 0xa438, 0xd1b7,
+ 0xa438, 0xd05c, 0xa438, 0xf013, 0xa438, 0xd1b7, 0xa438, 0xd05c,
+ 0xa438, 0xf010, 0xa438, 0xd702, 0xa438, 0x6099, 0xa438, 0xd1b7,
+ 0xa438, 0xd05c, 0xa438, 0xf00b, 0xa438, 0xd1b7, 0xa438, 0xd05c,
+ 0xa438, 0xf008, 0xa438, 0xd702, 0xa438, 0x6099, 0xa438, 0xd199,
+ 0xa438, 0xd05d, 0xa438, 0xf003, 0xa438, 0xd199, 0xa438, 0xd05d,
+ 0xa438, 0xd700, 0xa438, 0x37c9, 0xa438, 0x804a, 0xa438, 0x33a9,
+ 0xa438, 0x8042, 0xa438, 0xd702, 0xa438, 0x6099, 0xa438, 0xd1bf,
+ 0xa438, 0xd06d, 0xa438, 0xf013, 0xa438, 0xd1e5, 0xa438, 0xd06d,
+ 0xa438, 0xf010, 0xa438, 0xd702, 0xa438, 0x6099, 0xa438, 0xd1ec,
+ 0xa438, 0xd06d, 0xa438, 0xf00b, 0xa438, 0xd1bf, 0xa438, 0xd06d,
+ 0xa438, 0xf008, 0xa438, 0xd702, 0xa438, 0x6099, 0xa438, 0xd199,
+ 0xa438, 0xd06e, 0xa438, 0xf003, 0xa438, 0xd199, 0xa438, 0xd06e,
+ 0xa438, 0xd703, 0xa438, 0x6090, 0xa438, 0xd41a, 0xa438, 0x1000,
+ 0xa438, 0x1cc8, 0xa438, 0xd408, 0xa438, 0x1000, 0xa438, 0x1cc8,
+ 0xa438, 0xcd31, 0xa438, 0xd700, 0xa438, 0x2fa9, 0xa438, 0x8061,
+ 0xa438, 0x33c9, 0xa438, 0x8064, 0xa438, 0x6117, 0xa438, 0xf00a,
+ 0xa438, 0xd141, 0xa438, 0xd043, 0xa438, 0xf009, 0xa438, 0xd121,
+ 0xa438, 0xd043, 0xa438, 0xf006, 0xa438, 0xd122, 0xa438, 0xd042,
+ 0xa438, 0xf003, 0xa438, 0xd181, 0xa438, 0xd043, 0xa438, 0x1000,
+ 0xa438, 0x1cd2, 0xa438, 0xd700, 0xa438, 0x5fba, 0xa438, 0xd700,
+ 0xa438, 0x2969, 0xa438, 0x80da, 0xa438, 0xd700, 0xa438, 0x6ccb,
+ 0xa438, 0xd700, 0xa438, 0x6d67, 0xa438, 0x800a, 0xa438, 0x81a0,
+ 0xa438, 0x8312, 0xa438, 0x8480, 0xa438, 0x0c86, 0xa438, 0x0680,
+ 0xa438, 0x0c03, 0xa438, 0x1502, 0xa438, 0x8702, 0xa438, 0x9503,
+ 0xa438, 0xd407, 0xa438, 0x1000, 0xa438, 0x1cc8, 0xa438, 0xd703,
+ 0xa438, 0x6090, 0xa438, 0xd41a, 0xa438, 0x1000, 0xa438, 0x1cc8,
+ 0xa438, 0x0c03, 0xa438, 0x1502, 0xa438, 0x8380, 0xa438, 0x9503,
+ 0xa438, 0xd406, 0xa438, 0x1000, 0xa438, 0x1cc8, 0xa438, 0xcd39,
+ 0xa438, 0xd404, 0xa438, 0x1000, 0xa438, 0x1cc8, 0xa438, 0xd700,
+ 0xa438, 0x60cf, 0xa438, 0x60f1, 0xa438, 0x6113, 0xa438, 0x6135,
+ 0xa438, 0x6157, 0xa438, 0xf00b, 0xa438, 0xce03, 0xa438, 0xf00a,
+ 0xa438, 0xce03, 0xa438, 0xf008, 0xa438, 0xce03, 0xa438, 0xf006,
+ 0xa438, 0xce03, 0xa438, 0xf004, 0xa438, 0xce03, 0xa438, 0xf002,
+ 0xa438, 0xce03, 0xa438, 0x1000, 0xa438, 0x1ce7, 0xa438, 0x0c03,
+ 0xa438, 0x1502, 0xa438, 0x0c07, 0xa438, 0x0c01, 0xa438, 0x8d07,
+ 0xa438, 0x0cc3, 0xa438, 0x0b40, 0xa438, 0x8d07, 0xa438, 0x9503,
+ 0xa438, 0xa810, 0xa438, 0xa00a, 0xa438, 0xa302, 0xa438, 0x0ca0,
+ 0xa438, 0x0480, 0xa438, 0xa684, 0xa438, 0x1000, 0xa438, 0x1cd2,
+ 0xa438, 0xd706, 0xa438, 0x5fa7, 0xa438, 0xb920, 0xa438, 0x1000,
+ 0xa438, 0x1cd2, 0xa438, 0xd71f, 0xa438, 0x7fb4, 0xa438, 0x8810,
+ 0xa438, 0x9920, 0xa438, 0x1000, 0xa438, 0x1cd2, 0xa438, 0xd71f,
+ 0xa438, 0x60e5, 0xa438, 0x5f94, 0xa438, 0x1000, 0xa438, 0x1cd2,
+ 0xa438, 0xd706, 0xa438, 0x5fa7, 0xa438, 0xfff0, 0xa438, 0xb820,
+ 0xa438, 0xa810, 0xa438, 0x1000, 0xa438, 0x1cd2, 0xa438, 0xd71f,
+ 0xa438, 0x7fa5, 0xa438, 0x9820, 0xa438, 0x1000, 0xa438, 0x1cd2,
+ 0xa438, 0x1000, 0xa438, 0x1d2b, 0xa438, 0xd706, 0xa438, 0x5f69,
+ 0xa438, 0xf010, 0xa438, 0x0c03, 0xa438, 0x1502, 0xa438, 0xae80,
+ 0xa438, 0x9503, 0xa438, 0xd700, 0xa438, 0x2b6d, 0xa438, 0x8184,
+ 0xa438, 0x0c03, 0xa438, 0x1502, 0xa438, 0x8380, 0xa438, 0x9503,
+ 0xa438, 0xd406, 0xa438, 0x1000, 0xa438, 0x1cc8, 0xa438, 0xcd32,
+ 0xa438, 0xd701, 0xa438, 0x6191, 0xa438, 0xa504, 0xa438, 0xcd3a,
+ 0xa438, 0x1000, 0xa438, 0x1cd2, 0xa438, 0xd700, 0xa438, 0x6067,
+ 0xa438, 0x1000, 0xa438, 0x1d2b, 0xa438, 0xd701, 0xa438, 0x5f3a,
+ 0xa438, 0x8504, 0xa438, 0xd700, 0xa438, 0x2739, 0xa438, 0x817a,
+ 0xa438, 0xd707, 0xa438, 0x6061, 0xa438, 0x1800, 0xa438, 0x816c,
+ 0xa438, 0xd193, 0xa438, 0xd047, 0xa438, 0x1000, 0xa438, 0x1cd2,
+ 0xa438, 0x1000, 0xa438, 0x1d2b, 0xa438, 0xd700, 0xa438, 0x5f7a,
+ 0xa438, 0xd706, 0xa438, 0x5f29, 0xa438, 0xd700, 0xa438, 0x60cf,
+ 0xa438, 0x60f1, 0xa438, 0x6113, 0xa438, 0x6135, 0xa438, 0x6157,
+ 0xa438, 0xf00b, 0xa438, 0xce06, 0xa438, 0xf00a, 0xa438, 0xce06,
+ 0xa438, 0xf008, 0xa438, 0xce06, 0xa438, 0xf006, 0xa438, 0xce06,
+ 0xa438, 0xf004, 0xa438, 0xce06, 0xa438, 0xf002, 0xa438, 0xce06,
+ 0xa438, 0x1000, 0xa438, 0x1ce7, 0xa438, 0x0c03, 0xa438, 0x1502,
+ 0xa438, 0x0c0f, 0xa438, 0x0b01, 0xa438, 0x0c3f, 0xa438, 0x0c08,
+ 0xa438, 0x8bc0, 0xa438, 0x9503, 0xa438, 0xd707, 0xa438, 0x409f,
+ 0xa438, 0x4062, 0xa438, 0x8310, 0xa438, 0xf002, 0xa438, 0xa310,
+ 0xa438, 0xa120, 0xa438, 0xa420, 0xa438, 0xd193, 0xa438, 0xd048,
+ 0xa438, 0x1000, 0xa438, 0x1cd2, 0xa438, 0x1000, 0xa438, 0x1d2b,
+ 0xa438, 0xd700, 0xa438, 0x5f7a, 0xa438, 0xd706, 0xa438, 0x5f29,
+ 0xa438, 0xd700, 0xa438, 0x60cf, 0xa438, 0x60f1, 0xa438, 0x6113,
+ 0xa438, 0x6135, 0xa438, 0x6157, 0xa438, 0xf00b, 0xa438, 0xce03,
+ 0xa438, 0xf00a, 0xa438, 0xce03, 0xa438, 0xf008, 0xa438, 0xce03,
+ 0xa438, 0xf006, 0xa438, 0xce03, 0xa438, 0xf004, 0xa438, 0xce03,
+ 0xa438, 0xf002, 0xa438, 0xce03, 0xa438, 0x1000, 0xa438, 0x1ce7,
+ 0xa438, 0x0c03, 0xa438, 0x1502, 0xa438, 0x0c07, 0xa438, 0x0c01,
+ 0xa438, 0x9503, 0xa438, 0x8420, 0xa438, 0x800a, 0xa438, 0x8120,
+ 0xa438, 0x8312, 0xa438, 0x8480, 0xa438, 0x8604, 0xa438, 0xd419,
+ 0xa438, 0x1000, 0xa438, 0x1cc8, 0xa438, 0xd702, 0xa438, 0x4080,
+ 0xa438, 0xbb20, 0xa438, 0x1800, 0xa438, 0x8507, 0xa438, 0xa00a,
+ 0xa438, 0xa302, 0xa438, 0xa480, 0xa438, 0xa604, 0xa438, 0xd193,
+ 0xa438, 0xd047, 0xa438, 0x1000, 0xa438, 0x1cd2, 0xa438, 0x1000,
+ 0xa438, 0x1d2b, 0xa438, 0xd700, 0xa438, 0x5f7a, 0xa438, 0xd706,
+ 0xa438, 0x5f29, 0xa438, 0x1800, 0xa438, 0x814f, 0xa438, 0x800a,
+ 0xa438, 0x8302, 0xa438, 0x8480, 0xa438, 0x8604, 0xa438, 0xd405,
+ 0xa438, 0x1000, 0xa438, 0x1cc8, 0xa438, 0xbb20, 0xa438, 0xa00a,
+ 0xa438, 0xa302, 0xa438, 0xa480, 0xa438, 0xa604, 0xa438, 0x1800,
+ 0xa438, 0x8507, 0xa438, 0xd405, 0xa438, 0x1000, 0xa438, 0x1cc8,
+ 0xa438, 0xd404, 0xa438, 0x1000, 0xa438, 0x1cc8, 0xa438, 0xd700,
+ 0xa438, 0x2b69, 0xa438, 0x8184, 0xa438, 0xf06d, 0xa438, 0xd700,
+ 0xa438, 0x60cf, 0xa438, 0x60f1, 0xa438, 0x6113, 0xa438, 0x6135,
+ 0xa438, 0x6157, 0xa438, 0xf00b, 0xa438, 0xce03, 0xa438, 0xf00a,
+ 0xa438, 0xce03, 0xa438, 0xf008, 0xa438, 0xce03, 0xa438, 0xf006,
+ 0xa438, 0xce03, 0xa438, 0xf004, 0xa438, 0xce03, 0xa438, 0xf002,
+ 0xa438, 0xce03, 0xa438, 0x1000, 0xa438, 0x1ce7, 0xa438, 0x0c03,
+ 0xa438, 0x1502, 0xa438, 0x0c07, 0xa438, 0x0c01, 0xa438, 0x0c3f,
+ 0xa438, 0x0d08, 0xa438, 0x9503, 0xa438, 0xa810, 0xa438, 0xa00a,
+ 0xa438, 0xa302, 0xa438, 0x0ca0, 0xa438, 0x0480, 0xa438, 0xd700,
+ 0xa438, 0x2969, 0xa438, 0x0960, 0xa438, 0x60a4, 0xa438, 0xd704,
+ 0xa438, 0x407d, 0xa438, 0x8604, 0xa438, 0xf002, 0xa438, 0xa604,
+ 0xa438, 0x0c03, 0xa438, 0x1502, 0xa438, 0xa340, 0xa438, 0xd700,
+ 0xa438, 0x37cd, 0xa438, 0x81b4, 0xa438, 0x8310, 0xa438, 0x9503,
+ 0xa438, 0x1000, 0xa438, 0x1cd2, 0xa438, 0xd706, 0xa438, 0x5fa7,
+ 0xa438, 0xb920, 0xa438, 0x1000, 0xa438, 0x1cd2, 0xa438, 0xd71f,
+ 0xa438, 0x7fb4, 0xa438, 0x8810, 0xa438, 0x9920, 0xa438, 0x1000,
+ 0xa438, 0x1cd2, 0xa438, 0xd71f, 0xa438, 0x60e5, 0xa438, 0x5f94,
+ 0xa438, 0x1000, 0xa438, 0x1cd2, 0xa438, 0xd706, 0xa438, 0x5fa7,
+ 0xa438, 0xfff0, 0xa438, 0xb820, 0xa438, 0xa810, 0xa438, 0x1000,
+ 0xa438, 0x1cd2, 0xa438, 0xd71f, 0xa438, 0x7fa5, 0xa438, 0x9820,
+ 0xa438, 0xd700, 0xa438, 0x2d59, 0xa438, 0x8507, 0xa438, 0x0c03,
+ 0xa438, 0x1502, 0xa438, 0x8c07, 0xa438, 0x9503, 0xa438, 0xa120,
+ 0xa438, 0xd700, 0xa438, 0x2969, 0xa438, 0x81e3, 0xa438, 0x60e4,
+ 0xa438, 0xd704, 0xa438, 0x40bd, 0xa438, 0xd704, 0xa438, 0x407b,
+ 0xa438, 0x8310, 0xa438, 0xf002, 0xa438, 0xa310, 0xa438, 0xd700,
+ 0xa438, 0x2969, 0xa438, 0x81ec, 0xa438, 0x60a4, 0xa438, 0xd704,
+ 0xa438, 0x407d, 0xa438, 0xa202, 0xa438, 0xf002, 0xa438, 0x8202,
+ 0xa438, 0xa420, 0xa438, 0x1800, 0xa438, 0x861d, 0xa438, 0x8810,
+ 0xa438, 0x1000, 0xa438, 0x1cd2, 0xa438, 0xd700, 0xa438, 0x5fbb,
+ 0xa438, 0xd17a, 0xa438, 0xd05a, 0xa438, 0xd700, 0xa438, 0x60cf,
+ 0xa438, 0x60f1, 0xa438, 0x6113, 0xa438, 0x6135, 0xa438, 0x6157,
+ 0xa438, 0xf00b, 0xa438, 0xce06, 0xa438, 0xf00a, 0xa438, 0xce06,
+ 0xa438, 0xf008, 0xa438, 0xce06, 0xa438, 0xf006, 0xa438, 0xce06,
+ 0xa438, 0xf004, 0xa438, 0xce06, 0xa438, 0xf002, 0xa438, 0xce06,
+ 0xa438, 0x1000, 0xa438, 0x1ce7, 0xa438, 0x0c03, 0xa438, 0x1502,
+ 0xa438, 0x0c0f, 0xa438, 0x0b04, 0xa438, 0x0c3f, 0xa438, 0x0c21,
+ 0xa438, 0x8d07, 0xa438, 0x9503, 0xa438, 0xa340, 0xa438, 0x1000,
+ 0xa438, 0x1d47, 0xa438, 0xa110, 0xa438, 0x1000, 0xa438, 0x1cef,
+ 0xa438, 0x8110, 0xa438, 0x1000, 0xa438, 0x1d50, 0xa438, 0xa304,
+ 0xa438, 0xa440, 0xa438, 0xa8c0, 0xa438, 0x8810, 0xa438, 0xa00a,
+ 0xa438, 0xa120, 0xa438, 0xa310, 0xa438, 0xd704, 0xa438, 0x405d,
+ 0xa438, 0xa308, 0xa438, 0x0cfc, 0xa438, 0x0224, 0xa438, 0x0ca0,
+ 0xa438, 0x0480, 0xa438, 0x0c03, 0xa438, 0x1502, 0xa438, 0xa340,
+ 0xa438, 0xd700, 0xa438, 0x37cd, 0xa438, 0x8231, 0xa438, 0x8310,
+ 0xa438, 0x9503, 0xa438, 0xd162, 0xa438, 0xd048, 0xa438, 0x1000,
+ 0xa438, 0x1cd2, 0xa438, 0xd700, 0xa438, 0x5fba, 0xa438, 0x8840,
+ 0xa438, 0xd1c4, 0xa438, 0xd045, 0xa438, 0x1000, 0xa438, 0x1cd2,
+ 0xa438, 0xd700, 0xa438, 0x5fba, 0xa438, 0xd706, 0xa438, 0x6127,
+ 0xa438, 0xd700, 0xa438, 0x5f3b, 0xa438, 0x88c0, 0xa438, 0x800a,
+ 0xa438, 0x8120, 0xa438, 0x8350, 0xa438, 0x84a0, 0xa438, 0xffad,
+ 0xa438, 0xb920, 0xa438, 0xcd33, 0xa438, 0x1000, 0xa438, 0x1cd2,
+ 0xa438, 0xd71f, 0xa438, 0x7fb4, 0xa438, 0x9920, 0xa438, 0x1000,
+ 0xa438, 0x1cd2, 0xa438, 0xd71f, 0xa438, 0x6065, 0xa438, 0x5f94,
+ 0xa438, 0xffee, 0xa438, 0xb820, 0xa438, 0x1000, 0xa438, 0x1cd2,
+ 0xa438, 0xd71f, 0xa438, 0x7fa5, 0xa438, 0x9820, 0xa438, 0x800a,
+ 0xa438, 0x8120, 0xa438, 0x1000, 0xa438, 0x1d47, 0xa438, 0xa108,
+ 0xa438, 0x1000, 0xa438, 0x1cef, 0xa438, 0x8108, 0xa438, 0x1000,
+ 0xa438, 0x1d50, 0xa438, 0xd704, 0xa438, 0x60bd, 0xa438, 0xd707,
+ 0xa438, 0x413f, 0xa438, 0x4100, 0xa438, 0xf004, 0xa438, 0x0cfd,
+ 0xa438, 0x0201, 0xa438, 0xf005, 0xa438, 0x0cfc, 0xa438, 0x02bc,
+ 0xa438, 0xf002, 0xa438, 0xa2fc, 0xa438, 0xa304, 0xa438, 0x8880,
+ 0xa438, 0x0cc0, 0xa438, 0x0440, 0xa438, 0xcd34, 0xa438, 0xd704,
+ 0xa438, 0x407d, 0xa438, 0x405b, 0xa438, 0xf006, 0xa438, 0xd704,
+ 0xa438, 0x60fd, 0xa438, 0xd707, 0xa438, 0x40bf, 0xa438, 0x4080,
+ 0xa438, 0x8310, 0xa438, 0x1000, 0xa438, 0x1d15, 0xa438, 0x0c03,
+ 0xa438, 0x1502, 0xa438, 0x8c07, 0xa438, 0xd704, 0xa438, 0x409d,
+ 0xa438, 0x8b0f, 0xa438, 0x8c38, 0xa438, 0xf004, 0xa438, 0x0c0f,
+ 0xa438, 0x0b07, 0xa438, 0xac38, 0xa438, 0x0c38, 0xa438, 0x0d10,
+ 0xa438, 0x9503, 0xa438, 0xa810, 0xa438, 0xa00a, 0xa438, 0xa120,
+ 0xa438, 0xd704, 0xa438, 0x607d, 0xa438, 0xa4a0, 0xa438, 0xa604,
+ 0xa438, 0xd700, 0xa438, 0x37c9, 0xa438, 0x829f, 0xa438, 0xd17a,
+ 0xa438, 0xd049, 0xa438, 0xf003, 0xa438, 0xd19f, 0xa438, 0xd049,
+ 0xa438, 0xd704, 0xa438, 0x413d, 0xa438, 0xa00a, 0xa438, 0xa120,
+ 0xa438, 0xd704, 0xa438, 0x407b, 0xa438, 0x8310, 0xa438, 0xf002,
+ 0xa438, 0xa310, 0xa438, 0xa403, 0xa438, 0x1000, 0xa438, 0x1cd2,
+ 0xa438, 0xd71f, 0xa438, 0x6a14, 0xa438, 0xd700, 0xa438, 0x409a,
+ 0xa438, 0xd706, 0xa438, 0x4988, 0xa438, 0xf014, 0xa438, 0xd704,
+ 0xa438, 0x6055, 0xa438, 0xfff5, 0xa438, 0x1000, 0xa438, 0x1d47,
+ 0xa438, 0x800a, 0xa438, 0x8120, 0xa438, 0x8310, 0xa438, 0xa380,
+ 0xa438, 0x1000, 0xa438, 0x1cd2, 0xa438, 0x1000, 0xa438, 0x1d2b,
+ 0xa438, 0xd705, 0xa438, 0x5f77, 0xa438, 0x8380, 0xa438, 0x1000,
+ 0xa438, 0x1d50, 0xa438, 0xffdd, 0xa438, 0x0c03, 0xa438, 0x1502,
+ 0xa438, 0x8b0f, 0xa438, 0x8c38, 0xa438, 0x8d38, 0xa438, 0x9503,
+ 0xa438, 0xd700, 0xa438, 0x37c9, 0xa438, 0x82d8, 0xa438, 0x33a9,
+ 0xa438, 0x82d5, 0xa438, 0xd1f4, 0xa438, 0xd04b, 0xa438, 0xf006,
+ 0xa438, 0xd1b7, 0xa438, 0xd04b, 0xa438, 0xf003, 0xa438, 0xd1c6,
+ 0xa438, 0xd04c, 0xa438, 0xd704, 0xa438, 0x413d, 0xa438, 0xa00a,
+ 0xa438, 0xa120, 0xa438, 0xd704, 0xa438, 0x407b, 0xa438, 0x8310,
+ 0xa438, 0xf002, 0xa438, 0xa310, 0xa438, 0xa403, 0xa438, 0x1000,
+ 0xa438, 0x1cd2, 0xa438, 0xd71f, 0xa438, 0x62f4, 0xa438, 0xd700,
+ 0xa438, 0x405a, 0xa438, 0xf01a, 0xa438, 0xd704, 0xa438, 0x6055,
+ 0xa438, 0xfff7, 0xa438, 0x1000, 0xa438, 0x1d47, 0xa438, 0x800a,
+ 0xa438, 0x8120, 0xa438, 0x8310, 0xa438, 0xa380, 0xa438, 0x1000,
+ 0xa438, 0x1cd2, 0xa438, 0x1000, 0xa438, 0x1d2b, 0xa438, 0xd705,
+ 0xa438, 0x5f77, 0xa438, 0x8380, 0xa438, 0x1000, 0xa438, 0x1d50,
+ 0xa438, 0xffdf, 0xa438, 0x8403, 0xa438, 0x1000, 0xa438, 0x1cd2,
+ 0xa438, 0xd700, 0xa438, 0x629c, 0xa438, 0xfffb, 0xa438, 0x8403,
+ 0xa438, 0x1000, 0xa438, 0x1cd2, 0xa438, 0xd71f, 0xa438, 0x6096,
+ 0xa438, 0xd700, 0xa438, 0x619c, 0xa438, 0xfffa, 0xa438, 0xd706,
+ 0xa438, 0x4128, 0xa438, 0xd702, 0xa438, 0x60b0, 0xa438, 0x0c03,
+ 0xa438, 0x1502, 0xa438, 0xae80, 0xa438, 0x9503, 0xa438, 0x1800,
+ 0xa438, 0x8431, 0xa438, 0xd17a, 0xa438, 0xd05a, 0xa438, 0xd700,
+ 0xa438, 0x60cf, 0xa438, 0x60f1, 0xa438, 0x6113, 0xa438, 0x6135,
+ 0xa438, 0x6157, 0xa438, 0xf00b, 0xa438, 0xce06, 0xa438, 0xf00a,
+ 0xa438, 0xce06, 0xa438, 0xf008, 0xa438, 0xce06, 0xa438, 0xf006,
+ 0xa438, 0xce06, 0xa438, 0xf004, 0xa438, 0xce06, 0xa438, 0xf002,
+ 0xa438, 0xce06, 0xa438, 0x1000, 0xa438, 0x1ce7, 0xa438, 0x0c03,
+ 0xa438, 0x1502, 0xa438, 0x0c0f, 0xa438, 0x0b04, 0xa438, 0x0c3f,
+ 0xa438, 0x0c21, 0xa438, 0x8d07, 0xa438, 0x0cc3, 0xa438, 0x0b40,
+ 0xa438, 0x0c3f, 0xa438, 0x0c24, 0xa438, 0x8d07, 0xa438, 0x9503,
+ 0xa438, 0xa340, 0xa438, 0x1000, 0xa438, 0x1d47, 0xa438, 0xa110,
+ 0xa438, 0x1000, 0xa438, 0x1cef, 0xa438, 0x8110, 0xa438, 0x1000,
+ 0xa438, 0x1d50, 0xa438, 0xa304, 0xa438, 0xa440, 0xa438, 0xa8c0,
+ 0xa438, 0x8810, 0xa438, 0xa00a, 0xa438, 0xa120, 0xa438, 0xa310,
+ 0xa438, 0xd704, 0xa438, 0x405d, 0xa438, 0xa308, 0xa438, 0x0cfc,
+ 0xa438, 0x0224, 0xa438, 0x0ca0, 0xa438, 0x0480, 0xa438, 0x8604,
+ 0xa438, 0xcd35, 0xa438, 0xd162, 0xa438, 0xd048, 0xa438, 0x1000,
+ 0xa438, 0x1cd2, 0xa438, 0xd700, 0xa438, 0x5fba, 0xa438, 0x8840,
+ 0xa438, 0xd1c4, 0xa438, 0xd045, 0xa438, 0x1000, 0xa438, 0x1cd2,
+ 0xa438, 0xd700, 0xa438, 0x5fba, 0xa438, 0xd706, 0xa438, 0x6127,
+ 0xa438, 0xd700, 0xa438, 0x5f3b, 0xa438, 0x88c0, 0xa438, 0x800a,
+ 0xa438, 0x8120, 0xa438, 0x8350, 0xa438, 0x84a0, 0xa438, 0xffae,
+ 0xa438, 0xbb80, 0xa438, 0x1000, 0xa438, 0x1cd2, 0xa438, 0xd71f,
+ 0xa438, 0x5fb4, 0xa438, 0xb920, 0xa438, 0xcd36, 0xa438, 0x1000,
+ 0xa438, 0x1cd2, 0xa438, 0xd71f, 0xa438, 0x7fb4, 0xa438, 0x9920,
+ 0xa438, 0x9b80, 0xa438, 0x1000, 0xa438, 0x1cd2, 0xa438, 0xd71f,
+ 0xa438, 0x6065, 0xa438, 0x5f94, 0xa438, 0xffe8, 0xa438, 0xb820,
+ 0xa438, 0x1000, 0xa438, 0x1cd2, 0xa438, 0xd71f, 0xa438, 0x7fa5,
+ 0xa438, 0x9820, 0xa438, 0x800a, 0xa438, 0x8120, 0xa438, 0x1000,
+ 0xa438, 0x1d47, 0xa438, 0xa108, 0xa438, 0x1000, 0xa438, 0x1cef,
+ 0xa438, 0x8108, 0xa438, 0x1000, 0xa438, 0x1d50, 0xa438, 0xd704,
+ 0xa438, 0x60bd, 0xa438, 0xd707, 0xa438, 0x413f, 0xa438, 0x4100,
+ 0xa438, 0xf004, 0xa438, 0x0cfd, 0xa438, 0x0201, 0xa438, 0xf005,
+ 0xa438, 0x0cfc, 0xa438, 0x02bc, 0xa438, 0xf002, 0xa438, 0xa2fc,
+ 0xa438, 0xa304, 0xa438, 0x8880, 0xa438, 0x0cc0, 0xa438, 0x0440,
+ 0xa438, 0xcd37, 0xa438, 0xd704, 0xa438, 0x407d, 0xa438, 0x405b,
+ 0xa438, 0xf006, 0xa438, 0xd704, 0xa438, 0x60fd, 0xa438, 0xd707,
+ 0xa438, 0x40bf, 0xa438, 0x4080, 0xa438, 0x8310, 0xa438, 0x1000,
+ 0xa438, 0x1d15, 0xa438, 0x0c03, 0xa438, 0x1502, 0xa438, 0x8c07,
+ 0xa438, 0x0cc0, 0xa438, 0x0b00, 0xa438, 0xd704, 0xa438, 0x40bd,
+ 0xa438, 0x8b0f, 0xa438, 0x8c38, 0xa438, 0x8c3f, 0xa438, 0xf005,
+ 0xa438, 0x0c0f, 0xa438, 0x0b07, 0xa438, 0xac38, 0xa438, 0xac3f,
+ 0xa438, 0x0c38, 0xa438, 0x0d10, 0xa438, 0x0c38, 0xa438, 0x0d10,
+ 0xa438, 0x9503, 0xa438, 0xa810, 0xa438, 0xa00a, 0xa438, 0xa120,
+ 0xa438, 0xd704, 0xa438, 0x607d, 0xa438, 0xa4a0, 0xa438, 0xa604,
+ 0xa438, 0xd700, 0xa438, 0x37c9, 0xa438, 0x83d0, 0xa438, 0x33a9,
+ 0xa438, 0x83cd, 0xa438, 0xd17a, 0xa438, 0xd048, 0xa438, 0xf006,
+ 0xa438, 0xd17a, 0xa438, 0xd048, 0xa438, 0xf003, 0xa438, 0xd17a,
+ 0xa438, 0xd048, 0xa438, 0xd704, 0xa438, 0x413d, 0xa438, 0xa00a,
+ 0xa438, 0xa120, 0xa438, 0xd704, 0xa438, 0x407b, 0xa438, 0x8310,
+ 0xa438, 0xf002, 0xa438, 0xa310, 0xa438, 0xa403, 0xa438, 0x1000,
+ 0xa438, 0x1cd2, 0xa438, 0x1000, 0xa438, 0x1d2b, 0xa438, 0xd700,
+ 0xa438, 0x409a, 0xa438, 0xd706, 0xa438, 0x4048, 0xa438, 0xf014,
+ 0xa438, 0xd704, 0xa438, 0x6055, 0xa438, 0xfff5, 0xa438, 0x1000,
+ 0xa438, 0x1d47, 0xa438, 0x800a, 0xa438, 0x8120, 0xa438, 0x8310,
+ 0xa438, 0xa380, 0xa438, 0x1000, 0xa438, 0x1cd2, 0xa438, 0x1000,
+ 0xa438, 0x1d2b, 0xa438, 0xd705, 0xa438, 0x5f77, 0xa438, 0x8380,
+ 0xa438, 0x1000, 0xa438, 0x1d50, 0xa438, 0xffdd, 0xa438, 0x0c03,
+ 0xa438, 0x1502, 0xa438, 0x8b0f, 0xa438, 0x8c38, 0xa438, 0x8d38,
+ 0xa438, 0x9503, 0xa438, 0xd700, 0xa438, 0x37c9, 0xa438, 0x8409,
+ 0xa438, 0x33a9, 0xa438, 0x8406, 0xa438, 0xd13d, 0xa438, 0xd04b,
+ 0xa438, 0xf006, 0xa438, 0xd17a, 0xa438, 0xd04a, 0xa438, 0xf003,
+ 0xa438, 0xd189, 0xa438, 0xd04c, 0xa438, 0xd704, 0xa438, 0x413d,
+ 0xa438, 0xa00a, 0xa438, 0xa120, 0xa438, 0xd704, 0xa438, 0x407b,
+ 0xa438, 0x8310, 0xa438, 0xf002, 0xa438, 0xa310, 0xa438, 0xa403,
+ 0xa438, 0x1000, 0xa438, 0x1cd2, 0xa438, 0x1000, 0xa438, 0x1d2b,
+ 0xa438, 0xd700, 0xa438, 0x409a, 0xa438, 0xd706, 0xa438, 0x4048,
+ 0xa438, 0xf014, 0xa438, 0xd704, 0xa438, 0x6055, 0xa438, 0xfff5,
+ 0xa438, 0x1000, 0xa438, 0x1d47, 0xa438, 0x800a, 0xa438, 0x8120,
+ 0xa438, 0x8310, 0xa438, 0xa380, 0xa438, 0x1000, 0xa438, 0x1cd2,
+ 0xa438, 0x1000, 0xa438, 0x1d2b, 0xa438, 0xd705, 0xa438, 0x5f77,
+ 0xa438, 0x8380, 0xa438, 0x1000, 0xa438, 0x1d50, 0xa438, 0xffdd,
+ 0xa438, 0x0c03, 0xa438, 0x1502, 0xa438, 0x0c07, 0xa438, 0x0d01,
+ 0xa438, 0x0c03, 0xa438, 0x0b01, 0xa438, 0x0c07, 0xa438, 0x0d01,
+ 0xa438, 0x9503, 0xa438, 0xd700, 0xa438, 0x60cf, 0xa438, 0x60f1,
+ 0xa438, 0x6113, 0xa438, 0x6135, 0xa438, 0x6157, 0xa438, 0xf00b,
+ 0xa438, 0xce08, 0xa438, 0xf00a, 0xa438, 0xce08, 0xa438, 0xf008,
+ 0xa438, 0xce08, 0xa438, 0xf006, 0xa438, 0xce08, 0xa438, 0xf004,
+ 0xa438, 0xce08, 0xa438, 0xf002, 0xa438, 0xce08, 0xa438, 0x1000,
+ 0xa438, 0x1ce7, 0xa438, 0xa180, 0xa438, 0xcd38, 0xa438, 0xd700,
+ 0xa438, 0x37c9, 0xa438, 0x8465, 0xa438, 0x33a9, 0xa438, 0x845d,
+ 0xa438, 0xd702, 0xa438, 0x4098, 0xa438, 0xd17a, 0xa438, 0xd04a,
+ 0xa438, 0xf013, 0xa438, 0xd100, 0xa438, 0xd049, 0xa438, 0xf010,
+ 0xa438, 0xd702, 0xa438, 0x4098, 0xa438, 0xd1b7, 0xa438, 0xd049,
+ 0xa438, 0xf00b, 0xa438, 0xd100, 0xa438, 0xd048, 0xa438, 0xf008,
+ 0xa438, 0xd702, 0xa438, 0x4098, 0xa438, 0xd17a, 0xa438, 0xd04b,
+ 0xa438, 0xf003, 0xa438, 0xd199, 0xa438, 0xd04a, 0xa438, 0xd13b,
+ 0xa438, 0xd055, 0xa438, 0xd704, 0xa438, 0x413d, 0xa438, 0xa00a,
+ 0xa438, 0xa1a0, 0xa438, 0xd704, 0xa438, 0x407b, 0xa438, 0x8310,
+ 0xa438, 0xf002, 0xa438, 0xa310, 0xa438, 0xa403, 0xa438, 0x1000,
+ 0xa438, 0x1cd2, 0xa438, 0x1000, 0xa438, 0x1d2b, 0xa438, 0xd700,
+ 0xa438, 0x405b, 0xa438, 0xf014, 0xa438, 0xd704, 0xa438, 0x6055,
+ 0xa438, 0xfff7, 0xa438, 0x1000, 0xa438, 0x1d47, 0xa438, 0x800a,
+ 0xa438, 0x81a0, 0xa438, 0x8310, 0xa438, 0xa380, 0xa438, 0x1000,
+ 0xa438, 0x1cd2, 0xa438, 0x1000, 0xa438, 0x1d2b, 0xa438, 0xd705,
+ 0xa438, 0x5f77, 0xa438, 0x8380, 0xa438, 0x1000, 0xa438, 0x1d50,
+ 0xa438, 0xffdf, 0xa438, 0xa302, 0xa438, 0xd704, 0xa438, 0x415d,
+ 0xa438, 0xa00a, 0xa438, 0xa1a0, 0xa438, 0xd704, 0xa438, 0x407b,
+ 0xa438, 0x8310, 0xa438, 0xf002, 0xa438, 0xa310, 0xa438, 0xa302,
+ 0xa438, 0xa403, 0xa438, 0x1000, 0xa438, 0x1cd2, 0xa438, 0x1000,
+ 0xa438, 0x1d2b, 0xa438, 0xd700, 0xa438, 0x409a, 0xa438, 0xd706,
+ 0xa438, 0x4048, 0xa438, 0xf014, 0xa438, 0xd704, 0xa438, 0x6055,
+ 0xa438, 0xfff5, 0xa438, 0x1000, 0xa438, 0x1d47, 0xa438, 0x800a,
+ 0xa438, 0x81a0, 0xa438, 0x8312, 0xa438, 0xa380, 0xa438, 0x1000,
+ 0xa438, 0x1cd2, 0xa438, 0x1000, 0xa438, 0x1d2b, 0xa438, 0xd705,
+ 0xa438, 0x5f77, 0xa438, 0x8380, 0xa438, 0x1000, 0xa438, 0x1d50,
+ 0xa438, 0xffdc, 0xa438, 0x0c03, 0xa438, 0x1502, 0xa438, 0x0c0f,
+ 0xa438, 0x0b02, 0xa438, 0x0c38, 0xa438, 0x0c10, 0xa438, 0x0c3f,
+ 0xa438, 0x0c12, 0xa438, 0x9503, 0xa438, 0xd700, 0xa438, 0x37c9,
+ 0xa438, 0x84d8, 0xa438, 0x33a9, 0xa438, 0x84d0, 0xa438, 0xd702,
+ 0xa438, 0x4098, 0xa438, 0xd199, 0xa438, 0xd04a, 0xa438, 0xf013,
+ 0xa438, 0xd100, 0xa438, 0xd04a, 0xa438, 0xf010, 0xa438, 0xd702,
+ 0xa438, 0x4098, 0xa438, 0xd17a, 0xa438, 0xd04a, 0xa438, 0xf00b,
+ 0xa438, 0xd100, 0xa438, 0xd048, 0xa438, 0xf008, 0xa438, 0xd702,
+ 0xa438, 0x4098, 0xa438, 0xd199, 0xa438, 0xd04b, 0xa438, 0xf003,
+ 0xa438, 0xd16b, 0xa438, 0xd04b, 0xa438, 0xd704, 0xa438, 0x415d,
+ 0xa438, 0xa00a, 0xa438, 0xa1a0, 0xa438, 0xd704, 0xa438, 0x407b,
+ 0xa438, 0x8310, 0xa438, 0xf002, 0xa438, 0xa310, 0xa438, 0xa302,
+ 0xa438, 0xa403, 0xa438, 0x1000, 0xa438, 0x1cd2, 0xa438, 0x1000,
+ 0xa438, 0x1d2b, 0xa438, 0xd700, 0xa438, 0x40ba, 0xa438, 0xd706,
+ 0xa438, 0x406a, 0xa438, 0x8403, 0xa438, 0xf014, 0xa438, 0xd704,
+ 0xa438, 0x6055, 0xa438, 0xfff4, 0xa438, 0x1000, 0xa438, 0x1d47,
+ 0xa438, 0x800a, 0xa438, 0x81a0, 0xa438, 0x8312, 0xa438, 0xa380,
+ 0xa438, 0x1000, 0xa438, 0x1cd2, 0xa438, 0x1000, 0xa438, 0x1d2b,
+ 0xa438, 0xd705, 0xa438, 0x5f77, 0xa438, 0x8380, 0xa438, 0x1000,
+ 0xa438, 0x1d50, 0xa438, 0xffdb, 0xa438, 0x81a0, 0xa438, 0x8310,
+ 0xa438, 0xa302, 0xa438, 0xa00a, 0xa438, 0xa480, 0xa438, 0x8420,
+ 0xa438, 0xd700, 0xa438, 0x2969, 0xa438, 0x8517, 0xa438, 0x60e4,
+ 0xa438, 0xd700, 0xa438, 0x40a7, 0xa438, 0xd704, 0xa438, 0x407d,
+ 0xa438, 0x8604, 0xa438, 0xf002, 0xa438, 0xa604, 0xa438, 0xd700,
+ 0xa438, 0x60c7, 0xa438, 0xa602, 0xa438, 0x0c03, 0xa438, 0x1502,
+ 0xa438, 0xa702, 0xa438, 0x9503, 0xa438, 0x0c03, 0xa438, 0x1502,
+ 0xa438, 0xa340, 0xa438, 0x9503, 0xa438, 0xd700, 0xa438, 0x60cf,
+ 0xa438, 0x60f1, 0xa438, 0x6113, 0xa438, 0x6135, 0xa438, 0x6157,
+ 0xa438, 0xf00b, 0xa438, 0xce03, 0xa438, 0xf00a, 0xa438, 0xce03,
+ 0xa438, 0xf008, 0xa438, 0xce03, 0xa438, 0xf006, 0xa438, 0xce03,
+ 0xa438, 0xf004, 0xa438, 0xce03, 0xa438, 0xf002, 0xa438, 0xce03,
+ 0xa438, 0x1000, 0xa438, 0x1ce7, 0xa438, 0x0c03, 0xa438, 0x1502,
+ 0xa438, 0x0c07, 0xa438, 0x0c01, 0xa438, 0x0c3f, 0xa438, 0x0d08,
+ 0xa438, 0x9503, 0xa438, 0xd700, 0xa438, 0x646d, 0xa438, 0x37c9,
+ 0xa438, 0x8558, 0xa438, 0x33a9, 0xa438, 0x854e, 0xa438, 0xd700,
+ 0xa438, 0x40c7, 0xa438, 0xd702, 0xa438, 0x6098, 0xa438, 0xd100,
+ 0xa438, 0xd048, 0xa438, 0xf01a, 0xa438, 0xd17a, 0xa438, 0xd049,
+ 0xa438, 0xf017, 0xa438, 0xd700, 0xa438, 0x40c7, 0xa438, 0xd702,
+ 0xa438, 0x6098, 0xa438, 0xd100, 0xa438, 0xd049, 0xa438, 0xf010,
+ 0xa438, 0xd17a, 0xa438, 0xd04c, 0xa438, 0xf00d, 0xa438, 0xd700,
+ 0xa438, 0x40c7, 0xa438, 0xd702, 0xa438, 0x6098, 0xa438, 0xd17a,
+ 0xa438, 0xd04a, 0xa438, 0xf006, 0xa438, 0xd17a, 0xa438, 0xd04a,
+ 0xa438, 0xf003, 0xa438, 0xd17a, 0xa438, 0xd048, 0xa438, 0x1000,
+ 0xa438, 0x1cd2, 0xa438, 0x1000, 0xa438, 0x1d2b, 0xa438, 0xd700,
+ 0xa438, 0x5f7a, 0xa438, 0xd706, 0xa438, 0x5f29, 0xa438, 0xd700,
+ 0xa438, 0x60cf, 0xa438, 0x60f1, 0xa438, 0x6113, 0xa438, 0x6135,
+ 0xa438, 0x6157, 0xa438, 0xf00b, 0xa438, 0xce06, 0xa438, 0xf00a,
+ 0xa438, 0xce06, 0xa438, 0xf008, 0xa438, 0xce06, 0xa438, 0xf006,
+ 0xa438, 0xce06, 0xa438, 0xf004, 0xa438, 0xce06, 0xa438, 0xf002,
+ 0xa438, 0xce06, 0xa438, 0x1000, 0xa438, 0x1ce7, 0xa438, 0x0c03,
+ 0xa438, 0x1502, 0xa438, 0x0c0f, 0xa438, 0x0b01, 0xa438, 0x0c3f,
+ 0xa438, 0x0c08, 0xa438, 0x9503, 0xa438, 0xa120, 0xa438, 0xd700,
+ 0xa438, 0x2969, 0xa438, 0x859c, 0xa438, 0x6224, 0xa438, 0xd700,
+ 0xa438, 0x4147, 0xa438, 0xd704, 0xa438, 0x409d, 0xa438, 0xd704,
+ 0xa438, 0x613b, 0xa438, 0xf00a, 0xa438, 0xd707, 0xa438, 0x411f,
+ 0xa438, 0x40e0, 0xa438, 0xf004, 0xa438, 0xd707, 0xa438, 0x409f,
+ 0xa438, 0x4062, 0xa438, 0x8310, 0xa438, 0xf002, 0xa438, 0xa310,
+ 0xa438, 0xd700, 0xa438, 0x2969, 0xa438, 0x85a7, 0xa438, 0x60e4,
+ 0xa438, 0xd700, 0xa438, 0x40a7, 0xa438, 0xd704, 0xa438, 0x407d,
+ 0xa438, 0xa202, 0xa438, 0xf002, 0xa438, 0x8202, 0xa438, 0xa420,
+ 0xa438, 0xcd3b, 0xa438, 0xd700, 0xa438, 0x65ad, 0xa438, 0x43c7,
+ 0xa438, 0xd700, 0xa438, 0x37c9, 0xa438, 0x85c2, 0xa438, 0x33a9,
+ 0xa438, 0x85ba, 0xa438, 0xd702, 0xa438, 0x4098, 0xa438, 0xd199,
+ 0xa438, 0xd04c, 0xa438, 0xf024, 0xa438, 0xd13d, 0xa438, 0xd04a,
+ 0xa438, 0xf021, 0xa438, 0xd702, 0xa438, 0x4098, 0xa438, 0xd1c6,
+ 0xa438, 0xd04c, 0xa438, 0xf01c, 0xa438, 0xd15c, 0xa438, 0xd04a,
+ 0xa438, 0xf019, 0xa438, 0xd702, 0xa438, 0x4098, 0xa438, 0xd199,
+ 0xa438, 0xd04c, 0xa438, 0xf014, 0xa438, 0xd17a, 0xa438, 0xd04c,
+ 0xa438, 0xf011, 0xa438, 0xd700, 0xa438, 0x37c9, 0xa438, 0x85d5,
+ 0xa438, 0x33a9, 0xa438, 0x85d2, 0xa438, 0xd1e5, 0xa438, 0xd04c,
+ 0xa438, 0xf009, 0xa438, 0xd191, 0xa438, 0xd04d, 0xa438, 0xf006,
+ 0xa438, 0xd17a, 0xa438, 0xd04d, 0xa438, 0xf003, 0xa438, 0xd16b,
+ 0xa438, 0xd04c, 0xa438, 0x1000, 0xa438, 0x1cd2, 0xa438, 0x1000,
+ 0xa438, 0x1d2b, 0xa438, 0xd700, 0xa438, 0x5f7a, 0xa438, 0xd706,
+ 0xa438, 0x5f2c, 0xa438, 0xd700, 0xa438, 0x40e7, 0xa438, 0x0c03,
+ 0xa438, 0x1502, 0xa438, 0x0c07, 0xa438, 0x0d01, 0xa438, 0x9503,
+ 0xa438, 0xf006, 0xa438, 0x0c03, 0xa438, 0x1502, 0xa438, 0x0c07,
+ 0xa438, 0x0d02, 0xa438, 0x9503, 0xa438, 0xcd3c, 0xa438, 0xd700,
+ 0xa438, 0x644d, 0xa438, 0x43c7, 0xa438, 0xd700, 0xa438, 0x37c9,
+ 0xa438, 0x8608, 0xa438, 0x33a9, 0xa438, 0x8600, 0xa438, 0xd702,
+ 0xa438, 0x4098, 0xa438, 0xd17a, 0xa438, 0xd04a, 0xa438, 0xf019,
+ 0xa438, 0xd17a, 0xa438, 0xd048, 0xa438, 0xf016, 0xa438, 0xd702,
+ 0xa438, 0x4098, 0xa438, 0xd17a, 0xa438, 0xd04b, 0xa438, 0xf011,
+ 0xa438, 0xd17a, 0xa438, 0xd048, 0xa438, 0xf00e, 0xa438, 0xd702,
+ 0xa438, 0x4098, 0xa438, 0xd17a, 0xa438, 0xd04a, 0xa438, 0xf009,
+ 0xa438, 0xd17a, 0xa438, 0xd049, 0xa438, 0xf006, 0xa438, 0xd17a,
+ 0xa438, 0xd04b, 0xa438, 0xf003, 0xa438, 0xd17a, 0xa438, 0xd048,
+ 0xa438, 0x1000, 0xa438, 0x1cd2, 0xa438, 0x1000, 0xa438, 0x1d2b,
+ 0xa438, 0xd700, 0xa438, 0x5f7a, 0xa438, 0xd706, 0xa438, 0x5f2d,
+ 0xa438, 0xd700, 0xa438, 0x60cf, 0xa438, 0x60f1, 0xa438, 0x6113,
+ 0xa438, 0x6135, 0xa438, 0x6157, 0xa438, 0xf00b, 0xa438, 0xce08,
+ 0xa438, 0xf00a, 0xa438, 0xce08, 0xa438, 0xf008, 0xa438, 0xce08,
+ 0xa438, 0xf006, 0xa438, 0xce08, 0xa438, 0xf004, 0xa438, 0xce08,
+ 0xa438, 0xf002, 0xa438, 0xce08, 0xa438, 0x1000, 0xa438, 0x1ce7,
+ 0xa438, 0x0c03, 0xa438, 0x1502, 0xa438, 0x0c0f, 0xa438, 0x0b02,
+ 0xa438, 0x0c38, 0xa438, 0x0c10, 0xa438, 0x9503, 0xa438, 0xa180,
+ 0xa438, 0xcd3d, 0xa438, 0xd700, 0xa438, 0x2969, 0xa438, 0x865f,
+ 0xa438, 0x37c9, 0xa438, 0x8655, 0xa438, 0x33a9, 0xa438, 0x864b,
+ 0xa438, 0xd700, 0xa438, 0x40c7, 0xa438, 0xd702, 0xa438, 0x6098,
+ 0xa438, 0xd11f, 0xa438, 0xd04a, 0xa438, 0xf01a, 0xa438, 0xd199,
+ 0xa438, 0xd04b, 0xa438, 0xf017, 0xa438, 0xd700, 0xa438, 0x40c7,
+ 0xa438, 0xd702, 0xa438, 0x6098, 0xa438, 0xd11f, 0xa438, 0xd04a,
+ 0xa438, 0xf010, 0xa438, 0xd199, 0xa438, 0xd04b, 0xa438, 0xf00d,
+ 0xa438, 0xd700, 0xa438, 0x40c7, 0xa438, 0xd702, 0xa438, 0x6098,
+ 0xa438, 0xd17a, 0xa438, 0xd04c, 0xa438, 0xf006, 0xa438, 0xd199,
+ 0xa438, 0xd04c, 0xa438, 0xf003, 0xa438, 0xd17a, 0xa438, 0xd04b,
+ 0xa438, 0x1800, 0xa438, 0x0e04, 0xa438, 0xd700, 0xa438, 0x37c9,
+ 0xa438, 0x8678, 0xa438, 0x33a9, 0xa438, 0x8670, 0xa438, 0xd705,
+ 0xa438, 0x4084, 0xa438, 0xd1f4, 0xa438, 0xd048, 0xa438, 0xf013,
+ 0xa438, 0xd1b7, 0xa438, 0xd04b, 0xa438, 0xf010, 0xa438, 0xd705,
+ 0xa438, 0x4084, 0xa438, 0xd1f4, 0xa438, 0xd048, 0xa438, 0xf00b,
+ 0xa438, 0xd1b7, 0xa438, 0xd04b, 0xa438, 0xf008, 0xa438, 0xd705,
+ 0xa438, 0x4084, 0xa438, 0xd1f4, 0xa438, 0xd048, 0xa438, 0xf003,
+ 0xa438, 0xd1b7, 0xa438, 0xd04b, 0xa438, 0x1800, 0xa438, 0x14cc,
+ 0xa438, 0xd700, 0xa438, 0x2b59, 0xa438, 0x8685, 0xa438, 0xf003,
+ 0xa438, 0x1800, 0xa438, 0x118f, 0xa438, 0x6060, 0xa438, 0x1800,
+ 0xa438, 0x1167, 0xa438, 0xd700, 0xa438, 0x60c7, 0xa438, 0xd704,
+ 0xa438, 0x609f, 0xa438, 0xd705, 0xa438, 0x4043, 0xa438, 0xf003,
+ 0xa438, 0x1800, 0xa438, 0x1150, 0xa438, 0x0c03, 0xa438, 0x1502,
+ 0xa438, 0x8702, 0xa438, 0x8011, 0xa438, 0x9503, 0xa438, 0x800a,
+ 0xa438, 0x81a0, 0xa438, 0x8302, 0xa438, 0x8480, 0xa438, 0x8686,
+ 0xa438, 0xcde0, 0xa438, 0xd1ff, 0xa438, 0xd049, 0xa438, 0x1000,
+ 0xa438, 0x1cd2, 0xa438, 0xd700, 0xa438, 0x5fba, 0xa438, 0xd705,
+ 0xa438, 0x417e, 0xa438, 0x0c03, 0xa438, 0x1502, 0xa438, 0xa011,
+ 0xa438, 0x9503, 0xa438, 0xd1c8, 0xa438, 0xd045, 0xa438, 0x1000,
+ 0xa438, 0x1cd2, 0xa438, 0xd700, 0xa438, 0x5fba, 0xa438, 0x0c03,
+ 0xa438, 0x1502, 0xa438, 0xa702, 0xa438, 0x9503, 0xa438, 0xa00a,
+ 0xa438, 0xa1a0, 0xa438, 0xa480, 0xa438, 0xa686, 0xa438, 0xd705,
+ 0xa438, 0x605e, 0xa438, 0xa302, 0xa438, 0x9503, 0xa438, 0xd700,
+ 0xa438, 0x37c9, 0xa438, 0x86c9, 0xa438, 0x33a9, 0xa438, 0x86c5,
+ 0xa438, 0xd178, 0xa438, 0xd04b, 0xa438, 0x1800, 0xa438, 0x115d,
+ 0xa438, 0xd1c8, 0xa438, 0xd04b, 0xa438, 0x1800, 0xa438, 0x115d,
+ 0xa438, 0xd1e6, 0xa438, 0xd04b, 0xa438, 0x1800, 0xa438, 0x115d,
+ 0xa438, 0xd71f, 0xa438, 0x6080, 0xa438, 0xd704, 0xa438, 0x1800,
+ 0xa438, 0x1bc0, 0xa438, 0x1800, 0xa438, 0x1bc4, 0xa438, 0x4134,
+ 0xa438, 0xd115, 0xa438, 0xd04f, 0xa438, 0x1000, 0xa438, 0x1d0b,
+ 0xa438, 0x1000, 0xa438, 0x893a, 0xa438, 0x1800, 0xa438, 0x01f2,
+ 0xa438, 0x1000, 0xa438, 0x1d0b, 0xa438, 0x1000, 0xa438, 0x893a,
+ 0xa438, 0x1800, 0xa438, 0x01f9, 0xa438, 0x2969, 0xa438, 0x86e9,
+ 0xa438, 0xd700, 0xa438, 0x606b, 0xa438, 0xd701, 0xa438, 0x60b4,
+ 0xa438, 0x1000, 0xa438, 0x893a, 0xa438, 0x1800, 0xa438, 0x0551,
+ 0xa438, 0xd196, 0xa438, 0xd04d, 0xa438, 0x1000, 0xa438, 0x893a,
+ 0xa438, 0x1000, 0xa438, 0x1cd2, 0xa438, 0xd700, 0xa438, 0x5fba,
+ 0xa438, 0x8802, 0xa438, 0xcd22, 0xa438, 0xd17a, 0xa438, 0xd05a,
+ 0xa438, 0xa501, 0xa438, 0x1000, 0xa438, 0x1cd2, 0xa438, 0xd701,
+ 0xa438, 0x5fbd, 0xa438, 0x8501, 0xa438, 0xa502, 0xa438, 0x1000,
+ 0xa438, 0x1cd2, 0xa438, 0xd702, 0xa438, 0x5fbe, 0xa438, 0x0c03,
+ 0xa438, 0x1502, 0xa438, 0x8380, 0xa438, 0x9503, 0xa438, 0xd403,
+ 0xa438, 0x1000, 0xa438, 0x1cc8, 0xa438, 0x8502, 0xa438, 0x0c03,
+ 0xa438, 0x1502, 0xa438, 0x8a80, 0xa438, 0x9503, 0xa438, 0xd40c,
+ 0xa438, 0x1000, 0xa438, 0x1cc8, 0xa438, 0xd707, 0xa438, 0x428f,
+ 0xa438, 0xd700, 0xa438, 0x60cf, 0xa438, 0x60f1, 0xa438, 0x6113,
+ 0xa438, 0x6135, 0xa438, 0x6157, 0xa438, 0xf00b, 0xa438, 0xce06,
+ 0xa438, 0xf01d, 0xa438, 0xce06, 0xa438, 0xf01b, 0xa438, 0xce06,
+ 0xa438, 0xf019, 0xa438, 0xce06, 0xa438, 0xf017, 0xa438, 0xce06,
+ 0xa438, 0xf015, 0xa438, 0xce06, 0xa438, 0xf013, 0xa438, 0xd700,
+ 0xa438, 0x60cf, 0xa438, 0x60f1, 0xa438, 0x6113, 0xa438, 0x6135,
+ 0xa438, 0x6157, 0xa438, 0xf00b, 0xa438, 0xce02, 0xa438, 0xf00a,
+ 0xa438, 0xce02, 0xa438, 0xf008, 0xa438, 0xce01, 0xa438, 0xf006,
+ 0xa438, 0xce01, 0xa438, 0xf004, 0xa438, 0xce01, 0xa438, 0xf002,
+ 0xa438, 0xce01, 0xa438, 0x1000, 0xa438, 0x1ce7, 0xa438, 0xa340,
+ 0xa438, 0x1000, 0xa438, 0x1d47, 0xa438, 0xa110, 0xa438, 0x1000,
+ 0xa438, 0x1cef, 0xa438, 0x8110, 0xa438, 0x1000, 0xa438, 0x1d50,
+ 0xa438, 0xa304, 0xa438, 0xa440, 0xa438, 0xa8c0, 0xa438, 0xd707,
+ 0xa438, 0x40cf, 0xa438, 0x0c03, 0xa438, 0x1502, 0xa438, 0x8d07,
+ 0xa438, 0x9503, 0xa438, 0xa00a, 0xa438, 0xa120, 0xa438, 0xa310,
+ 0xa438, 0x0ca0, 0xa438, 0x0480, 0xa438, 0xd700, 0xa438, 0x2969,
+ 0xa438, 0x05b7, 0xa438, 0x60a4, 0xa438, 0xd704, 0xa438, 0x407d,
+ 0xa438, 0xa308, 0xa438, 0xf002, 0xa438, 0x8308, 0xa438, 0x0c03,
+ 0xa438, 0x1502, 0xa438, 0x0c60, 0xa438, 0x0340, 0xa438, 0x9503,
+ 0xa438, 0xcd23, 0xa438, 0xd162, 0xa438, 0xd048, 0xa438, 0x1000,
+ 0xa438, 0x1cd2, 0xa438, 0xd700, 0xa438, 0x5fba, 0xa438, 0x8840,
+ 0xa438, 0xd1c4, 0xa438, 0xd045, 0xa438, 0x1000, 0xa438, 0x1cd2,
+ 0xa438, 0xd700, 0xa438, 0x5fba, 0xa438, 0xd706, 0xa438, 0x6327,
+ 0xa438, 0xd700, 0xa438, 0x5f3b, 0xa438, 0x88c0, 0xa438, 0x800a,
+ 0xa438, 0x8120, 0xa438, 0x8358, 0xa438, 0x8308, 0xa438, 0x84a0,
+ 0xa438, 0x0c03, 0xa438, 0x1502, 0xa438, 0x8360, 0xa438, 0x9503,
+ 0xa438, 0xd707, 0xa438, 0x2f7d, 0xa438, 0x86f7, 0xa438, 0xd17a,
+ 0xa438, 0xd05a, 0xa438, 0xa501, 0xa438, 0x1000, 0xa438, 0x1cd2,
+ 0xa438, 0xd701, 0xa438, 0x5fbd, 0xa438, 0x8501, 0xa438, 0xff8b,
+ 0xa438, 0x1000, 0xa438, 0x1cd2, 0xa438, 0xd71f, 0xa438, 0x5fb4,
+ 0xa438, 0xb920, 0xa438, 0xcd24, 0xa438, 0x1000, 0xa438, 0x1cd2,
+ 0xa438, 0xd71f, 0xa438, 0x7fb4, 0xa438, 0x9920, 0xa438, 0x9a20,
+ 0xa438, 0x1000, 0xa438, 0x1cd2, 0xa438, 0xd71f, 0xa438, 0x6065,
+ 0xa438, 0x5f94, 0xa438, 0xffd9, 0xa438, 0xb820, 0xa438, 0x1000,
+ 0xa438, 0x1cd2, 0xa438, 0xd71f, 0xa438, 0x7fa5, 0xa438, 0x9820,
+ 0xa438, 0x800a, 0xa438, 0x8120, 0xa438, 0x1000, 0xa438, 0x1d47,
+ 0xa438, 0xa108, 0xa438, 0x1000, 0xa438, 0x1cef, 0xa438, 0x8108,
+ 0xa438, 0x1000, 0xa438, 0x1d50, 0xa438, 0xd700, 0xa438, 0x2969,
+ 0xa438, 0x87b8, 0xa438, 0x6144, 0xa438, 0xd704, 0xa438, 0x60bd,
+ 0xa438, 0xd707, 0xa438, 0x417f, 0xa438, 0x4140, 0xa438, 0xf006,
+ 0xa438, 0x82fc, 0xa438, 0xa201, 0xa438, 0xf007, 0xa438, 0xa2fc,
+ 0xa438, 0xf005, 0xa438, 0x0cfc, 0xa438, 0x02bc, 0xa438, 0xf002,
+ 0xa438, 0xa2fc, 0xa438, 0xa304, 0xa438, 0x8880, 0xa438, 0x0cc0,
+ 0xa438, 0x0440, 0xa438, 0xcd25, 0xa438, 0xd700, 0xa438, 0x2969,
+ 0xa438, 0x87d7, 0xa438, 0x6224, 0xa438, 0xd704, 0xa438, 0x605d,
+ 0xa438, 0xf004, 0xa438, 0xd704, 0xa438, 0x613b, 0xa438, 0xf00b,
+ 0xa438, 0xd700, 0xa438, 0x2969, 0xa438, 0x87d7, 0xa438, 0x60eb,
+ 0xa438, 0xd707, 0xa438, 0x40bf, 0xa438, 0x4080, 0xa438, 0x8310,
+ 0xa438, 0x1000, 0xa438, 0x1d15, 0xa438, 0xd700, 0xa438, 0x60cf,
+ 0xa438, 0x60f1, 0xa438, 0x6113, 0xa438, 0x6135, 0xa438, 0x6157,
+ 0xa438, 0xf00b, 0xa438, 0xce06, 0xa438, 0xf00a, 0xa438, 0xce06,
+ 0xa438, 0xf008, 0xa438, 0xce06, 0xa438, 0xf006, 0xa438, 0xce06,
+ 0xa438, 0xf004, 0xa438, 0xce06, 0xa438, 0xf002, 0xa438, 0xce06,
+ 0xa438, 0x1000, 0xa438, 0x1ce7, 0xa438, 0x0c03, 0xa438, 0x1502,
+ 0xa438, 0x8c07, 0xa438, 0x0c07, 0xa438, 0x0d03, 0xa438, 0xd700,
+ 0xa438, 0x2969, 0xa438, 0x87f9, 0xa438, 0x60c4, 0xa438, 0xd704,
+ 0xa438, 0x409d, 0xa438, 0x8b0f, 0xa438, 0x8c38, 0xa438, 0xf003,
+ 0xa438, 0xab07, 0xa438, 0xac38, 0xa438, 0x0c07, 0xa438, 0x0d03,
+ 0xa438, 0x9503, 0xa438, 0xa810, 0xa438, 0xa00a, 0xa438, 0xa120,
+ 0xa438, 0xd700, 0xa438, 0x2969, 0xa438, 0x8807, 0xa438, 0x6064,
+ 0xa438, 0xd704, 0xa438, 0x607d, 0xa438, 0xa4a0, 0xa438, 0xa605,
+ 0xa438, 0xd17a, 0xa438, 0xd049, 0xa438, 0xd700, 0xa438, 0x2969,
+ 0xa438, 0x8819, 0xa438, 0x6164, 0xa438, 0xd704, 0xa438, 0x413d,
+ 0xa438, 0xa00a, 0xa438, 0xa120, 0xa438, 0xd704, 0xa438, 0x407b,
+ 0xa438, 0x8310, 0xa438, 0xf002, 0xa438, 0xa310, 0xa438, 0xa403,
+ 0xa438, 0x1000, 0xa438, 0x1cd2, 0xa438, 0x1000, 0xa438, 0x1d2b,
+ 0xa438, 0xd700, 0xa438, 0x409a, 0xa438, 0xd706, 0xa438, 0x4046,
+ 0xa438, 0xf014, 0xa438, 0xd704, 0xa438, 0x6055, 0xa438, 0xfff5,
+ 0xa438, 0x1000, 0xa438, 0x1d47, 0xa438, 0x800a, 0xa438, 0x8120,
+ 0xa438, 0x8310, 0xa438, 0xa380, 0xa438, 0x1000, 0xa438, 0x1cd2,
+ 0xa438, 0x1000, 0xa438, 0x1d2b, 0xa438, 0xd705, 0xa438, 0x5f77,
+ 0xa438, 0x8380, 0xa438, 0x1000, 0xa438, 0x1d50, 0xa438, 0xffdd,
+ 0xa438, 0x0c03, 0xa438, 0x1502, 0xa438, 0x8b0f, 0xa438, 0x8c38,
+ 0xa438, 0x8d38, 0xa438, 0x9503, 0xa438, 0xcd26, 0xa438, 0xd704,
+ 0xa438, 0x63d1, 0xa438, 0xd700, 0xa438, 0x2969, 0xa438, 0x8858,
+ 0xa438, 0x37c9, 0xa438, 0x8855, 0xa438, 0x33a9, 0xa438, 0x884d,
+ 0xa438, 0xd705, 0xa438, 0x6084, 0xa438, 0xd18a, 0xa438, 0xd04b,
+ 0xa438, 0xf014, 0xa438, 0xd14c, 0xa438, 0xd04b, 0xa438, 0xf011,
+ 0xa438, 0xd705, 0xa438, 0x6084, 0xa438, 0xd17a, 0xa438, 0xd04b,
+ 0xa438, 0xf00c, 0xa438, 0xd15c, 0xa438, 0xd04b, 0xa438, 0xf009,
+ 0xa438, 0xd1c6, 0xa438, 0xd04b, 0xa438, 0xf006, 0xa438, 0xd1b7,
+ 0xa438, 0xd04a, 0xa438, 0xf003, 0xa438, 0xd1c4, 0xa438, 0xd046,
+ 0xa438, 0xd700, 0xa438, 0x2969, 0xa438, 0x886b, 0xa438, 0x6164,
+ 0xa438, 0xd704, 0xa438, 0x413d, 0xa438, 0xa00a, 0xa438, 0xa120,
+ 0xa438, 0xd704, 0xa438, 0x407b, 0xa438, 0x8310, 0xa438, 0xf002,
+ 0xa438, 0xa310, 0xa438, 0xa403, 0xa438, 0x1000, 0xa438, 0x1cd2,
+ 0xa438, 0x1000, 0xa438, 0x1d2b, 0xa438, 0xd700, 0xa438, 0x409a,
+ 0xa438, 0xd706, 0xa438, 0x4048, 0xa438, 0xf014, 0xa438, 0xd704,
+ 0xa438, 0x6055, 0xa438, 0xfff5, 0xa438, 0x1000, 0xa438, 0x1d47,
+ 0xa438, 0x800a, 0xa438, 0x8120, 0xa438, 0x8310, 0xa438, 0xa380,
+ 0xa438, 0x1000, 0xa438, 0x1cd2, 0xa438, 0x1000, 0xa438, 0x1d2b,
+ 0xa438, 0xd705, 0xa438, 0x5f77, 0xa438, 0x8380, 0xa438, 0x1000,
+ 0xa438, 0x1d50, 0xa438, 0xffdd, 0xa438, 0x0c03, 0xa438, 0x1502,
+ 0xa438, 0x0c07, 0xa438, 0x0d01, 0xa438, 0x9503, 0xa438, 0xd700,
+ 0xa438, 0x60cf, 0xa438, 0x60f1, 0xa438, 0x6113, 0xa438, 0x6135,
+ 0xa438, 0x6157, 0xa438, 0xf00b, 0xa438, 0xce08, 0xa438, 0xf00a,
+ 0xa438, 0xce08, 0xa438, 0xf008, 0xa438, 0xce08, 0xa438, 0xf006,
+ 0xa438, 0xce08, 0xa438, 0xf004, 0xa438, 0xce08, 0xa438, 0xf002,
+ 0xa438, 0xce08, 0xa438, 0x1000, 0xa438, 0x1ce7, 0xa438, 0xa180,
+ 0xa438, 0xcd27, 0xa438, 0xd704, 0xa438, 0x6331, 0xa438, 0xd700,
+ 0xa438, 0x37c9, 0xa438, 0x88b9, 0xa438, 0x33a9, 0xa438, 0x88b1,
+ 0xa438, 0xd705, 0xa438, 0x6084, 0xa438, 0xd17a, 0xa438, 0xd04a,
+ 0xa438, 0xf011, 0xa438, 0xd13d, 0xa438, 0xd04a, 0xa438, 0xf00e,
+ 0xa438, 0xd705, 0xa438, 0x6084, 0xa438, 0xd1b7, 0xa438, 0xd049,
+ 0xa438, 0xf009, 0xa438, 0xd17a, 0xa438, 0xd049, 0xa438, 0xf006,
+ 0xa438, 0xd17a, 0xa438, 0xd04a, 0xa438, 0xf003, 0xa438, 0xd128,
+ 0xa438, 0xd044, 0xa438, 0xd13b, 0xa438, 0xd055, 0xa438, 0xd700,
+ 0xa438, 0x2969, 0xa438, 0x88ce, 0xa438, 0x6164, 0xa438, 0xd704,
+ 0xa438, 0x413d, 0xa438, 0xa00a, 0xa438, 0xa1a0, 0xa438, 0xd704,
+ 0xa438, 0x407b, 0xa438, 0x8310, 0xa438, 0xf002, 0xa438, 0xa310,
+ 0xa438, 0xa403, 0xa438, 0x1000, 0xa438, 0x1cd2, 0xa438, 0x1000,
+ 0xa438, 0x1d2b, 0xa438, 0xd700, 0xa438, 0x405b, 0xa438, 0xf014,
+ 0xa438, 0xd704, 0xa438, 0x6055, 0xa438, 0xfff7, 0xa438, 0x1000,
+ 0xa438, 0x1d47, 0xa438, 0x800a, 0xa438, 0x81a0, 0xa438, 0x8310,
+ 0xa438, 0xa380, 0xa438, 0x1000, 0xa438, 0x1cd2, 0xa438, 0x1000,
+ 0xa438, 0x1d2b, 0xa438, 0xd705, 0xa438, 0x5f77, 0xa438, 0x8380,
+ 0xa438, 0x1000, 0xa438, 0x1d50, 0xa438, 0xffdf, 0xa438, 0xa302,
+ 0xa438, 0xd700, 0xa438, 0x2969, 0xa438, 0x0740, 0xa438, 0x6184,
+ 0xa438, 0xd704, 0xa438, 0x415d, 0xa438, 0xa00a, 0xa438, 0xa1a0,
+ 0xa438, 0xd704, 0xa438, 0x407b, 0xa438, 0x8310, 0xa438, 0xf002,
+ 0xa438, 0xa310, 0xa438, 0xa302, 0xa438, 0xa403, 0xa438, 0x1000,
+ 0xa438, 0x1cd2, 0xa438, 0x1000, 0xa438, 0x1d2b, 0xa438, 0xd700,
+ 0xa438, 0x409a, 0xa438, 0xd706, 0xa438, 0x4048, 0xa438, 0xf014,
+ 0xa438, 0xd704, 0xa438, 0x6055, 0xa438, 0xfff5, 0xa438, 0x1000,
+ 0xa438, 0x1d47, 0xa438, 0x800a, 0xa438, 0x81a0, 0xa438, 0x8312,
+ 0xa438, 0xa380, 0xa438, 0x1000, 0xa438, 0x1cd2, 0xa438, 0x1000,
+ 0xa438, 0x1d2b, 0xa438, 0xd705, 0xa438, 0x5f77, 0xa438, 0x8380,
+ 0xa438, 0x1000, 0xa438, 0x1d50, 0xa438, 0xffdc, 0xa438, 0x0c03,
+ 0xa438, 0x1502, 0xa438, 0x0c0f, 0xa438, 0x0b02, 0xa438, 0x0c38,
+ 0xa438, 0x0c10, 0xa438, 0x9503, 0xa438, 0xcd28, 0xa438, 0xd704,
+ 0xa438, 0x6331, 0xa438, 0xd700, 0xa438, 0x37c9, 0xa438, 0x8933,
+ 0xa438, 0x33a9, 0xa438, 0x892b, 0xa438, 0xd705, 0xa438, 0x6084,
+ 0xa438, 0xd199, 0xa438, 0xd04a, 0xa438, 0xf011, 0xa438, 0xd13d,
+ 0xa438, 0xd04a, 0xa438, 0xf00e, 0xa438, 0xd705, 0xa438, 0x6084,
+ 0xa438, 0xd17a, 0xa438, 0xd04a, 0xa438, 0xf009, 0xa438, 0xd13d,
+ 0xa438, 0xd04a, 0xa438, 0xf006, 0xa438, 0xd199, 0xa438, 0xd04a,
+ 0xa438, 0xf003, 0xa438, 0xd128, 0xa438, 0xd044, 0xa438, 0x1800,
+ 0xa438, 0x0776, 0xa438, 0xd208, 0xa438, 0x0c09, 0xa438, 0x1301,
+ 0xa438, 0x1000, 0xa438, 0x1cd2, 0xa438, 0xd701, 0xa438, 0x5fa3,
+ 0xa438, 0xb302, 0xa438, 0xd200, 0xa438, 0x0800, 0xa438, 0xd705,
+ 0xa438, 0x6064, 0xa438, 0x1800, 0xa438, 0x140a, 0xa438, 0x8810,
+ 0xa438, 0xd199, 0xa438, 0xd04b, 0xa438, 0x1000, 0xa438, 0x1cd2,
+ 0xa438, 0xd700, 0xa438, 0x5fba, 0xa438, 0x1800, 0xa438, 0x140a,
+ 0xa438, 0x8910, 0xa438, 0xd704, 0xa438, 0x61a8, 0xa438, 0x8480,
+ 0xa438, 0x8604, 0xa438, 0x8302, 0xa438, 0x81a0, 0xa438, 0xd703,
+ 0xa438, 0x4112, 0xa438, 0x0c03, 0xa438, 0x1502, 0xa438, 0xa990,
+ 0xa438, 0x9503, 0xa438, 0xb904, 0xa438, 0xf002, 0xa438, 0x0000,
+ 0xa438, 0x0800, 0xa436, 0xA10E, 0xa438, 0x1de8, 0xa436, 0xA10C,
+ 0xa438, 0x1352, 0xa436, 0xA10A, 0xa438, 0x0545, 0xa436, 0xA108,
+ 0xa438, 0x01ed, 0xa436, 0xA106, 0xa438, 0x1bbf, 0xa436, 0xA104,
+ 0xa438, 0x114b, 0xa436, 0xA102, 0xa438, 0x14bf, 0xa436, 0xA100,
+ 0xa438, 0x07ce, 0xa436, 0xA110, 0xa438, 0x00ff, 0xa436, 0xA016,
+ 0xa438, 0x0020, 0xa436, 0xA012, 0xa438, 0x1ff8, 0xa436, 0xA014,
0xa438, 0x0000, 0xa438, 0x0000, 0xa438, 0x0000, 0xa438, 0x0000,
- 0xa438, 0x0000, 0xa438, 0x0000, 0xa436, 0xA164, 0xa438, 0x07fc,
- 0xa436, 0xA166, 0xa438, 0x143d, 0xa436, 0xA168, 0xa438, 0x3fff,
- 0xa436, 0xA16A, 0xa438, 0x3fff, 0xa436, 0xA16C, 0xa438, 0x3fff,
- 0xa436, 0xA16E, 0xa438, 0x3fff, 0xa436, 0xA170, 0xa438, 0x3fff,
- 0xa436, 0xA172, 0xa438, 0x3fff, 0xa436, 0xA162, 0xa438, 0x0003,
- 0xa436, 0xb87c, 0xa438, 0x8994, 0xa436, 0xb87e, 0xa438, 0xaf89,
- 0xa438, 0xacaf, 0xa438, 0x89e4, 0xa438, 0xaf89, 0xa438, 0xecaf,
- 0xa438, 0x8a04, 0xa438, 0xaf8a, 0xa438, 0x2eaf, 0xa438, 0x8a4a,
- 0xa438, 0xaf8d, 0xa438, 0x31af, 0xa438, 0x8dc6, 0xa438, 0x1f55,
- 0xa438, 0xe18f, 0xa438, 0xe3a1, 0xa438, 0x0007, 0xa438, 0xee86,
+ 0xa438, 0x0000, 0xa438, 0x0000, 0xa438, 0x0000, 0xa438, 0x0000,
+ 0xa436, 0xA164, 0xa438, 0x143d, 0xa436, 0xA166, 0xa438, 0x14d7,
+ 0xa436, 0xA168, 0xa438, 0x3fff, 0xa436, 0xA16A, 0xa438, 0x3fff,
+ 0xa436, 0xA16C, 0xa438, 0x3fff, 0xa436, 0xA16E, 0xa438, 0x3fff,
+ 0xa436, 0xA170, 0xa438, 0x3fff, 0xa436, 0xA172, 0xa438, 0x3fff,
+ 0xa436, 0xA162, 0xa438, 0x0003, 0xa436, 0xb87c, 0xa438, 0x8994,
+ 0xa436, 0xb87e, 0xa438, 0xaf89, 0xa438, 0xacaf, 0xa438, 0x89e8,
+ 0xa438, 0xaf89, 0xa438, 0xf0af, 0xa438, 0x8a08, 0xa438, 0xaf8a,
+ 0xa438, 0x32af, 0xa438, 0x8a4e, 0xa438, 0xaf8d, 0xa438, 0x44af,
+ 0xa438, 0x8de9, 0xa438, 0x1f55, 0xa438, 0xe18f, 0xa438, 0xe3a1,
+ 0xa438, 0x000b, 0xa438, 0xee8f, 0xa438, 0xd700, 0xa438, 0xee86,
0xa438, 0xe900, 0xa438, 0xaf4f, 0xa438, 0x9ead, 0xa438, 0x281b,
0xa438, 0xe18f, 0xa438, 0xfcef, 0xa438, 0x71bf, 0xa438, 0x74f6,
0xa438, 0x027e, 0xa438, 0xd2ef, 0xa438, 0x641c, 0xa438, 0x670d,
0xa438, 0x67ef, 0xa438, 0x461f, 0xa438, 0x00bf, 0xa438, 0x74f6,
0xa438, 0x027e, 0xa438, 0xdee1, 0xa438, 0x8fe3, 0xa438, 0x0d11,
- 0xa438, 0xe58f, 0xa438, 0xe313, 0xa438, 0xaeca, 0xa438, 0x028d,
- 0xa438, 0xd1d3, 0xa438, 0x01af, 0xa438, 0x40d1, 0xa438, 0xbf7a,
+ 0xa438, 0xe58f, 0xa438, 0xe313, 0xa438, 0xaec6, 0xa438, 0x028d,
+ 0xa438, 0xfbd3, 0xa438, 0x01af, 0xa438, 0x40d1, 0xa438, 0xbf7a,
0xa438, 0x6102, 0xa438, 0x7d44, 0xa438, 0xa100, 0xa438, 0x09e0,
0xa438, 0x8ffa, 0xa438, 0xe18f, 0xa438, 0xfbaf, 0xa438, 0x683d,
0xa438, 0x027f, 0xa438, 0xa9af, 0xa438, 0x682c, 0xa438, 0xbf8e,
- 0xa438, 0x4102, 0xa438, 0x7d44, 0xa438, 0xe58f, 0xa438, 0xecbf,
+ 0xa438, 0x6b02, 0xa438, 0x7d44, 0xa438, 0xe58f, 0xa438, 0xecbf,
0xa438, 0x74cc, 0xa438, 0x027d, 0xa438, 0x44e3, 0xa438, 0x8fed,
0xa438, 0x0d31, 0xa438, 0xf63f, 0xa438, 0x0d11, 0xa438, 0xf62f,
- 0xa438, 0x1b13, 0xa438, 0xad2f, 0xa438, 0x06bf, 0xa438, 0x8e41,
+ 0xa438, 0x1b13, 0xa438, 0xad2f, 0xa438, 0x06bf, 0xa438, 0x8e6b,
0xa438, 0x027c, 0xa438, 0xf9d1, 0xa438, 0x01af, 0xa438, 0x5974,
0xa438, 0xee88, 0xa438, 0x8600, 0xa438, 0xe08f, 0xa438, 0xebad,
- 0xa438, 0x200b, 0xa438, 0xe18f, 0xa438, 0xecbf, 0xa438, 0x8e41,
+ 0xa438, 0x200b, 0xa438, 0xe18f, 0xa438, 0xecbf, 0xa438, 0x8e6b,
0xa438, 0x027d, 0xa438, 0x25ae, 0xa438, 0x04ee, 0xa438, 0x8feb,
0xa438, 0x01af, 0xa438, 0x5945, 0xa438, 0xad28, 0xa438, 0x2ce0,
- 0xa438, 0x8fea, 0xa438, 0xa000, 0xa438, 0x0502, 0xa438, 0x8af0,
- 0xa438, 0xae1e, 0xa438, 0xa001, 0xa438, 0x0502, 0xa438, 0x8b9f,
- 0xa438, 0xae16, 0xa438, 0xa002, 0xa438, 0x0502, 0xa438, 0x8c0f,
- 0xa438, 0xae0e, 0xa438, 0xa003, 0xa438, 0x0502, 0xa438, 0x8c95,
- 0xa438, 0xae06, 0xa438, 0xa004, 0xa438, 0x0302, 0xa438, 0x8d08,
- 0xa438, 0xaf63, 0xa438, 0x8902, 0xa438, 0x8a7f, 0xa438, 0xaf63,
+ 0xa438, 0x8fea, 0xa438, 0xa000, 0xa438, 0x0502, 0xa438, 0x8af4,
+ 0xa438, 0xae1e, 0xa438, 0xa001, 0xa438, 0x0502, 0xa438, 0x8ba3,
+ 0xa438, 0xae16, 0xa438, 0xa002, 0xa438, 0x0502, 0xa438, 0x8c13,
+ 0xa438, 0xae0e, 0xa438, 0xa003, 0xa438, 0x0502, 0xa438, 0x8c9f,
+ 0xa438, 0xae06, 0xa438, 0xa004, 0xa438, 0x0302, 0xa438, 0x8d1b,
+ 0xa438, 0xaf63, 0xa438, 0x8902, 0xa438, 0x8a83, 0xa438, 0xaf63,
0xa438, 0x81f8, 0xa438, 0xef49, 0xa438, 0xf8e0, 0xa438, 0x8015,
0xa438, 0xad21, 0xa438, 0x19bf, 0xa438, 0x7bd8, 0xa438, 0x027c,
0xa438, 0xf9bf, 0xa438, 0x7bf3, 0xa438, 0x027d, 0xa438, 0x44bf,
@@ -222,16 +816,16 @@ static const u16 phy_mcu_ram_code_8127a_1[] = {
0xa438, 0xee8f, 0xa438, 0xea00, 0xa438, 0xe080, 0xa438, 0x16ad,
0xa438, 0x233d, 0xa438, 0xbf7b, 0xa438, 0xf302, 0xa438, 0x7d44,
0xa438, 0xbf7a, 0xa438, 0x9402, 0xa438, 0x7cf9, 0xa438, 0xbf8e,
- 0xa438, 0x4402, 0xa438, 0x7cf9, 0xa438, 0xbf7a, 0xa438, 0xa602,
+ 0xa438, 0x6e02, 0xa438, 0x7cf9, 0xa438, 0xbf7a, 0xa438, 0xa602,
0xa438, 0x7cf9, 0xa438, 0xbf7a, 0xa438, 0xa302, 0xa438, 0x7cf9,
0xa438, 0xbf7a, 0xa438, 0xa902, 0xa438, 0x7cf9, 0xa438, 0xbf7a,
- 0xa438, 0xac02, 0xa438, 0x7cf9, 0xa438, 0xbf8e, 0xa438, 0x4702,
- 0xa438, 0x7cf9, 0xa438, 0xbf8e, 0xa438, 0x4a02, 0xa438, 0x7cf9,
+ 0xa438, 0xac02, 0xa438, 0x7cf9, 0xa438, 0xbf8e, 0xa438, 0x7102,
+ 0xa438, 0x7cf9, 0xa438, 0xbf8e, 0xa438, 0x7402, 0xa438, 0x7cf9,
0xa438, 0x0263, 0xa438, 0x8eee, 0xa438, 0x8fea, 0xa438, 0x00bf,
0xa438, 0x7c02, 0xa438, 0x027c, 0xa438, 0xf9fc, 0xa438, 0xef94,
0xa438, 0xfc04, 0xa438, 0xf8f9, 0xa438, 0xfbef, 0xa438, 0x79fb,
0xa438, 0xe080, 0xa438, 0x15ac, 0xa438, 0x2103, 0xa438, 0xaf8b,
- 0xa438, 0x70ee, 0xa438, 0x8888, 0xa438, 0x00ee, 0xa438, 0x888a,
+ 0xa438, 0x74ee, 0xa438, 0x8888, 0xa438, 0x00ee, 0xa438, 0x888a,
0xa438, 0x00ee, 0xa438, 0x888b, 0xa438, 0x00bf, 0xa438, 0x7bd8,
0xa438, 0x027d, 0xa438, 0x02bf, 0xa438, 0x6000, 0xa438, 0xd788,
0xa438, 0x881f, 0xa438, 0x44d4, 0xa438, 0x000c, 0xa438, 0x0273,
@@ -247,7 +841,7 @@ static const u16 phy_mcu_ram_code_8127a_1[] = {
0xa438, 0x0004, 0xa438, 0xf302, 0xa438, 0x63cd, 0xa438, 0xee8f,
0xa438, 0xea01, 0xa438, 0xe080, 0xa438, 0x16ad, 0xa438, 0x2319,
0xa438, 0xee88, 0xa438, 0x8800, 0xa438, 0xee88, 0xa438, 0x8a00,
- 0xa438, 0xee88, 0xa438, 0x8b00, 0xa438, 0xbf8e, 0xa438, 0x4402,
+ 0xa438, 0xee88, 0xa438, 0x8b00, 0xa438, 0xbf8e, 0xa438, 0x6e02,
0xa438, 0x7d02, 0xa438, 0x0263, 0xa438, 0xcdee, 0xa438, 0x8fea,
0xa438, 0x0102, 0xa438, 0x70de, 0xa438, 0xbf7c, 0xa438, 0x0202,
0xa438, 0x7d02, 0xa438, 0xffef, 0xa438, 0x97ff, 0xa438, 0xfdfc,
@@ -261,293 +855,298 @@ static const u16 phy_mcu_ram_code_8127a_1[] = {
0xa438, 0x8016, 0xa438, 0xad23, 0xa438, 0x1602, 0xa438, 0x7c86,
0xa438, 0xef47, 0xa438, 0xe48f, 0xa438, 0xe9e5, 0xa438, 0x8fe8,
0xa438, 0xee8f, 0xa438, 0xea02, 0xa438, 0xae0b, 0xa438, 0x028c,
- 0xa438, 0x2eae, 0xa438, 0x0602, 0xa438, 0x8bfe, 0xa438, 0x0270,
+ 0xa438, 0x32ae, 0xa438, 0x0602, 0xa438, 0x8c02, 0xa438, 0x0270,
0xa438, 0xdefe, 0xa438, 0xef96, 0xa438, 0xfefd, 0xa438, 0xfc04,
0xa438, 0xf8e1, 0xa438, 0x8888, 0xa438, 0x11e5, 0xa438, 0x8888,
0xa438, 0xad2a, 0xa438, 0x04ee, 0xa438, 0x8888, 0xa438, 0x00fc,
0xa438, 0x04f8, 0xa438, 0xfafb, 0xa438, 0xe08f, 0xa438, 0xe9e1,
0xa438, 0x8fe8, 0xa438, 0xef64, 0xa438, 0x1f00, 0xa438, 0xe18f,
0xa438, 0xe6ef, 0xa438, 0x7402, 0xa438, 0x7ca1, 0xa438, 0xad50,
- 0xa438, 0x0302, 0xa438, 0x8c2e, 0xa438, 0xfffe, 0xa438, 0xfc04,
- 0xa438, 0xf8fa, 0xa438, 0xef69, 0xa438, 0xfbbf, 0xa438, 0x7bf3,
- 0xa438, 0x027d, 0xa438, 0x44ac, 0xa438, 0x284c, 0xa438, 0x0264,
- 0xa438, 0x1cbf, 0xa438, 0x8e47, 0xa438, 0x027d, 0xa438, 0x02bf,
- 0xa438, 0x8e4a, 0xa438, 0x027d, 0xa438, 0x02d1, 0xa438, 0x43b1,
- 0xa438, 0xfebf, 0xa438, 0x7aa6, 0xa438, 0x027c, 0xa438, 0xf9bf,
- 0xa438, 0x7aa3, 0xa438, 0x027c, 0xa438, 0xf9bf, 0xa438, 0x7aa9,
- 0xa438, 0x027c, 0xa438, 0xf9bf, 0xa438, 0x7aac, 0xa438, 0x027d,
- 0xa438, 0x02d1, 0xa438, 0x80e0, 0xa438, 0x8888, 0xa438, 0x100e,
- 0xa438, 0x11b0, 0xa438, 0xfcbf, 0xa438, 0x7a94, 0xa438, 0x027d,
- 0xa438, 0x2502, 0xa438, 0x7c86, 0xa438, 0xef47, 0xa438, 0xe48f,
- 0xa438, 0xe9e5, 0xa438, 0x8fe8, 0xa438, 0xee8f, 0xa438, 0xea03,
- 0xa438, 0xae07, 0xa438, 0xee8f, 0xa438, 0xea01, 0xa438, 0x0270,
- 0xa438, 0xdeff, 0xa438, 0xef96, 0xa438, 0xfefc, 0xa438, 0x04f8,
- 0xa438, 0xf9fa, 0xa438, 0xfbef, 0xa438, 0x79fb, 0xa438, 0xbf7a,
- 0xa438, 0x9402, 0xa438, 0x7d44, 0xa438, 0xef21, 0xa438, 0xbf7a,
- 0xa438, 0xb802, 0xa438, 0x7d44, 0xa438, 0x1f21, 0xa438, 0x9e19,
- 0xa438, 0xe08f, 0xa438, 0xe9e1, 0xa438, 0x8fe8, 0xa438, 0xef64,
- 0xa438, 0x1f00, 0xa438, 0xe18f, 0xa438, 0xe4ef, 0xa438, 0x7402,
- 0xa438, 0x7ca1, 0xa438, 0xad50, 0xa438, 0x3dee, 0xa438, 0x8fe7,
- 0xa438, 0x01bf, 0xa438, 0x7a94, 0xa438, 0x027c, 0xa438, 0xf9bf,
+ 0xa438, 0x0302, 0xa438, 0x8c32, 0xa438, 0xfffe, 0xa438, 0xfc04,
+ 0xa438, 0xf8fa, 0xa438, 0xef69, 0xa438, 0xfbe0, 0xa438, 0x8fd6,
+ 0xa438, 0xac20, 0xa438, 0x55bf, 0xa438, 0x7bf3, 0xa438, 0x027d,
+ 0xa438, 0x44ac, 0xa438, 0x284c, 0xa438, 0x0264, 0xa438, 0x1cbf,
+ 0xa438, 0x8e71, 0xa438, 0x027d, 0xa438, 0x02bf, 0xa438, 0x8e74,
+ 0xa438, 0x027d, 0xa438, 0x02d1, 0xa438, 0x43b1, 0xa438, 0xfebf,
0xa438, 0x7aa6, 0xa438, 0x027c, 0xa438, 0xf9bf, 0xa438, 0x7aa3,
0xa438, 0x027c, 0xa438, 0xf9bf, 0xa438, 0x7aa9, 0xa438, 0x027c,
- 0xa438, 0xf9bf, 0xa438, 0x7aac, 0xa438, 0x027d, 0xa438, 0x02bf,
- 0xa438, 0x8e47, 0xa438, 0x027c, 0xa438, 0xf9bf, 0xa438, 0x8e4a,
- 0xa438, 0x027c, 0xa438, 0xf902, 0xa438, 0x7c86, 0xa438, 0xef47,
- 0xa438, 0xe48f, 0xa438, 0xe9e5, 0xa438, 0x8fe8, 0xa438, 0xee8f,
- 0xa438, 0xea04, 0xa438, 0xffef, 0xa438, 0x97ff, 0xa438, 0xfefd,
- 0xa438, 0xfc04, 0xa438, 0xf8fa, 0xa438, 0xfbe0, 0xa438, 0x8fe9,
- 0xa438, 0xe18f, 0xa438, 0xe8ef, 0xa438, 0x641f, 0xa438, 0x00e1,
- 0xa438, 0x8fe5, 0xa438, 0xef74, 0xa438, 0x027c, 0xa438, 0xa1ad,
- 0xa438, 0x500d, 0xa438, 0x0263, 0xa438, 0x8e02, 0xa438, 0x8bfe,
+ 0xa438, 0xf9bf, 0xa438, 0x7aac, 0xa438, 0x027d, 0xa438, 0x02d1,
+ 0xa438, 0x80e0, 0xa438, 0x8888, 0xa438, 0x100e, 0xa438, 0x11b0,
+ 0xa438, 0xfcbf, 0xa438, 0x7a94, 0xa438, 0x027d, 0xa438, 0x2502,
+ 0xa438, 0x7c86, 0xa438, 0xef47, 0xa438, 0xe48f, 0xa438, 0xe9e5,
+ 0xa438, 0x8fe8, 0xa438, 0xee8f, 0xa438, 0xea03, 0xa438, 0xae07,
0xa438, 0xee8f, 0xa438, 0xea01, 0xa438, 0x0270, 0xa438, 0xdeff,
- 0xa438, 0xfefc, 0xa438, 0x04e3, 0xa438, 0x8fd8, 0xa438, 0xe787,
- 0xa438, 0x75e4, 0xa438, 0x8fe1, 0xa438, 0xe58f, 0xa438, 0xe2bf,
- 0xa438, 0x8fd9, 0xa438, 0xef32, 0xa438, 0x0c31, 0xa438, 0x1a93,
- 0xa438, 0xdc19, 0xa438, 0xdd02, 0xa438, 0x7fa9, 0xa438, 0xac2a,
- 0xa438, 0x18e0, 0xa438, 0x8fe1, 0xa438, 0xe18f, 0xa438, 0xe2ef,
- 0xa438, 0x74e1, 0xa438, 0x8775, 0xa438, 0x1f00, 0xa438, 0xef64,
- 0xa438, 0xe18f, 0xa438, 0xd8e5, 0xa438, 0x8775, 0xa438, 0xaf4d,
- 0xa438, 0x72bf, 0xa438, 0x7b3c, 0xa438, 0xef32, 0xa438, 0x4b03,
- 0xa438, 0x1a93, 0xa438, 0x027d, 0xa438, 0x44ef, 0xa438, 0x64e1,
- 0xa438, 0x8fff, 0xa438, 0x1f00, 0xa438, 0xef74, 0xa438, 0x1b67,
- 0xa438, 0xac4f, 0xa438, 0xcee0, 0xa438, 0x8ffd, 0xa438, 0xe18f,
- 0xa438, 0xfeef, 0xa438, 0x64e0, 0xa438, 0x8fe1, 0xa438, 0xe18f,
- 0xa438, 0xe2ef, 0xa438, 0x7402, 0xa438, 0x7c53, 0xa438, 0xac50,
- 0xa438, 0x02ae, 0xa438, 0xb6e1, 0xa438, 0x8775, 0xa438, 0x1f00,
- 0xa438, 0xef64, 0xa438, 0xe18f, 0xa438, 0xfcef, 0xa438, 0x711c,
- 0xa438, 0x670d, 0xa438, 0x67ef, 0xa438, 0x46e5, 0xa438, 0x8775,
- 0xa438, 0xef32, 0xa438, 0xd101, 0xa438, 0xa300, 0xa438, 0x02ae,
- 0xa438, 0x050c, 0xa438, 0x1183, 0xa438, 0xaef6, 0xa438, 0xe08f,
- 0xa438, 0xe31e, 0xa438, 0x10e5, 0xa438, 0x8fe3, 0xa438, 0xae89,
- 0xa438, 0xe287, 0xa438, 0x75e6, 0xa438, 0x8fd8, 0xa438, 0x1f22,
- 0xa438, 0xaf4d, 0xa438, 0x42f8, 0xa438, 0xf9ef, 0xa438, 0x59fa,
- 0xa438, 0xfbbf, 0xa438, 0x8fee, 0xa438, 0x027f, 0xa438, 0xa90d,
- 0xa438, 0x1149, 0xa438, 0x041a, 0xa438, 0x91d7, 0xa438, 0x8df3,
- 0xa438, 0xd68e, 0xa438, 0x2302, 0xa438, 0x72aa, 0xa438, 0xfffe,
- 0xa438, 0xef95, 0xa438, 0xfdfc, 0xa438, 0x0400, 0xa438, 0x7591,
- 0xa438, 0x0275, 0xa438, 0x4404, 0xa438, 0x758e, 0xa438, 0x2675,
- 0xa438, 0x4100, 0xa438, 0x8e26, 0xa438, 0x028e, 0xa438, 0x2304,
- 0xa438, 0x759d, 0xa438, 0x2675, 0xa438, 0x4700, 0xa438, 0x8e32,
- 0xa438, 0x028e, 0xa438, 0x2f04, 0xa438, 0x8e2c, 0xa438, 0x268e,
- 0xa438, 0x2900, 0xa438, 0x8e3e, 0xa438, 0x028e, 0xa438, 0x3b04,
- 0xa438, 0x8e38, 0xa438, 0x268e, 0xa438, 0x35fe, 0xa438, 0xad96,
- 0xa438, 0xdcad, 0xa438, 0x96ba, 0xa438, 0xad96, 0xa438, 0x98ad,
- 0xa438, 0x9676, 0xa438, 0xad98, 0xa438, 0x54ad, 0xa438, 0x9876,
- 0xa438, 0xae38, 0xa438, 0x54ae, 0xa438, 0x38fe, 0xa438, 0xae3a,
- 0xa438, 0xdcae, 0xa438, 0x3abb, 0xa438, 0xbf14, 0xa438, 0x99bd,
- 0xa438, 0xe0cc, 0xa438, 0xbdc8, 0xa438, 0xddbd, 0xa438, 0xc800,
- 0xa436, 0xb85e, 0xa438, 0x4f9a, 0xa436, 0xb860, 0xa438, 0x40cf,
- 0xa436, 0xb862, 0xa438, 0x6829, 0xa436, 0xb864, 0xa438, 0x5972,
- 0xa436, 0xb886, 0xa438, 0x5941, 0xa436, 0xb888, 0xa438, 0x636b,
- 0xa436, 0xb88a, 0xa438, 0x4d6b, 0xa436, 0xb88c, 0xa438, 0x4d40,
- 0xa436, 0xb838, 0xa438, 0x00ff, 0xb820, 0x0010, 0xa436, 0x8608,
- 0xa438, 0xaf86, 0xa438, 0xdaaf, 0xa438, 0x894c, 0xa438, 0xaf8a,
- 0xa438, 0xf8af, 0xa438, 0x8bf3, 0xa438, 0xaf8b, 0xa438, 0xf3af,
+ 0xa438, 0xef96, 0xa438, 0xfefc, 0xa438, 0x04f8, 0xa438, 0xf9fa,
+ 0xa438, 0xfbef, 0xa438, 0x79fb, 0xa438, 0xbf7b, 0xa438, 0xf302,
+ 0xa438, 0x7d44, 0xa438, 0xac28, 0xa438, 0x2bbf, 0xa438, 0x7a94,
+ 0xa438, 0x027d, 0xa438, 0x44ef, 0xa438, 0x21bf, 0xa438, 0x7ab8,
+ 0xa438, 0x027d, 0xa438, 0x441f, 0xa438, 0x219e, 0xa438, 0x19e0,
+ 0xa438, 0x8fe9, 0xa438, 0xe18f, 0xa438, 0xe8ef, 0xa438, 0x641f,
+ 0xa438, 0x00e1, 0xa438, 0x8fe4, 0xa438, 0xef74, 0xa438, 0x027c,
+ 0xa438, 0xa1ad, 0xa438, 0x503d, 0xa438, 0xee8f, 0xa438, 0xe701,
+ 0xa438, 0xbf7a, 0xa438, 0x9402, 0xa438, 0x7cf9, 0xa438, 0xbf7a,
+ 0xa438, 0xa602, 0xa438, 0x7cf9, 0xa438, 0xbf7a, 0xa438, 0xa302,
+ 0xa438, 0x7cf9, 0xa438, 0xbf7a, 0xa438, 0xa902, 0xa438, 0x7cf9,
+ 0xa438, 0xbf7a, 0xa438, 0xac02, 0xa438, 0x7d02, 0xa438, 0xbf8e,
+ 0xa438, 0x7102, 0xa438, 0x7cf9, 0xa438, 0xbf8e, 0xa438, 0x7402,
+ 0xa438, 0x7cf9, 0xa438, 0x027c, 0xa438, 0x86ef, 0xa438, 0x47e4,
+ 0xa438, 0x8fe9, 0xa438, 0xe58f, 0xa438, 0xe8ee, 0xa438, 0x8fea,
+ 0xa438, 0x04ff, 0xa438, 0xef97, 0xa438, 0xfffe, 0xa438, 0xfdfc,
+ 0xa438, 0x04f8, 0xa438, 0xfafb, 0xa438, 0xe08f, 0xa438, 0xe9e1,
+ 0xa438, 0x8fe8, 0xa438, 0xef64, 0xa438, 0x1f00, 0xa438, 0xe18f,
+ 0xa438, 0xe5ef, 0xa438, 0x7402, 0xa438, 0x7ca1, 0xa438, 0xad50,
+ 0xa438, 0x0d02, 0xa438, 0x638e, 0xa438, 0x028c, 0xa438, 0x02ee,
+ 0xa438, 0x8fea, 0xa438, 0x0102, 0xa438, 0x70de, 0xa438, 0xfffe,
+ 0xa438, 0xfc04, 0xa438, 0xe38f, 0xa438, 0xd7a3, 0xa438, 0x000a,
+ 0xa438, 0xe387, 0xa438, 0x75e7, 0xa438, 0x8fd8, 0xa438, 0xee8f,
+ 0xa438, 0xd701, 0xa438, 0xe38f, 0xa438, 0xd8e7, 0xa438, 0x8775,
+ 0xa438, 0xe48f, 0xa438, 0xe1e5, 0xa438, 0x8fe2, 0xa438, 0xbf8f,
+ 0xa438, 0xd9ef, 0xa438, 0x320c, 0xa438, 0x311a, 0xa438, 0x93dc,
+ 0xa438, 0x19dd, 0xa438, 0x027f, 0xa438, 0xa9ac, 0xa438, 0x2a18,
+ 0xa438, 0xe08f, 0xa438, 0xe1e1, 0xa438, 0x8fe2, 0xa438, 0xef74,
+ 0xa438, 0xe187, 0xa438, 0x751f, 0xa438, 0x00ef, 0xa438, 0x64e1,
+ 0xa438, 0x8fd8, 0xa438, 0xe587, 0xa438, 0x75af, 0xa438, 0x4d72,
+ 0xa438, 0xbf7b, 0xa438, 0x3cef, 0xa438, 0x324b, 0xa438, 0x031a,
+ 0xa438, 0x9302, 0xa438, 0x7d44, 0xa438, 0xef64, 0xa438, 0xe18f,
+ 0xa438, 0xff1f, 0xa438, 0x00ef, 0xa438, 0x741b, 0xa438, 0x67ac,
+ 0xa438, 0x4fce, 0xa438, 0xe08f, 0xa438, 0xfde1, 0xa438, 0x8ffe,
+ 0xa438, 0xef64, 0xa438, 0xe08f, 0xa438, 0xe1e1, 0xa438, 0x8fe2,
+ 0xa438, 0xef74, 0xa438, 0x027c, 0xa438, 0x53ac, 0xa438, 0x5002,
+ 0xa438, 0xaeb6, 0xa438, 0xe187, 0xa438, 0x751f, 0xa438, 0x00ef,
+ 0xa438, 0x64e1, 0xa438, 0x8ffc, 0xa438, 0xef71, 0xa438, 0x1c67,
+ 0xa438, 0x0d67, 0xa438, 0xef46, 0xa438, 0xe587, 0xa438, 0x75ef,
+ 0xa438, 0x32d1, 0xa438, 0x01a3, 0xa438, 0x0002, 0xa438, 0xae05,
+ 0xa438, 0x0c11, 0xa438, 0x83ae, 0xa438, 0xf6e0, 0xa438, 0x8fe3,
+ 0xa438, 0x1e10, 0xa438, 0xe58f, 0xa438, 0xe3ae, 0xa438, 0x89bf,
+ 0xa438, 0x7bf3, 0xa438, 0x027d, 0xa438, 0x44e5, 0xa438, 0x8fd6,
+ 0xa438, 0xad28, 0xa438, 0x03af, 0xa438, 0x606b, 0xa438, 0xaf60,
+ 0xa438, 0xa0f8, 0xa438, 0xf9ef, 0xa438, 0x59fa, 0xa438, 0xfbbf,
+ 0xa438, 0x8fee, 0xa438, 0x027f, 0xa438, 0xa90d, 0xa438, 0x1149,
+ 0xa438, 0x041a, 0xa438, 0x91d7, 0xa438, 0x8e1d, 0xa438, 0xd68e,
+ 0xa438, 0x4d02, 0xa438, 0x72aa, 0xa438, 0xfffe, 0xa438, 0xef95,
+ 0xa438, 0xfdfc, 0xa438, 0x0400, 0xa438, 0x7591, 0xa438, 0x0275,
+ 0xa438, 0x4404, 0xa438, 0x758e, 0xa438, 0x2675, 0xa438, 0x4100,
+ 0xa438, 0x8e50, 0xa438, 0x028e, 0xa438, 0x4d04, 0xa438, 0x759d,
+ 0xa438, 0x2675, 0xa438, 0x4700, 0xa438, 0x8e5c, 0xa438, 0x028e,
+ 0xa438, 0x5904, 0xa438, 0x8e56, 0xa438, 0x268e, 0xa438, 0x5300,
+ 0xa438, 0x8e68, 0xa438, 0x028e, 0xa438, 0x6504, 0xa438, 0x8e62,
+ 0xa438, 0x268e, 0xa438, 0x5ffe, 0xa438, 0xad96, 0xa438, 0xdcad,
+ 0xa438, 0x96ba, 0xa438, 0xad96, 0xa438, 0x98ad, 0xa438, 0x9676,
+ 0xa438, 0xad98, 0xa438, 0x54ad, 0xa438, 0x9876, 0xa438, 0xae38,
+ 0xa438, 0x54ae, 0xa438, 0x38fe, 0xa438, 0xae3a, 0xa438, 0xdcae,
+ 0xa438, 0x3abb, 0xa438, 0xbf14, 0xa438, 0x99bd, 0xa438, 0xe0cc,
+ 0xa438, 0xbdc8, 0xa438, 0xddbd, 0xa438, 0xc800, 0xa436, 0xb85e,
+ 0xa438, 0x4f9a, 0xa436, 0xb860, 0xa438, 0x40cf, 0xa436, 0xb862,
+ 0xa438, 0x6829, 0xa436, 0xb864, 0xa438, 0x5972, 0xa436, 0xb886,
+ 0xa438, 0x5941, 0xa436, 0xb888, 0xa438, 0x636b, 0xa436, 0xb88a,
+ 0xa438, 0x4d6b, 0xa436, 0xb88c, 0xa438, 0x6062, 0xa436, 0xb838,
+ 0xa438, 0x00ff, 0xb820, 0x0010, 0xa436, 0x8608, 0xa438, 0xaf86,
+ 0xa438, 0xdaaf, 0xa438, 0x894c, 0xa438, 0xaf8a, 0xa438, 0xf8af,
0xa438, 0x8bf3, 0xa438, 0xaf8b, 0xa438, 0xf3af, 0xa438, 0x8bf3,
- 0xa438, 0x006f, 0xa438, 0x4a03, 0xa438, 0x6f47, 0xa438, 0x266f,
- 0xa438, 0x5900, 0xa438, 0x6f4d, 0xa438, 0x016f, 0xa438, 0x5004,
- 0xa438, 0x6f56, 0xa438, 0x056f, 0xa438, 0x5f06, 0xa438, 0x6f5c,
- 0xa438, 0x2774, 0xa438, 0x7800, 0xa438, 0x6f68, 0xa438, 0x246f,
- 0xa438, 0x6b20, 0xa438, 0x6f6e, 0xa438, 0x206f, 0xa438, 0x7410,
- 0xa438, 0x7469, 0xa438, 0x1074, 0xa438, 0x6c10, 0xa438, 0x746f,
- 0xa438, 0x1074, 0xa438, 0x7225, 0xa438, 0x8bfc, 0xa438, 0x008c,
- 0xa438, 0x0802, 0xa438, 0x8c02, 0xa438, 0x038b, 0xa438, 0xff04,
- 0xa438, 0x6eed, 0xa438, 0x278c, 0xa438, 0x0520, 0xa438, 0x74da,
- 0xa438, 0x2074, 0xa438, 0xdd20, 0xa438, 0x74e0, 0xa438, 0x0074,
- 0xa438, 0xe300, 0xa438, 0x6ef3, 0xa438, 0x006e, 0xa438, 0xf600,
- 0xa438, 0x6ef9, 0xa438, 0x006e, 0xa438, 0xfc00, 0xa438, 0x6eff,
- 0xa438, 0x006f, 0xa438, 0x0200, 0xa438, 0x6f05, 0xa438, 0x026f,
- 0xa438, 0x0802, 0xa438, 0x6f0b, 0xa438, 0x026f, 0xa438, 0x0e02,
- 0xa438, 0x6f11, 0xa438, 0x026f, 0xa438, 0x1402, 0xa438, 0x6f17,
- 0xa438, 0x226f, 0xa438, 0x1a00, 0xa438, 0x723e, 0xa438, 0x016e,
- 0xa438, 0xed24, 0xa438, 0x6f50, 0xa438, 0x0072, 0xa438, 0x4701,
- 0xa438, 0x724a, 0xa438, 0x0272, 0xa438, 0x4d23, 0xa438, 0x7250,
- 0xa438, 0x1074, 0xa438, 0x6910, 0xa438, 0x746c, 0xa438, 0x1074,
- 0xa438, 0x6f00, 0xa438, 0x7472, 0xa438, 0x158c, 0xa438, 0x0b15,
- 0xa438, 0x8c0e, 0xa438, 0x158c, 0xa438, 0x1105, 0xa438, 0x8c14,
- 0xa438, 0x006f, 0xa438, 0x4a03, 0xa438, 0x6f47, 0xa438, 0x266f,
- 0xa438, 0x5900, 0xa438, 0x731f, 0xa438, 0x0273, 0xa438, 0x2203,
- 0xa438, 0x8c08, 0xa438, 0xee84, 0xa438, 0x7100, 0xa438, 0x0286,
- 0xa438, 0xece0, 0xa438, 0x8043, 0xa438, 0xf626, 0xa438, 0xe480,
- 0xa438, 0x43af, 0xa438, 0x6611, 0xa438, 0xf8e0, 0xa438, 0x8012,
- 0xa438, 0xac26, 0xa438, 0x03af, 0xa438, 0x86ff, 0xa438, 0x0287,
- 0xa438, 0x0102, 0xa438, 0x8906, 0xa438, 0x0289, 0xa438, 0x29fc,
- 0xa438, 0x04f8, 0xa438, 0xf9ef, 0xa438, 0x59f9, 0xa438, 0xfaee,
- 0xa438, 0x8476, 0xa438, 0x00d6, 0xa438, 0x008f, 0xa438, 0x0266,
- 0xa438, 0x53ef, 0xa438, 0x643e, 0xa438, 0x1200, 0xa438, 0xac4f,
- 0xa438, 0x08e4, 0xa438, 0x8fe7, 0xa438, 0xe58f, 0xa438, 0xe8ae,
- 0xa438, 0x06e0, 0xa438, 0x8fe7, 0xa438, 0xe18f, 0xa438, 0xe8ee,
- 0xa438, 0x8476, 0xa438, 0x01d6, 0xa438, 0x00c0, 0xa438, 0x0266,
- 0xa438, 0x71ee, 0xa438, 0x8476, 0xa438, 0x00d6, 0xa438, 0x0090,
- 0xa438, 0x0266, 0xa438, 0x53ef, 0xa438, 0x643e, 0xa438, 0x1200,
- 0xa438, 0xac4f, 0xa438, 0x08e4, 0xa438, 0x8fe9, 0xa438, 0xe58f,
- 0xa438, 0xeaae, 0xa438, 0x06e0, 0xa438, 0x8fe9, 0xa438, 0xe18f,
- 0xa438, 0xeaee, 0xa438, 0x8476, 0xa438, 0x01d6, 0xa438, 0x00c1,
- 0xa438, 0x0266, 0xa438, 0x71ee, 0xa438, 0x8476, 0xa438, 0x00d6,
- 0xa438, 0x0091, 0xa438, 0x0266, 0xa438, 0x53ef, 0xa438, 0x643e,
- 0xa438, 0x1200, 0xa438, 0xac4f, 0xa438, 0x08e4, 0xa438, 0x8feb,
- 0xa438, 0xe58f, 0xa438, 0xecae, 0xa438, 0x06e0, 0xa438, 0x8feb,
- 0xa438, 0xe18f, 0xa438, 0xecee, 0xa438, 0x8476, 0xa438, 0x01d6,
- 0xa438, 0x00c2, 0xa438, 0x0266, 0xa438, 0x71ee, 0xa438, 0x8476,
- 0xa438, 0x01d6, 0xa438, 0x008f, 0xa438, 0x0266, 0xa438, 0x53ef,
+ 0xa438, 0xaf8b, 0xa438, 0xf3af, 0xa438, 0x8bf3, 0xa438, 0x006f,
+ 0xa438, 0x4a03, 0xa438, 0x6f47, 0xa438, 0x266f, 0xa438, 0x5900,
+ 0xa438, 0x6f4d, 0xa438, 0x016f, 0xa438, 0x5004, 0xa438, 0x6f56,
+ 0xa438, 0x056f, 0xa438, 0x5f06, 0xa438, 0x6f5c, 0xa438, 0x2774,
+ 0xa438, 0x7800, 0xa438, 0x6f68, 0xa438, 0x246f, 0xa438, 0x6b20,
+ 0xa438, 0x6f6e, 0xa438, 0x206f, 0xa438, 0x7410, 0xa438, 0x7469,
+ 0xa438, 0x1074, 0xa438, 0x6c10, 0xa438, 0x746f, 0xa438, 0x1074,
+ 0xa438, 0x7225, 0xa438, 0x8bfc, 0xa438, 0x008c, 0xa438, 0x0802,
+ 0xa438, 0x8c02, 0xa438, 0x038b, 0xa438, 0xff04, 0xa438, 0x6eed,
+ 0xa438, 0x278c, 0xa438, 0x0520, 0xa438, 0x74da, 0xa438, 0x2074,
+ 0xa438, 0xdd20, 0xa438, 0x74e0, 0xa438, 0x0074, 0xa438, 0xe300,
+ 0xa438, 0x6ef3, 0xa438, 0x006e, 0xa438, 0xf600, 0xa438, 0x6ef9,
+ 0xa438, 0x006e, 0xa438, 0xfc00, 0xa438, 0x6eff, 0xa438, 0x006f,
+ 0xa438, 0x0200, 0xa438, 0x6f05, 0xa438, 0x026f, 0xa438, 0x0802,
+ 0xa438, 0x6f0b, 0xa438, 0x026f, 0xa438, 0x0e02, 0xa438, 0x6f11,
+ 0xa438, 0x026f, 0xa438, 0x1402, 0xa438, 0x6f17, 0xa438, 0x226f,
+ 0xa438, 0x1a00, 0xa438, 0x723e, 0xa438, 0x016e, 0xa438, 0xed24,
+ 0xa438, 0x6f50, 0xa438, 0x0072, 0xa438, 0x4701, 0xa438, 0x724a,
+ 0xa438, 0x0272, 0xa438, 0x4d23, 0xa438, 0x7250, 0xa438, 0x1074,
+ 0xa438, 0x6910, 0xa438, 0x746c, 0xa438, 0x1074, 0xa438, 0x6f00,
+ 0xa438, 0x7472, 0xa438, 0x158c, 0xa438, 0x0b15, 0xa438, 0x8c0e,
+ 0xa438, 0x158c, 0xa438, 0x1105, 0xa438, 0x8c14, 0xa438, 0x006f,
+ 0xa438, 0x4a03, 0xa438, 0x6f47, 0xa438, 0x266f, 0xa438, 0x5900,
+ 0xa438, 0x731f, 0xa438, 0x0273, 0xa438, 0x2203, 0xa438, 0x8c08,
+ 0xa438, 0xee84, 0xa438, 0x7100, 0xa438, 0x0286, 0xa438, 0xece0,
+ 0xa438, 0x8043, 0xa438, 0xf626, 0xa438, 0xe480, 0xa438, 0x43af,
+ 0xa438, 0x6611, 0xa438, 0xf8e0, 0xa438, 0x8012, 0xa438, 0xac26,
+ 0xa438, 0x03af, 0xa438, 0x86ff, 0xa438, 0x0287, 0xa438, 0x0102,
+ 0xa438, 0x8906, 0xa438, 0x0289, 0xa438, 0x29fc, 0xa438, 0x04f8,
+ 0xa438, 0xf9ef, 0xa438, 0x59f9, 0xa438, 0xfaee, 0xa438, 0x8476,
+ 0xa438, 0x00d6, 0xa438, 0x008f, 0xa438, 0x0266, 0xa438, 0x53ef,
0xa438, 0x643e, 0xa438, 0x1200, 0xa438, 0xac4f, 0xa438, 0x08e4,
- 0xa438, 0x8fed, 0xa438, 0xe58f, 0xa438, 0xeeae, 0xa438, 0x06e0,
- 0xa438, 0x8fed, 0xa438, 0xe18f, 0xa438, 0xeeee, 0xa438, 0x8476,
- 0xa438, 0x02d6, 0xa438, 0x00c0, 0xa438, 0x0266, 0xa438, 0x71ee,
- 0xa438, 0x8476, 0xa438, 0x01d6, 0xa438, 0x0090, 0xa438, 0x0266,
+ 0xa438, 0x8fe7, 0xa438, 0xe58f, 0xa438, 0xe8ae, 0xa438, 0x06e0,
+ 0xa438, 0x8fe7, 0xa438, 0xe18f, 0xa438, 0xe8ee, 0xa438, 0x8476,
+ 0xa438, 0x01d6, 0xa438, 0x00c0, 0xa438, 0x0266, 0xa438, 0x71ee,
+ 0xa438, 0x8476, 0xa438, 0x00d6, 0xa438, 0x0090, 0xa438, 0x0266,
0xa438, 0x53ef, 0xa438, 0x643e, 0xa438, 0x1200, 0xa438, 0xac4f,
- 0xa438, 0x08e4, 0xa438, 0x8fef, 0xa438, 0xe58f, 0xa438, 0xf0ae,
- 0xa438, 0x06e0, 0xa438, 0x8fef, 0xa438, 0xe18f, 0xa438, 0xf0ee,
- 0xa438, 0x8476, 0xa438, 0x02d6, 0xa438, 0x00c1, 0xa438, 0x0266,
- 0xa438, 0x71ee, 0xa438, 0x8476, 0xa438, 0x01d6, 0xa438, 0x0091,
+ 0xa438, 0x08e4, 0xa438, 0x8fe9, 0xa438, 0xe58f, 0xa438, 0xeaae,
+ 0xa438, 0x06e0, 0xa438, 0x8fe9, 0xa438, 0xe18f, 0xa438, 0xeaee,
+ 0xa438, 0x8476, 0xa438, 0x01d6, 0xa438, 0x00c1, 0xa438, 0x0266,
+ 0xa438, 0x71ee, 0xa438, 0x8476, 0xa438, 0x00d6, 0xa438, 0x0091,
0xa438, 0x0266, 0xa438, 0x53ef, 0xa438, 0x643e, 0xa438, 0x1200,
- 0xa438, 0xac4f, 0xa438, 0x08e4, 0xa438, 0x8ff1, 0xa438, 0xe58f,
- 0xa438, 0xf2ae, 0xa438, 0x06e0, 0xa438, 0x8ff1, 0xa438, 0xe18f,
- 0xa438, 0xf2ee, 0xa438, 0x8476, 0xa438, 0x02d6, 0xa438, 0x00c2,
- 0xa438, 0x0266, 0xa438, 0x71ee, 0xa438, 0x8476, 0xa438, 0x02d6,
+ 0xa438, 0xac4f, 0xa438, 0x08e4, 0xa438, 0x8feb, 0xa438, 0xe58f,
+ 0xa438, 0xecae, 0xa438, 0x06e0, 0xa438, 0x8feb, 0xa438, 0xe18f,
+ 0xa438, 0xecee, 0xa438, 0x8476, 0xa438, 0x01d6, 0xa438, 0x00c2,
+ 0xa438, 0x0266, 0xa438, 0x71ee, 0xa438, 0x8476, 0xa438, 0x01d6,
0xa438, 0x008f, 0xa438, 0x0266, 0xa438, 0x53ef, 0xa438, 0x643e,
- 0xa438, 0x1200, 0xa438, 0xac4f, 0xa438, 0x08e4, 0xa438, 0x8ff3,
- 0xa438, 0xe58f, 0xa438, 0xf4ae, 0xa438, 0x06e0, 0xa438, 0x8ff3,
- 0xa438, 0xe18f, 0xa438, 0xf4ee, 0xa438, 0x8476, 0xa438, 0x04d6,
+ 0xa438, 0x1200, 0xa438, 0xac4f, 0xa438, 0x08e4, 0xa438, 0x8fed,
+ 0xa438, 0xe58f, 0xa438, 0xeeae, 0xa438, 0x06e0, 0xa438, 0x8fed,
+ 0xa438, 0xe18f, 0xa438, 0xeeee, 0xa438, 0x8476, 0xa438, 0x02d6,
0xa438, 0x00c0, 0xa438, 0x0266, 0xa438, 0x71ee, 0xa438, 0x8476,
- 0xa438, 0x02d6, 0xa438, 0x0090, 0xa438, 0x0266, 0xa438, 0x53ef,
+ 0xa438, 0x01d6, 0xa438, 0x0090, 0xa438, 0x0266, 0xa438, 0x53ef,
0xa438, 0x643e, 0xa438, 0x1200, 0xa438, 0xac4f, 0xa438, 0x08e4,
- 0xa438, 0x8ff5, 0xa438, 0xe58f, 0xa438, 0xf6ae, 0xa438, 0x06e0,
- 0xa438, 0x8ff5, 0xa438, 0xe18f, 0xa438, 0xf6ee, 0xa438, 0x8476,
- 0xa438, 0x04d6, 0xa438, 0x00c1, 0xa438, 0x0266, 0xa438, 0x71ee,
- 0xa438, 0x8476, 0xa438, 0x02d6, 0xa438, 0x0091, 0xa438, 0x0266,
+ 0xa438, 0x8fef, 0xa438, 0xe58f, 0xa438, 0xf0ae, 0xa438, 0x06e0,
+ 0xa438, 0x8fef, 0xa438, 0xe18f, 0xa438, 0xf0ee, 0xa438, 0x8476,
+ 0xa438, 0x02d6, 0xa438, 0x00c1, 0xa438, 0x0266, 0xa438, 0x71ee,
+ 0xa438, 0x8476, 0xa438, 0x01d6, 0xa438, 0x0091, 0xa438, 0x0266,
0xa438, 0x53ef, 0xa438, 0x643e, 0xa438, 0x1200, 0xa438, 0xac4f,
- 0xa438, 0x08e4, 0xa438, 0x8ff7, 0xa438, 0xe58f, 0xa438, 0xf8ae,
- 0xa438, 0x06e0, 0xa438, 0x8ff7, 0xa438, 0xe18f, 0xa438, 0xf8ee,
- 0xa438, 0x8476, 0xa438, 0x04d6, 0xa438, 0x00c2, 0xa438, 0x0266,
- 0xa438, 0x71ee, 0xa438, 0x8476, 0xa438, 0x03d6, 0xa438, 0x008f,
+ 0xa438, 0x08e4, 0xa438, 0x8ff1, 0xa438, 0xe58f, 0xa438, 0xf2ae,
+ 0xa438, 0x06e0, 0xa438, 0x8ff1, 0xa438, 0xe18f, 0xa438, 0xf2ee,
+ 0xa438, 0x8476, 0xa438, 0x02d6, 0xa438, 0x00c2, 0xa438, 0x0266,
+ 0xa438, 0x71ee, 0xa438, 0x8476, 0xa438, 0x02d6, 0xa438, 0x008f,
0xa438, 0x0266, 0xa438, 0x53ef, 0xa438, 0x643e, 0xa438, 0x1200,
- 0xa438, 0xac4f, 0xa438, 0x08e4, 0xa438, 0x8ff9, 0xa438, 0xe58f,
- 0xa438, 0xfaae, 0xa438, 0x06e0, 0xa438, 0x8ff9, 0xa438, 0xe18f,
- 0xa438, 0xfaee, 0xa438, 0x8476, 0xa438, 0x08d6, 0xa438, 0x00c0,
- 0xa438, 0x0266, 0xa438, 0x71ee, 0xa438, 0x8476, 0xa438, 0x03d6,
+ 0xa438, 0xac4f, 0xa438, 0x08e4, 0xa438, 0x8ff3, 0xa438, 0xe58f,
+ 0xa438, 0xf4ae, 0xa438, 0x06e0, 0xa438, 0x8ff3, 0xa438, 0xe18f,
+ 0xa438, 0xf4ee, 0xa438, 0x8476, 0xa438, 0x04d6, 0xa438, 0x00c0,
+ 0xa438, 0x0266, 0xa438, 0x71ee, 0xa438, 0x8476, 0xa438, 0x02d6,
0xa438, 0x0090, 0xa438, 0x0266, 0xa438, 0x53ef, 0xa438, 0x643e,
- 0xa438, 0x1200, 0xa438, 0xac4f, 0xa438, 0x08e4, 0xa438, 0x8ffb,
- 0xa438, 0xe58f, 0xa438, 0xfcae, 0xa438, 0x06e0, 0xa438, 0x8ffb,
- 0xa438, 0xe18f, 0xa438, 0xfcee, 0xa438, 0x8476, 0xa438, 0x08d6,
+ 0xa438, 0x1200, 0xa438, 0xac4f, 0xa438, 0x08e4, 0xa438, 0x8ff5,
+ 0xa438, 0xe58f, 0xa438, 0xf6ae, 0xa438, 0x06e0, 0xa438, 0x8ff5,
+ 0xa438, 0xe18f, 0xa438, 0xf6ee, 0xa438, 0x8476, 0xa438, 0x04d6,
0xa438, 0x00c1, 0xa438, 0x0266, 0xa438, 0x71ee, 0xa438, 0x8476,
- 0xa438, 0x03d6, 0xa438, 0x0091, 0xa438, 0x0266, 0xa438, 0x53ef,
+ 0xa438, 0x02d6, 0xa438, 0x0091, 0xa438, 0x0266, 0xa438, 0x53ef,
0xa438, 0x643e, 0xa438, 0x1200, 0xa438, 0xac4f, 0xa438, 0x08e4,
- 0xa438, 0x8ffd, 0xa438, 0xe58f, 0xa438, 0xfeae, 0xa438, 0x06e0,
- 0xa438, 0x8ffd, 0xa438, 0xe18f, 0xa438, 0xfeee, 0xa438, 0x8476,
- 0xa438, 0x08d6, 0xa438, 0x00c2, 0xa438, 0x0266, 0xa438, 0x71fe,
- 0xa438, 0xfdef, 0xa438, 0x95fd, 0xa438, 0xfc04, 0xa438, 0xf8f9,
- 0xa438, 0xfad4, 0xa438, 0x0400, 0xa438, 0xd600, 0xa438, 0x0dd3,
- 0xa438, 0x0fe7, 0xa438, 0x8476, 0xa438, 0x0266, 0xa438, 0x71d4,
- 0xa438, 0x1400, 0xa438, 0xd600, 0xa438, 0x0dd3, 0xa438, 0x0fe7,
- 0xa438, 0x8476, 0xa438, 0x0266, 0xa438, 0x71fe, 0xa438, 0xfdfc,
- 0xa438, 0x04f8, 0xa438, 0xf9fa, 0xa438, 0xd410, 0xa438, 0x00d6,
- 0xa438, 0x000d, 0xa438, 0xd30f, 0xa438, 0xe784, 0xa438, 0x7602,
- 0xa438, 0x6671, 0xa438, 0xd400, 0xa438, 0x00d6, 0xa438, 0x000d,
+ 0xa438, 0x8ff7, 0xa438, 0xe58f, 0xa438, 0xf8ae, 0xa438, 0x06e0,
+ 0xa438, 0x8ff7, 0xa438, 0xe18f, 0xa438, 0xf8ee, 0xa438, 0x8476,
+ 0xa438, 0x04d6, 0xa438, 0x00c2, 0xa438, 0x0266, 0xa438, 0x71ee,
+ 0xa438, 0x8476, 0xa438, 0x03d6, 0xa438, 0x008f, 0xa438, 0x0266,
+ 0xa438, 0x53ef, 0xa438, 0x643e, 0xa438, 0x1200, 0xa438, 0xac4f,
+ 0xa438, 0x08e4, 0xa438, 0x8ff9, 0xa438, 0xe58f, 0xa438, 0xfaae,
+ 0xa438, 0x06e0, 0xa438, 0x8ff9, 0xa438, 0xe18f, 0xa438, 0xfaee,
+ 0xa438, 0x8476, 0xa438, 0x08d6, 0xa438, 0x00c0, 0xa438, 0x0266,
+ 0xa438, 0x71ee, 0xa438, 0x8476, 0xa438, 0x03d6, 0xa438, 0x0090,
+ 0xa438, 0x0266, 0xa438, 0x53ef, 0xa438, 0x643e, 0xa438, 0x1200,
+ 0xa438, 0xac4f, 0xa438, 0x08e4, 0xa438, 0x8ffb, 0xa438, 0xe58f,
+ 0xa438, 0xfcae, 0xa438, 0x06e0, 0xa438, 0x8ffb, 0xa438, 0xe18f,
+ 0xa438, 0xfcee, 0xa438, 0x8476, 0xa438, 0x08d6, 0xa438, 0x00c1,
+ 0xa438, 0x0266, 0xa438, 0x71ee, 0xa438, 0x8476, 0xa438, 0x03d6,
+ 0xa438, 0x0091, 0xa438, 0x0266, 0xa438, 0x53ef, 0xa438, 0x643e,
+ 0xa438, 0x1200, 0xa438, 0xac4f, 0xa438, 0x08e4, 0xa438, 0x8ffd,
+ 0xa438, 0xe58f, 0xa438, 0xfeae, 0xa438, 0x06e0, 0xa438, 0x8ffd,
+ 0xa438, 0xe18f, 0xa438, 0xfeee, 0xa438, 0x8476, 0xa438, 0x08d6,
+ 0xa438, 0x00c2, 0xa438, 0x0266, 0xa438, 0x71fe, 0xa438, 0xfdef,
+ 0xa438, 0x95fd, 0xa438, 0xfc04, 0xa438, 0xf8f9, 0xa438, 0xfad4,
+ 0xa438, 0x0400, 0xa438, 0xd600, 0xa438, 0x0dd3, 0xa438, 0x0fe7,
+ 0xa438, 0x8476, 0xa438, 0x0266, 0xa438, 0x71d4, 0xa438, 0x1400,
+ 0xa438, 0xd600, 0xa438, 0x0dd3, 0xa438, 0x0fe7, 0xa438, 0x8476,
+ 0xa438, 0x0266, 0xa438, 0x71fe, 0xa438, 0xfdfc, 0xa438, 0x04f8,
+ 0xa438, 0xf9fa, 0xa438, 0xd410, 0xa438, 0x00d6, 0xa438, 0x000d,
0xa438, 0xd30f, 0xa438, 0xe784, 0xa438, 0x7602, 0xa438, 0x6671,
- 0xa438, 0xfefd, 0xa438, 0xfc04, 0xa438, 0xe080, 0xa438, 0x4fac,
- 0xa438, 0x2317, 0xa438, 0xe080, 0xa438, 0x44ad, 0xa438, 0x231a,
- 0xa438, 0x0289, 0xa438, 0x75e0, 0xa438, 0x8044, 0xa438, 0xac23,
- 0xa438, 0x11bf, 0xa438, 0x6ecf, 0xa438, 0x0276, 0xa438, 0x74ae,
- 0xa438, 0x0902, 0xa438, 0x8adb, 0xa438, 0x021f, 0xa438, 0xe702,
- 0xa438, 0x1fbb, 0xa438, 0xaf1f, 0xa438, 0x95f8, 0xa438, 0xf9ef,
- 0xa438, 0x59f9, 0xa438, 0xfafb, 0xa438, 0xe080, 0xa438, 0x12ac,
- 0xa438, 0x2303, 0xa438, 0xaf8a, 0xa438, 0xd0d4, 0xa438, 0x0120,
- 0xa438, 0xd600, 0xa438, 0x10d2, 0xa438, 0x0fe6, 0xa438, 0x8476,
- 0xa438, 0x0266, 0xa438, 0x71ee, 0xa438, 0x846f, 0xa438, 0x00d4,
- 0xa438, 0x000f, 0xa438, 0xbf72, 0xa438, 0x9e02, 0xa438, 0x7697,
- 0xa438, 0x0275, 0xa438, 0xbeef, 0xa438, 0x47e4, 0xa438, 0x8474,
- 0xa438, 0xe584, 0xa438, 0x75bf, 0xa438, 0x729b, 0xa438, 0x0276,
- 0xa438, 0xb6e5, 0xa438, 0x846f, 0xa438, 0xef31, 0xa438, 0xbf6e,
+ 0xa438, 0xd400, 0xa438, 0x00d6, 0xa438, 0x000d, 0xa438, 0xd30f,
+ 0xa438, 0xe784, 0xa438, 0x7602, 0xa438, 0x6671, 0xa438, 0xfefd,
+ 0xa438, 0xfc04, 0xa438, 0xe080, 0xa438, 0x4fac, 0xa438, 0x2317,
+ 0xa438, 0xe080, 0xa438, 0x44ad, 0xa438, 0x231a, 0xa438, 0x0289,
+ 0xa438, 0x75e0, 0xa438, 0x8044, 0xa438, 0xac23, 0xa438, 0x11bf,
+ 0xa438, 0x6ecf, 0xa438, 0x0276, 0xa438, 0x74ae, 0xa438, 0x0902,
+ 0xa438, 0x8adb, 0xa438, 0x021f, 0xa438, 0xe702, 0xa438, 0x1fbb,
+ 0xa438, 0xaf1f, 0xa438, 0x95f8, 0xa438, 0xf9ef, 0xa438, 0x59f9,
+ 0xa438, 0xfafb, 0xa438, 0xe080, 0xa438, 0x12ac, 0xa438, 0x2303,
+ 0xa438, 0xaf8a, 0xa438, 0xd0d4, 0xa438, 0x0120, 0xa438, 0xd600,
+ 0xa438, 0x10d2, 0xa438, 0x0fe6, 0xa438, 0x8476, 0xa438, 0x0266,
+ 0xa438, 0x71ee, 0xa438, 0x846f, 0xa438, 0x00d4, 0xa438, 0x000f,
+ 0xa438, 0xbf72, 0xa438, 0x9e02, 0xa438, 0x7697, 0xa438, 0x0275,
+ 0xa438, 0xbeef, 0xa438, 0x47e4, 0xa438, 0x8474, 0xa438, 0xe584,
+ 0xa438, 0x75bf, 0xa438, 0x729b, 0xa438, 0x0276, 0xa438, 0xb6e5,
+ 0xa438, 0x846f, 0xa438, 0xef31, 0xa438, 0xbf6e, 0xa438, 0x0602,
+ 0xa438, 0x76b6, 0xa438, 0xef64, 0xa438, 0xbf6e, 0xa438, 0x0902,
+ 0xa438, 0x76b6, 0xa438, 0x1e64, 0xa438, 0xbf6e, 0xa438, 0x0f02,
+ 0xa438, 0x76b6, 0xa438, 0x1e64, 0xa438, 0xac40, 0xa438, 0x05a3,
+ 0xa438, 0x0f0c, 0xa438, 0xae26, 0xa438, 0xa303, 0xa438, 0x02ae,
+ 0xa438, 0x21a3, 0xa438, 0x0c02, 0xa438, 0xae1c, 0xa438, 0xe084,
+ 0xa438, 0x74e1, 0xa438, 0x8475, 0xa438, 0xef64, 0xa438, 0xd000,
+ 0xa438, 0xd196, 0xa438, 0xef74, 0xa438, 0x0275, 0xa438, 0xd9ad,
+ 0xa438, 0x50b7, 0xa438, 0xe083, 0xa438, 0xecf7, 0xa438, 0x23e4,
+ 0xa438, 0x83ec, 0xa438, 0xbf72, 0xa438, 0x9e02, 0xa438, 0x766b,
+ 0xa438, 0x0287, 0xa438, 0x0102, 0xa438, 0x8906, 0xa438, 0xee83,
+ 0xa438, 0xe800, 0xa438, 0xbf72, 0xa438, 0x6b02, 0xa438, 0x766b,
+ 0xa438, 0xbf72, 0xa438, 0x6e02, 0xa438, 0x766b, 0xa438, 0xbf72,
+ 0xa438, 0x7102, 0xa438, 0x766b, 0xa438, 0xbf72, 0xa438, 0x7402,
+ 0xa438, 0x766b, 0xa438, 0xbf72, 0xa438, 0x7702, 0xa438, 0x766b,
+ 0xa438, 0xbf72, 0xa438, 0x7a02, 0xa438, 0x766b, 0xa438, 0xd400,
+ 0xa438, 0x0fbf, 0xa438, 0x7295, 0xa438, 0x0276, 0xa438, 0x97d7,
+ 0xa438, 0x0400, 0xa438, 0xbf6e, 0xa438, 0x0602, 0xa438, 0x76b6,
+ 0xa438, 0xef64, 0xa438, 0xbf6e, 0xa438, 0x0902, 0xa438, 0x76b6,
+ 0xa438, 0x1e64, 0xa438, 0xbf6e, 0xa438, 0x0f02, 0xa438, 0x76b6,
+ 0xa438, 0x1e64, 0xa438, 0xac40, 0xa438, 0x0fbf, 0xa438, 0x7298,
+ 0xa438, 0x0276, 0xa438, 0xb6e5, 0xa438, 0x83e8, 0xa438, 0xa10f,
+ 0xa438, 0x28af, 0xa438, 0x8a95, 0xa438, 0xbf8b, 0xa438, 0xf302,
+ 0xa438, 0x76b6, 0xa438, 0xac28, 0xa438, 0x02ae, 0xa438, 0x0bbf,
+ 0xa438, 0x8bf9, 0xa438, 0x0276, 0xa438, 0xb6e5, 0xa438, 0x83e8,
+ 0xa438, 0xae09, 0xa438, 0xbf8b, 0xa438, 0xf602, 0xa438, 0x76b6,
+ 0xa438, 0xe583, 0xa438, 0xe8a1, 0xa438, 0x0303, 0xa438, 0xaf8a,
+ 0xa438, 0x95b7, 0xa438, 0xafe2, 0xa438, 0x83ec, 0xa438, 0xf735,
+ 0xa438, 0xe683, 0xa438, 0xecbf, 0xa438, 0x7295, 0xa438, 0x0276,
+ 0xa438, 0x6bbf, 0xa438, 0x726b, 0xa438, 0x0276, 0xa438, 0x74bf,
+ 0xa438, 0x726e, 0xa438, 0x0276, 0xa438, 0x74bf, 0xa438, 0x7271,
+ 0xa438, 0x0276, 0xa438, 0x74bf, 0xa438, 0x7274, 0xa438, 0x0276,
+ 0xa438, 0x74bf, 0xa438, 0x7277, 0xa438, 0x0276, 0xa438, 0x74bf,
+ 0xa438, 0x727a, 0xa438, 0x0276, 0xa438, 0x7402, 0xa438, 0x8929,
+ 0xa438, 0xd401, 0xa438, 0x28d6, 0xa438, 0x0010, 0xa438, 0xd20f,
+ 0xa438, 0xe684, 0xa438, 0x7602, 0xa438, 0x6671, 0xa438, 0x021f,
+ 0xa438, 0xbbff, 0xa438, 0xfefd, 0xa438, 0xef95, 0xa438, 0xfdfc,
+ 0xa438, 0x04f8, 0xa438, 0xf9ef, 0xa438, 0x59f9, 0xa438, 0xe080,
+ 0xa438, 0x12ad, 0xa438, 0x230c, 0xa438, 0xbf72, 0xa438, 0x9e02,
+ 0xa438, 0x766b, 0xa438, 0xbf72, 0xa438, 0x9502, 0xa438, 0x766b,
+ 0xa438, 0xfdef, 0xa438, 0x95fd, 0xa438, 0xfc04, 0xa438, 0xbf6e,
0xa438, 0x0602, 0xa438, 0x76b6, 0xa438, 0xef64, 0xa438, 0xbf6e,
0xa438, 0x0902, 0xa438, 0x76b6, 0xa438, 0x1e64, 0xa438, 0xbf6e,
0xa438, 0x0f02, 0xa438, 0x76b6, 0xa438, 0x1e64, 0xa438, 0xac40,
- 0xa438, 0x05a3, 0xa438, 0x0f0c, 0xa438, 0xae26, 0xa438, 0xa303,
- 0xa438, 0x02ae, 0xa438, 0x21a3, 0xa438, 0x0c02, 0xa438, 0xae1c,
- 0xa438, 0xe084, 0xa438, 0x74e1, 0xa438, 0x8475, 0xa438, 0xef64,
- 0xa438, 0xd000, 0xa438, 0xd196, 0xa438, 0xef74, 0xa438, 0x0275,
- 0xa438, 0xd9ad, 0xa438, 0x50b7, 0xa438, 0xe083, 0xa438, 0xecf7,
- 0xa438, 0x23e4, 0xa438, 0x83ec, 0xa438, 0xbf72, 0xa438, 0x9e02,
- 0xa438, 0x766b, 0xa438, 0x0287, 0xa438, 0x0102, 0xa438, 0x8906,
- 0xa438, 0xee83, 0xa438, 0xe800, 0xa438, 0xbf72, 0xa438, 0x6b02,
- 0xa438, 0x766b, 0xa438, 0xbf72, 0xa438, 0x6e02, 0xa438, 0x766b,
- 0xa438, 0xbf72, 0xa438, 0x7102, 0xa438, 0x766b, 0xa438, 0xbf72,
- 0xa438, 0x7402, 0xa438, 0x766b, 0xa438, 0xbf72, 0xa438, 0x7702,
- 0xa438, 0x766b, 0xa438, 0xbf72, 0xa438, 0x7a02, 0xa438, 0x766b,
- 0xa438, 0xd400, 0xa438, 0x0fbf, 0xa438, 0x7295, 0xa438, 0x0276,
- 0xa438, 0x97d7, 0xa438, 0x0400, 0xa438, 0xbf6e, 0xa438, 0x0602,
- 0xa438, 0x76b6, 0xa438, 0xef64, 0xa438, 0xbf6e, 0xa438, 0x0902,
- 0xa438, 0x76b6, 0xa438, 0x1e64, 0xa438, 0xbf6e, 0xa438, 0x0f02,
- 0xa438, 0x76b6, 0xa438, 0x1e64, 0xa438, 0xac40, 0xa438, 0x0fbf,
- 0xa438, 0x7298, 0xa438, 0x0276, 0xa438, 0xb6e5, 0xa438, 0x83e8,
- 0xa438, 0xa10f, 0xa438, 0x28af, 0xa438, 0x8a95, 0xa438, 0xbf8b,
- 0xa438, 0xf302, 0xa438, 0x76b6, 0xa438, 0xac28, 0xa438, 0x02ae,
- 0xa438, 0x0bbf, 0xa438, 0x8bf9, 0xa438, 0x0276, 0xa438, 0xb6e5,
- 0xa438, 0x83e8, 0xa438, 0xae09, 0xa438, 0xbf8b, 0xa438, 0xf602,
- 0xa438, 0x76b6, 0xa438, 0xe583, 0xa438, 0xe8a1, 0xa438, 0x0303,
- 0xa438, 0xaf8a, 0xa438, 0x95b7, 0xa438, 0xafe2, 0xa438, 0x83ec,
- 0xa438, 0xf735, 0xa438, 0xe683, 0xa438, 0xecbf, 0xa438, 0x7295,
- 0xa438, 0x0276, 0xa438, 0x6bbf, 0xa438, 0x726b, 0xa438, 0x0276,
- 0xa438, 0x74bf, 0xa438, 0x726e, 0xa438, 0x0276, 0xa438, 0x74bf,
- 0xa438, 0x7271, 0xa438, 0x0276, 0xa438, 0x74bf, 0xa438, 0x7274,
- 0xa438, 0x0276, 0xa438, 0x74bf, 0xa438, 0x7277, 0xa438, 0x0276,
- 0xa438, 0x74bf, 0xa438, 0x727a, 0xa438, 0x0276, 0xa438, 0x7402,
- 0xa438, 0x8929, 0xa438, 0xd401, 0xa438, 0x28d6, 0xa438, 0x0010,
- 0xa438, 0xd20f, 0xa438, 0xe684, 0xa438, 0x7602, 0xa438, 0x6671,
- 0xa438, 0x021f, 0xa438, 0xbbff, 0xa438, 0xfefd, 0xa438, 0xef95,
- 0xa438, 0xfdfc, 0xa438, 0x04f8, 0xa438, 0xf9ef, 0xa438, 0x59f9,
- 0xa438, 0xe080, 0xa438, 0x12ad, 0xa438, 0x230c, 0xa438, 0xbf72,
- 0xa438, 0x9e02, 0xa438, 0x766b, 0xa438, 0xbf72, 0xa438, 0x9502,
- 0xa438, 0x766b, 0xa438, 0xfdef, 0xa438, 0x95fd, 0xa438, 0xfc04,
- 0xa438, 0xbf6e, 0xa438, 0x0602, 0xa438, 0x76b6, 0xa438, 0xef64,
- 0xa438, 0xbf6e, 0xa438, 0x0902, 0xa438, 0x76b6, 0xa438, 0x1e64,
- 0xa438, 0xbf6e, 0xa438, 0x0f02, 0xa438, 0x76b6, 0xa438, 0x1e64,
- 0xa438, 0xac40, 0xa438, 0x0ebf, 0xa438, 0x7298, 0xa438, 0x0276,
- 0xa438, 0xb6e5, 0xa438, 0x8478, 0xa438, 0xa10f, 0xa438, 0x26ae,
- 0xa438, 0x47bf, 0xa438, 0x8bf3, 0xa438, 0x0276, 0xa438, 0xb6ac,
- 0xa438, 0x2802, 0xa438, 0xae0b, 0xa438, 0xbf8b, 0xa438, 0xf902,
- 0xa438, 0x76b6, 0xa438, 0xe584, 0xa438, 0x78ae, 0xa438, 0x09bf,
- 0xa438, 0x8bf6, 0xa438, 0x0276, 0xa438, 0xb6e5, 0xa438, 0x8478,
- 0xa438, 0xa103, 0xa438, 0x02ae, 0xa438, 0x23e0, 0xa438, 0x8474,
- 0xa438, 0xe184, 0xa438, 0x75ef, 0xa438, 0x64e0, 0xa438, 0x83fc,
- 0xa438, 0xe183, 0xa438, 0xfdef, 0xa438, 0x7402, 0xa438, 0x75d9,
- 0xa438, 0xad50, 0xa438, 0x0ae0, 0xa438, 0x83ec, 0xa438, 0xf721,
- 0xa438, 0xe483, 0xa438, 0xecae, 0xa438, 0x03af, 0xa438, 0x68e4,
- 0xa438, 0xbf72, 0xa438, 0x9502, 0xa438, 0x766b, 0xa438, 0xe083,
- 0xa438, 0xebad, 0xa438, 0x2170, 0xa438, 0xbf73, 0xa438, 0x7f02,
- 0xa438, 0x766b, 0xa438, 0xd700, 0xa438, 0x64bf, 0xa438, 0x73c4,
- 0xa438, 0x0276, 0xa438, 0xb6a4, 0xa438, 0x0000, 0xa438, 0x02ae,
- 0xa438, 0x0d87, 0xa438, 0xa700, 0xa438, 0x00ef, 0xa438, 0xe183,
- 0xa438, 0xecf7, 0xa438, 0x2ae5, 0xa438, 0x83ec, 0xa438, 0xbf73,
- 0xa438, 0xbe02, 0xa438, 0x766b, 0xa438, 0xbf73, 0xa438, 0xb802,
- 0xa438, 0x766b, 0xa438, 0xbf73, 0xa438, 0xc102, 0xa438, 0x766b,
- 0xa438, 0xbf73, 0xa438, 0xbb02, 0xa438, 0x766b, 0xa438, 0xe084,
- 0xa438, 0x9ee1, 0xa438, 0x849f, 0xa438, 0xbf72, 0xa438, 0x7d02,
- 0xa438, 0x7697, 0xa438, 0xbf72, 0xa438, 0x8002, 0xa438, 0x7697,
- 0xa438, 0xbf72, 0xa438, 0x8302, 0xa438, 0x7697, 0xa438, 0xbf72,
- 0xa438, 0x8602, 0xa438, 0x7697, 0xa438, 0xbf72, 0xa438, 0x8902,
- 0xa438, 0x7674, 0xa438, 0xbf72, 0xa438, 0x8c02, 0xa438, 0x7674,
- 0xa438, 0xbf72, 0xa438, 0x8f02, 0xa438, 0x7674, 0xa438, 0xbf72,
- 0xa438, 0x9202, 0xa438, 0x7674, 0xa438, 0xee84, 0xa438, 0x7700,
- 0xa438, 0xe080, 0xa438, 0x44f6, 0xa438, 0x21e4, 0xa438, 0x8044,
- 0xa438, 0xaf68, 0xa438, 0xe411, 0xa438, 0xd1a4, 0xa438, 0x10bc,
- 0xa438, 0x7432, 0xa438, 0xbc74, 0xa438, 0xbbbf, 0xa438, 0x14cc,
- 0xa438, 0xbfaa, 0xa438, 0x00bf, 0xa438, 0x9055, 0xa438, 0xbf06,
- 0xa438, 0x10bf, 0xa438, 0xb876, 0xa438, 0xbe02, 0xa438, 0x54be,
- 0xa438, 0x0232, 0xa438, 0xbe02, 0xa438, 0x10be, 0xa438, 0x0200,
- 0xa436, 0x8fe7, 0xa438, 0x1200, 0xa436, 0x8fe9, 0xa438, 0x1200,
- 0xa436, 0x8feb, 0xa438, 0x1200, 0xa436, 0x8fed, 0xa438, 0x1200,
- 0xa436, 0x8fef, 0xa438, 0x1200, 0xa436, 0x8ff1, 0xa438, 0x1200,
- 0xa436, 0x8ff3, 0xa438, 0x1200, 0xa436, 0x8ff5, 0xa438, 0x1200,
- 0xa436, 0x8ff7, 0xa438, 0x1200, 0xa436, 0x8ff9, 0xa438, 0x1200,
- 0xa436, 0x8ffb, 0xa438, 0x1200, 0xa436, 0x8ffd, 0xa438, 0x1200,
- 0xa436, 0xb818, 0xa438, 0x6602, 0xa436, 0xb81a, 0xa438, 0x1f75,
- 0xa436, 0xb81c, 0xa438, 0x67eb, 0xa436, 0xb81e, 0xa438, 0xffff,
- 0xa436, 0xb850, 0xa438, 0xffff, 0xa436, 0xb852, 0xa438, 0xffff,
- 0xa436, 0xb878, 0xa438, 0xffff, 0xa436, 0xb884, 0xa438, 0xffff,
- 0xa436, 0xb832, 0xa438, 0x0007, 0xB82E, 0x0000, 0xa436, 0x8023,
- 0xa438, 0x0000, 0xB820, 0x0000, 0xFFFF, 0xFFFF
+ 0xa438, 0x0ebf, 0xa438, 0x7298, 0xa438, 0x0276, 0xa438, 0xb6e5,
+ 0xa438, 0x8478, 0xa438, 0xa10f, 0xa438, 0x26ae, 0xa438, 0x47bf,
+ 0xa438, 0x8bf3, 0xa438, 0x0276, 0xa438, 0xb6ac, 0xa438, 0x2802,
+ 0xa438, 0xae0b, 0xa438, 0xbf8b, 0xa438, 0xf902, 0xa438, 0x76b6,
+ 0xa438, 0xe584, 0xa438, 0x78ae, 0xa438, 0x09bf, 0xa438, 0x8bf6,
+ 0xa438, 0x0276, 0xa438, 0xb6e5, 0xa438, 0x8478, 0xa438, 0xa103,
+ 0xa438, 0x02ae, 0xa438, 0x23e0, 0xa438, 0x8474, 0xa438, 0xe184,
+ 0xa438, 0x75ef, 0xa438, 0x64e0, 0xa438, 0x83fc, 0xa438, 0xe183,
+ 0xa438, 0xfdef, 0xa438, 0x7402, 0xa438, 0x75d9, 0xa438, 0xad50,
+ 0xa438, 0x0ae0, 0xa438, 0x83ec, 0xa438, 0xf721, 0xa438, 0xe483,
+ 0xa438, 0xecae, 0xa438, 0x03af, 0xa438, 0x68e4, 0xa438, 0xbf72,
+ 0xa438, 0x9502, 0xa438, 0x766b, 0xa438, 0xe083, 0xa438, 0xebad,
+ 0xa438, 0x2170, 0xa438, 0xbf73, 0xa438, 0x7f02, 0xa438, 0x766b,
+ 0xa438, 0xd700, 0xa438, 0x64bf, 0xa438, 0x73c4, 0xa438, 0x0276,
+ 0xa438, 0xb6a4, 0xa438, 0x0000, 0xa438, 0x02ae, 0xa438, 0x0d87,
+ 0xa438, 0xa700, 0xa438, 0x00ef, 0xa438, 0xe183, 0xa438, 0xecf7,
+ 0xa438, 0x2ae5, 0xa438, 0x83ec, 0xa438, 0xbf73, 0xa438, 0xbe02,
+ 0xa438, 0x766b, 0xa438, 0xbf73, 0xa438, 0xb802, 0xa438, 0x766b,
+ 0xa438, 0xbf73, 0xa438, 0xc102, 0xa438, 0x766b, 0xa438, 0xbf73,
+ 0xa438, 0xbb02, 0xa438, 0x766b, 0xa438, 0xe084, 0xa438, 0x9ee1,
+ 0xa438, 0x849f, 0xa438, 0xbf72, 0xa438, 0x7d02, 0xa438, 0x7697,
+ 0xa438, 0xbf72, 0xa438, 0x8002, 0xa438, 0x7697, 0xa438, 0xbf72,
+ 0xa438, 0x8302, 0xa438, 0x7697, 0xa438, 0xbf72, 0xa438, 0x8602,
+ 0xa438, 0x7697, 0xa438, 0xbf72, 0xa438, 0x8902, 0xa438, 0x7674,
+ 0xa438, 0xbf72, 0xa438, 0x8c02, 0xa438, 0x7674, 0xa438, 0xbf72,
+ 0xa438, 0x8f02, 0xa438, 0x7674, 0xa438, 0xbf72, 0xa438, 0x9202,
+ 0xa438, 0x7674, 0xa438, 0xee84, 0xa438, 0x7700, 0xa438, 0xe080,
+ 0xa438, 0x44f6, 0xa438, 0x21e4, 0xa438, 0x8044, 0xa438, 0xaf68,
+ 0xa438, 0xe411, 0xa438, 0xd1a4, 0xa438, 0x10bc, 0xa438, 0x7432,
+ 0xa438, 0xbc74, 0xa438, 0xbbbf, 0xa438, 0x14cc, 0xa438, 0xbfaa,
+ 0xa438, 0x00bf, 0xa438, 0x9055, 0xa438, 0xbf06, 0xa438, 0x10bf,
+ 0xa438, 0xb876, 0xa438, 0xbe02, 0xa438, 0x54be, 0xa438, 0x0232,
+ 0xa438, 0xbe02, 0xa438, 0x10be, 0xa438, 0x0200, 0xa436, 0x8fe7,
+ 0xa438, 0x1200, 0xa436, 0x8fe9, 0xa438, 0x1200, 0xa436, 0x8feb,
+ 0xa438, 0x1200, 0xa436, 0x8fed, 0xa438, 0x1200, 0xa436, 0x8fef,
+ 0xa438, 0x1200, 0xa436, 0x8ff1, 0xa438, 0x1200, 0xa436, 0x8ff3,
+ 0xa438, 0x1200, 0xa436, 0x8ff5, 0xa438, 0x1200, 0xa436, 0x8ff7,
+ 0xa438, 0x1200, 0xa436, 0x8ff9, 0xa438, 0x1200, 0xa436, 0x8ffb,
+ 0xa438, 0x1200, 0xa436, 0x8ffd, 0xa438, 0x1200, 0xa436, 0xb818,
+ 0xa438, 0x6602, 0xa436, 0xb81a, 0xa438, 0x1f75, 0xa436, 0xb81c,
+ 0xa438, 0x67eb, 0xa436, 0xb81e, 0xa438, 0xffff, 0xa436, 0xb850,
+ 0xa438, 0xffff, 0xa436, 0xb852, 0xa438, 0xffff, 0xa436, 0xb878,
+ 0xa438, 0xffff, 0xa436, 0xb884, 0xa438, 0xffff, 0xa436, 0xb832,
+ 0xa438, 0x0007, 0xB82E, 0x0000, 0xa436, 0x8023, 0xa438, 0x0000,
+ 0xB820, 0x0000, 0xFFFF, 0xFFFF
};
static const u16 phy_mcu_ram_code_8127a_2[] = {
@@ -567,7 +1166,42 @@ static const u16 phy_mcu_ram_code_8127a_2[] = {
0xB890, 0x5060, 0xB890, 0xE0D0, 0xB890, 0xA000, 0xB890, 0x3030,
0xB890, 0x4070, 0xB890, 0xE0E0, 0xB890, 0xD080, 0xB890, 0xA010,
0xB890, 0xE040, 0xB890, 0x80B0, 0xB890, 0x50B0, 0xB890, 0x2090,
- 0xB820, 0x0000, 0xFFFF, 0xFFFF
+ 0xB88E, 0xC110, 0xB890, 0xE8F4, 0xB890, 0xF4F4, 0xB88E, 0xC14E,
+ 0xB890, 0x26EF, 0xB890, 0xEFEF, 0xB88E, 0xC374, 0xB890, 0x00FA,
+ 0xB890, 0x008C, 0xB890, 0x03D2, 0xB890, 0x0373, 0xB890, 0x03B9,
+ 0xB890, 0x0006, 0xB890, 0x0013, 0xB890, 0x03FE, 0xB890, 0x03DE,
+ 0xB890, 0x0008, 0xB890, 0x0008, 0xB890, 0x000D, 0xB890, 0x03F3,
+ 0xB890, 0x0010, 0xB890, 0x000A, 0xB890, 0x000E, 0xB890, 0x03F5,
+ 0xB890, 0x0001, 0xB890, 0x03FF, 0xB890, 0x0000, 0xB890, 0x0005,
+ 0xB890, 0x000A, 0xB890, 0x03F3, 0xB890, 0x0003, 0xB890, 0x03F1,
+ 0xB890, 0x0003, 0xB890, 0x000C, 0xB890, 0x000E, 0xB890, 0x03FA,
+ 0xB890, 0x0007, 0xB890, 0x0008, 0xB890, 0x0010, 0xB890, 0x03EE,
+ 0xB890, 0x000E, 0xB890, 0x03F6, 0xB890, 0x0007, 0xB890, 0x03FC,
+ 0xB890, 0x000B, 0xB890, 0x03FB, 0xB890, 0x000F, 0xB890, 0x03F6,
+ 0xB890, 0x0016, 0xB890, 0x03F9, 0xB890, 0x03FF, 0xB890, 0x03FF,
+ 0xB890, 0x0007, 0xB890, 0x03FD, 0xB890, 0x000D, 0xB890, 0x03FE,
+ 0xB890, 0x0003, 0xB890, 0x03F1, 0xB890, 0x000B, 0xB890, 0x0000,
+ 0xB890, 0x0012, 0xB890, 0x03FD, 0xB890, 0x03FC, 0xB890, 0x0004,
+ 0xB890, 0x000F, 0xB890, 0x03EF, 0xB890, 0x03F9, 0xB890, 0x000D,
+ 0xB890, 0x0002, 0xB890, 0x000C, 0xB890, 0x0003, 0xB890, 0x0069,
+ 0xB890, 0x0064, 0xB890, 0x004F, 0xB890, 0x001E, 0xB890, 0x03ED,
+ 0xB890, 0x03DC, 0xB890, 0x03BC, 0xB890, 0x03D1, 0xB890, 0x03C5,
+ 0xB890, 0x03E4, 0xB890, 0x03EA, 0xB890, 0x03FF, 0xB890, 0x03FA,
+ 0xB890, 0x0007, 0xB890, 0x03FF, 0xB890, 0x03E5, 0xB890, 0x03FA,
+ 0xB890, 0x03F1, 0xB890, 0x03F8, 0xB890, 0x03EF, 0xB890, 0x0007,
+ 0xB890, 0x0002, 0xB890, 0x0016, 0xB890, 0x0001, 0xB890, 0x000A,
+ 0xB890, 0x03F6, 0xB890, 0x0000, 0xB890, 0x03F7, 0xB890, 0x0004,
+ 0xB890, 0x0002, 0xB890, 0x0010, 0xB890, 0x0004, 0xB890, 0x03FD,
+ 0xB890, 0x03F2, 0xB890, 0x03EE, 0xB890, 0x03FA, 0xB890, 0x03F1,
+ 0xB890, 0x03FE, 0xB890, 0x03FB, 0xB890, 0x0008, 0xB890, 0x03EE,
+ 0xB890, 0x000F, 0xB890, 0x03F0, 0xB890, 0x000F, 0xB890, 0x03F3,
+ 0xB890, 0x0004, 0xB890, 0x03F3, 0xB890, 0x0003, 0xB890, 0x03F5,
+ 0xB890, 0x03FE, 0xB890, 0x03F5, 0xB890, 0x0008, 0xB890, 0x03F7,
+ 0xB890, 0x000A, 0xB890, 0x03F9, 0xB890, 0x0000, 0xB890, 0x03FB,
+ 0xB890, 0x000C, 0xB890, 0x03EC, 0xB890, 0x03FB, 0xB890, 0x03EE,
+ 0xB890, 0x000E, 0xB890, 0x03F5, 0xB890, 0x0007, 0xB88E, 0xC128,
+ 0xB890, 0xF0F0, 0xB890, 0xF0EB, 0xB88E, 0xC166, 0xB890, 0xEAEA,
+ 0xB890, 0xEA0E, 0xB820, 0x0000, 0xFFFF, 0xFFFF
};
static void
diff --git a/drivers/net/r8169/r8169_fiber.c b/drivers/net/r8169/r8169_fiber.c
index 9108fa6bba..caad868cf5 100644
--- a/drivers/net/r8169/r8169_fiber.c
+++ b/drivers/net/r8169/r8169_fiber.c
@@ -107,13 +107,19 @@ rtl8127_set_sds_phy_caps_1g_8127(struct rtl_hw *hw)
{
u16 val;
+ if (hw->fcpause == rtl_fc_full)
+ rtl8127_set_sds_phy_bit(hw, 0, 2, 4, BIT_8 | BIT_7);
+ else
+ rtl8127_clear_sds_phy_bit(hw, 0, 2, 4, BIT_8 | BIT_7);
+
rtl8127_set_sds_phy_bit(hw, 0, 1, 31, BIT_3);
rtl8127_clear_and_set_sds_phy_bit(hw, 0, 2, 0, BIT_13 | BIT_12 | BIT_6,
BIT_12 | BIT_6);
+ rtl8127_set_sds_phy_bit(hw, 0, 0, 4, BIT_2);
RTL_W16(hw, 0x233A, 0x8004);
val = RTL_R16(hw, 0x233E);
- val &= (BIT_13 | BIT_12 | BIT_1 | BIT_0);
+ val &= ~(BIT_13 | BIT_12 | BIT_1 | BIT_0);
val |= BIT_1;
RTL_W16(hw, 0x233E, val);
@@ -139,10 +145,15 @@ rtl8127_set_sds_phy_caps_10g_8127(struct rtl_hw *hw)
{
u16 val;
+ if (hw->fcpause == rtl_fc_full)
+ rtl8127_set_sds_phy_bit(hw, 0, 31, 11, BIT_3 | BIT_2);
+ else
+ rtl8127_clear_sds_phy_bit(hw, 0, 31, 11, BIT_3 | BIT_2);
+
RTL_W16(hw, 0x233A, 0x801A);
val = RTL_R16(hw, 0x233E);
- val &= (BIT_13 | BIT_12 | BIT_1 | BIT_0);
+ val &= ~(BIT_13 | BIT_12 | BIT_1 | BIT_0);
val |= BIT_12;
RTL_W16(hw, 0x233E, val);
diff --git a/drivers/net/r8169/r8169_hw.h b/drivers/net/r8169/r8169_hw.h
index e1fe238b85..c8705edad4 100644
--- a/drivers/net/r8169/r8169_hw.h
+++ b/drivers/net/r8169/r8169_hw.h
@@ -140,7 +140,7 @@ extern const struct rtl_hw_ops rtl8125cp_ops;
#define NIC_RAMCODE_VERSION_CFG_METHOD_69 (0x0023)
#define NIC_RAMCODE_VERSION_CFG_METHOD_70 (0x0033)
#define NIC_RAMCODE_VERSION_CFG_METHOD_71 (0x0060)
-#define NIC_RAMCODE_VERSION_CFG_METHOD_91 (0x0036)
+#define NIC_RAMCODE_VERSION_CFG_METHOD_91 (0x0051)
#define RTL_MAC_MCU_PAGE_SIZE 256
#define RTL_DEFAULT_MTU 1500
--
2.34.1
^ permalink raw reply related [flat|nested] 15+ messages in thread* [PATCH v3 05/12] net/r8169: adjust jumbo frame size limit for non-1G cards
2026-02-12 5:58 [PATCH v3 00/12] net/r8169: update driver with new HW support and fixes Howard Wang
` (3 preceding siblings ...)
2026-02-12 5:58 ` [PATCH v3 04/12] net/r8169: update hardware configurations for 8127 Howard Wang
@ 2026-02-12 5:58 ` Howard Wang
2026-02-12 5:58 ` [PATCH v3 06/12] net/r8169: remove support for CFG_METHOD_69 Howard Wang
` (7 subsequent siblings)
12 siblings, 0 replies; 15+ messages in thread
From: Howard Wang @ 2026-02-12 5:58 UTC (permalink / raw)
To: dev; +Cc: pro_nic_dpdk, Howard Wang
For 8125A, set the max size to (16K - 1).
For other non-1G cards, set the max size to 16K.
Signed-off-by: Howard Wang <howard_wang@realsil.com.cn>
---
drivers/net/r8169/r8169_compat.h | 1 +
drivers/net/r8169/r8169_ethdev.c | 23 ++++++++++++++++++++++-
2 files changed, 23 insertions(+), 1 deletion(-)
diff --git a/drivers/net/r8169/r8169_compat.h b/drivers/net/r8169/r8169_compat.h
index d2d928cdd7..673a1ca274 100644
--- a/drivers/net/r8169/r8169_compat.h
+++ b/drivers/net/r8169/r8169_compat.h
@@ -617,6 +617,7 @@ enum RTL_chipset_name {
*/
#define RTL_ETH_OVERHEAD (RTE_ETHER_HDR_LEN + RTE_ETHER_CRC_LEN + VLAN_TAG_SIZE)
#define JUMBO_FRAME_9K (9 * 1024 - RTE_ETHER_HDR_LEN - RTE_VLAN_HLEN - RTE_ETHER_CRC_LEN)
+#define JUMBO_FRAME_16K (16 * 1024 - RTE_ETHER_HDR_LEN - RTE_VLAN_HLEN - RTE_ETHER_CRC_LEN)
#define DMA_BIT_MASK(n) (((n) == 64) ? ~0ULL : ((1ULL << (n)) - 1))
diff --git a/drivers/net/r8169/r8169_ethdev.c b/drivers/net/r8169/r8169_ethdev.c
index f620154bf0..8e46ce09a1 100644
--- a/drivers/net/r8169/r8169_ethdev.c
+++ b/drivers/net/r8169/r8169_ethdev.c
@@ -412,9 +412,30 @@ rtl_dev_infos_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info)
struct rtl_hw *hw = &adapter->hw;
dev_info->min_rx_bufsize = 1024;
- dev_info->max_rx_pktlen = JUMBO_FRAME_9K;
dev_info->max_mac_addrs = 1;
+ switch (hw->mcfg) {
+ case CFG_METHOD_48:
+ case CFG_METHOD_49:
+ dev_info->max_rx_pktlen = JUMBO_FRAME_16K - 1;
+ break;
+ case CFG_METHOD_50:
+ case CFG_METHOD_51:
+ case CFG_METHOD_54:
+ case CFG_METHOD_55:
+ case CFG_METHOD_56:
+ case CFG_METHOD_57:
+ case CFG_METHOD_58:
+ case CFG_METHOD_70:
+ case CFG_METHOD_71:
+ case CFG_METHOD_91:
+ dev_info->max_rx_pktlen = JUMBO_FRAME_16K;
+ break;
+ default:
+ dev_info->max_rx_pktlen = JUMBO_FRAME_9K;
+ break;
+ }
+
if (hw->mcfg >= CFG_METHOD_69) {
dev_info->max_rx_queues = 4;
dev_info->max_tx_queues = 2;
--
2.34.1
^ permalink raw reply related [flat|nested] 15+ messages in thread* [PATCH v3 06/12] net/r8169: remove support for CFG_METHOD_69
2026-02-12 5:58 [PATCH v3 00/12] net/r8169: update driver with new HW support and fixes Howard Wang
` (4 preceding siblings ...)
2026-02-12 5:58 ` [PATCH v3 05/12] net/r8169: adjust jumbo frame size limit for non-1G cards Howard Wang
@ 2026-02-12 5:58 ` Howard Wang
2026-02-12 5:58 ` [PATCH v3 07/12] net/r8169: update hardware configurations for 8126 Howard Wang
` (6 subsequent siblings)
12 siblings, 0 replies; 15+ messages in thread
From: Howard Wang @ 2026-02-12 5:58 UTC (permalink / raw)
To: dev; +Cc: pro_nic_dpdk, Howard Wang
CFG_METHOD_69(RLE0949) is a test chip and it will not on the market.
So remove it to simplify code.
Signed-off-by: Howard Wang <howard_wang@realsil.com.cn>
---
drivers/net/r8169/base/rtl8126a.c | 22 +-
drivers/net/r8169/base/rtl8126a_mcu.c | 613 +-------------------------
drivers/net/r8169/base/rtl8126a_mcu.h | 2 -
drivers/net/r8169/r8169_ethdev.c | 4 +-
drivers/net/r8169/r8169_hw.c | 25 +-
drivers/net/r8169/r8169_hw.h | 1 -
drivers/net/r8169/r8169_phy.c | 3 -
drivers/net/r8169/r8169_rxtx.c | 1 -
8 files changed, 7 insertions(+), 664 deletions(-)
diff --git a/drivers/net/r8169/base/rtl8126a.c b/drivers/net/r8169/base/rtl8126a.c
index 58b1cc2664..e3f68c1292 100644
--- a/drivers/net/r8169/base/rtl8126a.c
+++ b/drivers/net/r8169/base/rtl8126a.c
@@ -7,16 +7,12 @@
#include "../r8169_phy.h"
#include "rtl8126a_mcu.h"
-/* For RTL8126A, CFG_METHOD_69,70,71 */
+/* For RTL8126A, CFG_METHOD_70,71 */
static void
hw_init_rxcfg_8126a(struct rtl_hw *hw)
{
switch (hw->mcfg) {
- case CFG_METHOD_69:
- RTL_W32(hw, RxConfig, Rx_Fetch_Number_20 | RxCfg_pause_slot_en |
- (RX_DMA_BURST_512 << RxCfgDMAShift));
- break;
case CFG_METHOD_70:
case CFG_METHOD_71:
RTL_W32(hw, RxConfig, Rx_Fetch_Number_20 | Rx_Close_Multiple |
@@ -29,7 +25,6 @@ static void
hw_ephy_config_8126a(struct rtl_hw *hw)
{
switch (hw->mcfg) {
- case CFG_METHOD_69:
case CFG_METHOD_70:
case CFG_METHOD_71:
/* nothing to do */
@@ -37,12 +32,6 @@ hw_ephy_config_8126a(struct rtl_hw *hw)
}
}
-static void
-rtl_hw_phy_config_8126a_1(struct rtl_hw *hw)
-{
- rtl_set_eth_phy_ocp_bit(hw, 0xA442, BIT_11);
-}
-
static void
rtl_hw_phy_config_8126a_2(struct rtl_hw *hw)
{
@@ -473,9 +462,6 @@ static void
hw_phy_config_8126a(struct rtl_hw *hw)
{
switch (hw->mcfg) {
- case CFG_METHOD_69:
- rtl_hw_phy_config_8126a_1(hw);
- break;
case CFG_METHOD_70:
rtl_hw_phy_config_8126a_2(hw);
break;
@@ -497,9 +483,6 @@ hw_mac_mcu_config_8126a(struct rtl_hw *hw)
hw->hw_mcu_patch_code_ver = rtl_get_hw_mcu_patch_code_ver(hw);
switch (hw->mcfg) {
- case CFG_METHOD_69:
- rtl_set_mac_mcu_8126a_1(hw);
- break;
case CFG_METHOD_70:
rtl_set_mac_mcu_8126a_2(hw);
break;
@@ -513,9 +496,6 @@ static void
hw_phy_mcu_config_8126a(struct rtl_hw *hw)
{
switch (hw->mcfg) {
- case CFG_METHOD_69:
- rtl_set_phy_mcu_8126a_1(hw);
- break;
case CFG_METHOD_70:
rtl_set_phy_mcu_8126a_2(hw);
break;
diff --git a/drivers/net/r8169/base/rtl8126a_mcu.c b/drivers/net/r8169/base/rtl8126a_mcu.c
index 759e2df7cf..89ad5f6deb 100644
--- a/drivers/net/r8169/base/rtl8126a_mcu.c
+++ b/drivers/net/r8169/base/rtl8126a_mcu.c
@@ -7,34 +7,10 @@
#include "../r8169_phy.h"
#include "rtl8126a_mcu.h"
-/* For RTL8126A, CFG_METHOD_69,70,71 */
+/* For RTL8126A, CFG_METHOD_70,71 */
/* ------------------------------------MAC 8126A------------------------------------- */
-void
-rtl_set_mac_mcu_8126a_1(struct rtl_hw *hw)
-{
- static const u16 mcu_patch_code_8126a_1[] = {
- 0xE010, 0xE019, 0xE01B, 0xE01D, 0xE01F, 0xE021, 0xE023, 0xE025, 0xE027,
- 0xE029, 0xE02B, 0xE02D, 0xE02F, 0xE031, 0xE033, 0xE035, 0x48C0, 0x9C66,
- 0x7446, 0x4840, 0x48C1, 0x48C2, 0x9C46, 0xC402, 0xBC00, 0x0AD6, 0xC602,
- 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602,
- 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602,
- 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602,
- 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602,
- 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000
- };
-
- rtl_write_mac_mcu_ram_code(hw, mcu_patch_code_8126a_1,
- ARRAY_SIZE(mcu_patch_code_8126a_1));
-
- rtl_mac_ocp_write(hw, 0xFC26, 0x8000);
-
- rtl_mac_ocp_write(hw, 0xFC28, 0x0AAA);
-
- rtl_mac_ocp_write(hw, 0xFC48, 0x0001);
-}
-
void
rtl_set_mac_mcu_8126a_2(struct rtl_hw *hw)
{
@@ -125,550 +101,6 @@ rtl_set_mac_mcu_8126a_3(struct rtl_hw *hw)
/* ------------------------------------PHY 8126A------------------------------------- */
-static const u16 phy_mcu_ram_code_8126a_1_1[] = {
- 0xa436, 0x8023, 0xa438, 0x4900, 0xa436, 0xB82E, 0xa438, 0x0001,
- 0xBFBA, 0xE000, 0xBF1A, 0xC1B9, 0xBFA8, 0x10F0, 0xBFB0, 0x0210,
- 0xBFB4, 0xE7E4, 0xb820, 0x0090, 0xa436, 0xA016, 0xa438, 0x0000,
- 0xa436, 0xA012, 0xa438, 0x0000, 0xa436, 0xA014, 0xa438, 0x1800,
- 0xa438, 0x8010, 0xa438, 0x1800, 0xa438, 0x8062, 0xa438, 0x1800,
- 0xa438, 0x8069, 0xa438, 0x1800, 0xa438, 0x80e2, 0xa438, 0x1800,
- 0xa438, 0x80eb, 0xa438, 0x1800, 0xa438, 0x80f5, 0xa438, 0x1800,
- 0xa438, 0x811b, 0xa438, 0x1800, 0xa438, 0x8120, 0xa438, 0xd500,
- 0xa438, 0xd049, 0xa438, 0xd1b9, 0xa438, 0xa208, 0xa438, 0x8208,
- 0xa438, 0xd503, 0xa438, 0xa104, 0xa438, 0x0c07, 0xa438, 0x0902,
- 0xa438, 0xd500, 0xa438, 0xbc10, 0xa438, 0xc484, 0xa438, 0xd503,
- 0xa438, 0xcc02, 0xa438, 0xcd0d, 0xa438, 0xaf01, 0xa438, 0xd500,
- 0xa438, 0xd703, 0xa438, 0x4531, 0xa438, 0xbd08, 0xa438, 0x1000,
- 0xa438, 0x16bb, 0xa438, 0xd75e, 0xa438, 0x5fb3, 0xa438, 0xd503,
- 0xa438, 0xd04d, 0xa438, 0xd1c7, 0xa438, 0x0cf0, 0xa438, 0x0e10,
- 0xa438, 0xd704, 0xa438, 0x5ffc, 0xa438, 0xd04d, 0xa438, 0xd1c7,
- 0xa438, 0x0cf0, 0xa438, 0x0e20, 0xa438, 0xd704, 0xa438, 0x5ffc,
- 0xa438, 0xd04d, 0xa438, 0xd1c7, 0xa438, 0x0cf0, 0xa438, 0x0e40,
- 0xa438, 0xd704, 0xa438, 0x5ffc, 0xa438, 0xd04d, 0xa438, 0xd1c7,
- 0xa438, 0x0cf0, 0xa438, 0x0e80, 0xa438, 0xd704, 0xa438, 0x5ffc,
- 0xa438, 0xd07b, 0xa438, 0xd1c5, 0xa438, 0x8ef0, 0xa438, 0xd704,
- 0xa438, 0x5ffc, 0xa438, 0x9d08, 0xa438, 0x1000, 0xa438, 0x16bb,
- 0xa438, 0xd75e, 0xa438, 0x7fb3, 0xa438, 0x1000, 0xa438, 0x16bb,
- 0xa438, 0xd75e, 0xa438, 0x5fad, 0xa438, 0x1000, 0xa438, 0x181f,
- 0xa438, 0xd703, 0xa438, 0x3181, 0xa438, 0x8059, 0xa438, 0x60ad,
- 0xa438, 0x1000, 0xa438, 0x16bb, 0xa438, 0xd703, 0xa438, 0x5fbb,
- 0xa438, 0x1000, 0xa438, 0x16bb, 0xa438, 0xd719, 0xa438, 0x7fa8,
- 0xa438, 0xd500, 0xa438, 0xd049, 0xa438, 0xd1b9, 0xa438, 0x1800,
- 0xa438, 0x0f0b, 0xa438, 0xd500, 0xa438, 0xd07b, 0xa438, 0xd1b5,
- 0xa438, 0xd0f6, 0xa438, 0xd1c5, 0xa438, 0x1800, 0xa438, 0x1049,
- 0xa438, 0xd707, 0xa438, 0x4121, 0xa438, 0xd706, 0xa438, 0x40fa,
- 0xa438, 0xd099, 0xa438, 0xd1c6, 0xa438, 0x1000, 0xa438, 0x16bb,
- 0xa438, 0xd704, 0xa438, 0x5fbc, 0xa438, 0xbc80, 0xa438, 0xc489,
- 0xa438, 0xd503, 0xa438, 0xcc08, 0xa438, 0xcd46, 0xa438, 0xaf01,
- 0xa438, 0xd500, 0xa438, 0x1000, 0xa438, 0x0903, 0xa438, 0x1000,
- 0xa438, 0x16bb, 0xa438, 0xd75e, 0xa438, 0x5f6d, 0xa438, 0x1000,
- 0xa438, 0x181f, 0xa438, 0xd504, 0xa438, 0xa210, 0xa438, 0xd500,
- 0xa438, 0x1000, 0xa438, 0x16bb, 0xa438, 0xd719, 0xa438, 0x5fbc,
- 0xa438, 0xd504, 0xa438, 0x8210, 0xa438, 0xd503, 0xa438, 0xc6d0,
- 0xa438, 0xa521, 0xa438, 0xcd49, 0xa438, 0xaf01, 0xa438, 0xd504,
- 0xa438, 0xa220, 0xa438, 0xd500, 0xa438, 0x1000, 0xa438, 0x16bb,
- 0xa438, 0xd75e, 0xa438, 0x5fad, 0xa438, 0x1000, 0xa438, 0x181f,
- 0xa438, 0xd503, 0xa438, 0xa704, 0xa438, 0x0c07, 0xa438, 0x0904,
- 0xa438, 0xd504, 0xa438, 0xa102, 0xa438, 0xd500, 0xa438, 0x1000,
- 0xa438, 0x16bb, 0xa438, 0xd718, 0xa438, 0x5fab, 0xa438, 0xd503,
- 0xa438, 0xc6f0, 0xa438, 0xa521, 0xa438, 0xd505, 0xa438, 0xa404,
- 0xa438, 0xd500, 0xa438, 0xd701, 0xa438, 0x6085, 0xa438, 0xd504,
- 0xa438, 0xc9f1, 0xa438, 0xf003, 0xa438, 0xd504, 0xa438, 0xc9f0,
- 0xa438, 0xd503, 0xa438, 0xcd4a, 0xa438, 0xaf01, 0xa438, 0xd500,
- 0xa438, 0xd504, 0xa438, 0xa802, 0xa438, 0xd500, 0xa438, 0x1000,
- 0xa438, 0x16bb, 0xa438, 0xd707, 0xa438, 0x5fb1, 0xa438, 0xd707,
- 0xa438, 0x5f10, 0xa438, 0xd505, 0xa438, 0xa402, 0xa438, 0xd503,
- 0xa438, 0xd707, 0xa438, 0x41a1, 0xa438, 0xd706, 0xa438, 0x60ba,
- 0xa438, 0x60fc, 0xa438, 0x0c07, 0xa438, 0x0204, 0xa438, 0xf009,
- 0xa438, 0x0c07, 0xa438, 0x0202, 0xa438, 0xf006, 0xa438, 0x0c07,
- 0xa438, 0x0206, 0xa438, 0xf003, 0xa438, 0x0c07, 0xa438, 0x0202,
- 0xa438, 0xd500, 0xa438, 0xd703, 0xa438, 0x3181, 0xa438, 0x80e0,
- 0xa438, 0x616d, 0xa438, 0xd701, 0xa438, 0x6065, 0xa438, 0x1800,
- 0xa438, 0x1229, 0xa438, 0x1000, 0xa438, 0x16bb, 0xa438, 0xd707,
- 0xa438, 0x6061, 0xa438, 0xd704, 0xa438, 0x5f7c, 0xa438, 0x1800,
- 0xa438, 0x124a, 0xa438, 0xd504, 0xa438, 0x8c0f, 0xa438, 0xd505,
- 0xa438, 0xa20e, 0xa438, 0xd500, 0xa438, 0x1000, 0xa438, 0x1871,
- 0xa438, 0x1800, 0xa438, 0x1899, 0xa438, 0xd70b, 0xa438, 0x60b0,
- 0xa438, 0xd05a, 0xa438, 0xd19a, 0xa438, 0x1800, 0xa438, 0x1aef,
- 0xa438, 0xd0ef, 0xa438, 0xd19a, 0xa438, 0x1800, 0xa438, 0x1aef,
- 0xa438, 0x1000, 0xa438, 0x1d09, 0xa438, 0xd708, 0xa438, 0x3399,
- 0xa438, 0x1b63, 0xa438, 0xd709, 0xa438, 0x5f5d, 0xa438, 0xd70b,
- 0xa438, 0x6130, 0xa438, 0xd70d, 0xa438, 0x6163, 0xa438, 0xd709,
- 0xa438, 0x430b, 0xa438, 0xd71e, 0xa438, 0x62c2, 0xa438, 0xb401,
- 0xa438, 0xf014, 0xa438, 0xc901, 0xa438, 0x1000, 0xa438, 0x810e,
- 0xa438, 0xf010, 0xa438, 0xc902, 0xa438, 0x1000, 0xa438, 0x810e,
- 0xa438, 0xf00c, 0xa438, 0xce04, 0xa438, 0xcf01, 0xa438, 0xd70a,
- 0xa438, 0x5fe2, 0xa438, 0xce04, 0xa438, 0xcf02, 0xa438, 0xc900,
- 0xa438, 0xd70a, 0xa438, 0x4057, 0xa438, 0xb401, 0xa438, 0x0800,
- 0xa438, 0x1800, 0xa438, 0x1b5d, 0xa438, 0xa480, 0xa438, 0xa2b0,
- 0xa438, 0xa806, 0xa438, 0x1800, 0xa438, 0x225c, 0xa438, 0xa7e8,
- 0xa438, 0xac08, 0xa438, 0x1800, 0xa438, 0x1a4e, 0xa436, 0xA026,
- 0xa438, 0x1a4d, 0xa436, 0xA024, 0xa438, 0x225a, 0xa436, 0xA022,
- 0xa438, 0x1b53, 0xa436, 0xA020, 0xa438, 0x1aed, 0xa436, 0xA006,
- 0xa438, 0x1892, 0xa436, 0xA004, 0xa438, 0x11a4, 0xa436, 0xA002,
- 0xa438, 0x103c, 0xa436, 0xA000, 0xa438, 0x0ea6, 0xa436, 0xA008,
- 0xa438, 0xff00, 0xa436, 0xA016, 0xa438, 0x0000, 0xa436, 0xA012,
- 0xa438, 0x0ff8, 0xa436, 0xA014, 0xa438, 0x0000, 0xa438, 0xD098,
- 0xa438, 0xc483, 0xa438, 0xc483, 0xa438, 0x0000, 0xa438, 0x0000,
- 0xa438, 0x0000, 0xa438, 0x0000, 0xa436, 0xA152, 0xa438, 0x3fff,
- 0xa436, 0xA154, 0xa438, 0x0413, 0xa436, 0xA156, 0xa438, 0x1A32,
- 0xa436, 0xA158, 0xa438, 0x1CC0, 0xa436, 0xA15A, 0xa438, 0x3fff,
- 0xa436, 0xA15C, 0xa438, 0x3fff, 0xa436, 0xA15E, 0xa438, 0x3fff,
- 0xa436, 0xA160, 0xa438, 0x3fff, 0xa436, 0xA150, 0xa438, 0x000E,
- 0xa436, 0xA016, 0xa438, 0x0020, 0xa436, 0xA012, 0xa438, 0x0000,
- 0xa436, 0xA014, 0xa438, 0x1800, 0xa438, 0x8010, 0xa438, 0x1800,
- 0xa438, 0x8021, 0xa438, 0x1800, 0xa438, 0x8037, 0xa438, 0x1800,
- 0xa438, 0x803f, 0xa438, 0x1800, 0xa438, 0x8084, 0xa438, 0x1800,
- 0xa438, 0x80c5, 0xa438, 0x1800, 0xa438, 0x80cc, 0xa438, 0x1800,
- 0xa438, 0x80d5, 0xa438, 0xa00a, 0xa438, 0xa280, 0xa438, 0xa404,
- 0xa438, 0x0000, 0xa438, 0x0000, 0xa438, 0x0000, 0xa438, 0x0000,
- 0xa438, 0x0000, 0xa438, 0x0000, 0xa438, 0x0000, 0xa438, 0x0000,
- 0xa438, 0x0000, 0xa438, 0x0000, 0xa438, 0x0000, 0xa438, 0x0000,
- 0xa438, 0x1800, 0xa438, 0x099b, 0xa438, 0x1000, 0xa438, 0x1021,
- 0xa438, 0xd700, 0xa438, 0x5fab, 0xa438, 0xa208, 0xa438, 0x8204,
- 0xa438, 0xcb38, 0xa438, 0xaa40, 0xa438, 0x0000, 0xa438, 0x0000,
- 0xa438, 0x0000, 0xa438, 0x0000, 0xa438, 0x0000, 0xa438, 0x0000,
- 0xa438, 0x0000, 0xa438, 0x0000, 0xa438, 0x0000, 0xa438, 0x0000,
- 0xa438, 0x0000, 0xa438, 0x0000, 0xa438, 0x1800, 0xa438, 0x0b2a,
- 0xa438, 0x82a0, 0xa438, 0x8404, 0xa438, 0xa110, 0xa438, 0xd706,
- 0xa438, 0x4041, 0xa438, 0xa180, 0xa438, 0x1800, 0xa438, 0x0e7f,
- 0xa438, 0x8190, 0xa438, 0xcb93, 0xa438, 0x1000, 0xa438, 0x0ef4,
- 0xa438, 0xd704, 0xa438, 0x7fb8, 0xa438, 0xa008, 0xa438, 0xd706,
- 0xa438, 0x4040, 0xa438, 0xa002, 0xa438, 0xd705, 0xa438, 0x4079,
- 0xa438, 0x1000, 0xa438, 0x10ad, 0xa438, 0x0c03, 0xa438, 0x1502,
- 0xa438, 0x85f0, 0xa438, 0x9503, 0xa438, 0xd705, 0xa438, 0x40d9,
- 0xa438, 0xd70c, 0xa438, 0x6083, 0xa438, 0x0c1f, 0xa438, 0x0d09,
- 0xa438, 0xf003, 0xa438, 0x0c1f, 0xa438, 0x0d0a, 0xa438, 0x0cc0,
- 0xa438, 0x0d80, 0xa438, 0x1000, 0xa438, 0x104f, 0xa438, 0x1000,
- 0xa438, 0x0ef4, 0xa438, 0x8020, 0xa438, 0xd705, 0xa438, 0x40d9,
- 0xa438, 0xd704, 0xa438, 0x609f, 0xa438, 0xd70c, 0xa438, 0x6043,
- 0xa438, 0x8504, 0xa438, 0xcb94, 0xa438, 0x1000, 0xa438, 0x0ef4,
- 0xa438, 0xd706, 0xa438, 0x7fa2, 0xa438, 0x800a, 0xa438, 0x0c03,
- 0xa438, 0x1502, 0xa438, 0x0cf0, 0xa438, 0x05a0, 0xa438, 0x9503,
- 0xa438, 0xd705, 0xa438, 0x40b9, 0xa438, 0x0c1f, 0xa438, 0x0d00,
- 0xa438, 0x8dc0, 0xa438, 0xf005, 0xa438, 0xa190, 0xa438, 0x0c1f,
- 0xa438, 0x0d17, 0xa438, 0x8dc0, 0xa438, 0x1000, 0xa438, 0x104f,
- 0xa438, 0xd705, 0xa438, 0x39cc, 0xa438, 0x0c7d, 0xa438, 0x1800,
- 0xa438, 0x0e67, 0xa438, 0xcb96, 0xa438, 0x0c03, 0xa438, 0x1502,
- 0xa438, 0xab05, 0xa438, 0xac04, 0xa438, 0xac08, 0xa438, 0x9503,
- 0xa438, 0x0c1f, 0xa438, 0x0d00, 0xa438, 0x8dc0, 0xa438, 0x1000,
- 0xa438, 0x104f, 0xa438, 0x1000, 0xa438, 0x1021, 0xa438, 0xd706,
- 0xa438, 0x2215, 0xa438, 0x8099, 0xa438, 0x0c03, 0xa438, 0x1502,
- 0xa438, 0xae02, 0xa438, 0x9503, 0xa438, 0xd706, 0xa438, 0x6451,
- 0xa438, 0xd71f, 0xa438, 0x2e70, 0xa438, 0x0f00, 0xa438, 0xd706,
- 0xa438, 0x3290, 0xa438, 0x80be, 0xa438, 0xd704, 0xa438, 0x2e70,
- 0xa438, 0x8090, 0xa438, 0xd706, 0xa438, 0x339c, 0xa438, 0x8090,
- 0xa438, 0x8718, 0xa438, 0x8910, 0xa438, 0x0c03, 0xa438, 0x1502,
- 0xa438, 0xc500, 0xa438, 0x9503, 0xa438, 0x0c1f, 0xa438, 0x0d17,
- 0xa438, 0x8dc0, 0xa438, 0x1000, 0xa438, 0x104f, 0xa438, 0x0c03,
- 0xa438, 0x1502, 0xa438, 0x8c04, 0xa438, 0x9503, 0xa438, 0xa00a,
- 0xa438, 0xa190, 0xa438, 0xa280, 0xa438, 0xa404, 0xa438, 0x1800,
- 0xa438, 0x0f35, 0xa438, 0x1800, 0xa438, 0x0f07, 0xa438, 0x0c03,
- 0xa438, 0x1502, 0xa438, 0x8c08, 0xa438, 0x8c04, 0xa438, 0x9503,
- 0xa438, 0x1800, 0xa438, 0x0f02, 0xa438, 0x1000, 0xa438, 0x1021,
- 0xa438, 0xd700, 0xa438, 0x5fb4, 0xa438, 0xaa10, 0xa438, 0x1800,
- 0xa438, 0x0c6b, 0xa438, 0x82a0, 0xa438, 0x8406, 0xa438, 0x0c03,
- 0xa438, 0x1502, 0xa438, 0xac04, 0xa438, 0x8602, 0xa438, 0x9503,
- 0xa438, 0x1800, 0xa438, 0x0e09, 0xa438, 0x0000, 0xa438, 0x0000,
- 0xa438, 0x0000, 0xa438, 0x0000, 0xa438, 0x0000, 0xa438, 0x0000,
- 0xa438, 0x0000, 0xa438, 0x0000, 0xa438, 0x0000, 0xa438, 0x0000,
- 0xa438, 0x0000, 0xa438, 0x0000, 0xa438, 0x8308, 0xa438, 0x0c03,
- 0xa438, 0x1502, 0xa438, 0xc555, 0xa438, 0x9503, 0xa438, 0xa728,
- 0xa438, 0x8440, 0xa438, 0x0c03, 0xa438, 0x0901, 0xa438, 0x8801,
- 0xa438, 0xd700, 0xa438, 0x4040, 0xa438, 0xa801, 0xa438, 0xd701,
- 0xa438, 0x4052, 0xa438, 0xa810, 0xa438, 0xd701, 0xa438, 0x4054,
- 0xa438, 0xa820, 0xa438, 0xd701, 0xa438, 0x4057, 0xa438, 0xa640,
- 0xa438, 0xd704, 0xa438, 0x4046, 0xa438, 0xa840, 0xa438, 0xd706,
- 0xa438, 0x40b5, 0xa438, 0x0c03, 0xa438, 0x1502, 0xa438, 0xae20,
- 0xa438, 0x9503, 0xa438, 0xd401, 0xa438, 0x1000, 0xa438, 0x0fcf,
- 0xa438, 0x1000, 0xa438, 0x0fda, 0xa438, 0x1000, 0xa438, 0x1008,
- 0xa438, 0x1000, 0xa438, 0x0fe3, 0xa438, 0xcc00, 0xa438, 0x80c0,
- 0xa438, 0x8103, 0xa438, 0x83e0, 0xa438, 0xd71e, 0xa438, 0x2318,
- 0xa438, 0x01ae, 0xa438, 0xd704, 0xa438, 0x40bc, 0xa438, 0x0c03,
- 0xa438, 0x1502, 0xa438, 0x8302, 0xa438, 0x9503, 0xa438, 0xb801,
- 0xa438, 0xd706, 0xa438, 0x2b59, 0xa438, 0x07f8, 0xa438, 0xd700,
- 0xa438, 0x2109, 0xa438, 0x04ab, 0xa438, 0xa508, 0xa438, 0xcb15,
- 0xa438, 0xd70c, 0xa438, 0x430c, 0xa438, 0x1000, 0xa438, 0x10ca,
- 0xa438, 0x0c03, 0xa438, 0x1502, 0xa438, 0xa108, 0xa438, 0x9503,
- 0xa438, 0x0c03, 0xa438, 0x1502, 0xa438, 0x0c1f, 0xa438, 0x0f13,
- 0xa438, 0x9503, 0xa438, 0x1000, 0xa438, 0x1021, 0xa438, 0xd70c,
- 0xa438, 0x5fb3, 0xa438, 0x0c03, 0xa438, 0x1502, 0xa438, 0x8f1f,
- 0xa438, 0x9503, 0xa438, 0x1000, 0xa438, 0x1021, 0xa438, 0xd70c,
- 0xa438, 0x7f33, 0xa438, 0x0c03, 0xa438, 0x1502, 0xa438, 0x0c0f,
- 0xa438, 0x0d00, 0xa438, 0x0c70, 0xa438, 0x0b00, 0xa438, 0xab08,
- 0xa438, 0x9503, 0xa438, 0xd704, 0xa438, 0x3cf1, 0xa438, 0x01f9,
- 0xa438, 0x0c1f, 0xa438, 0x0d11, 0xa438, 0xf003, 0xa438, 0x0c1f,
- 0xa438, 0x0d0d, 0xa438, 0x0cc0, 0xa438, 0x0d40, 0xa438, 0x1000,
- 0xa438, 0x104f, 0xa438, 0x0c03, 0xa438, 0x1502, 0xa438, 0xab80,
- 0xa438, 0x9503, 0xa438, 0x1000, 0xa438, 0x1021, 0xa438, 0xa940,
- 0xa438, 0xd700, 0xa438, 0x5f99, 0xa438, 0x0c03, 0xa438, 0x1502,
- 0xa438, 0x8b80, 0xa438, 0x9503, 0xa438, 0x8940, 0xa438, 0xd700,
- 0xa438, 0x5bbf, 0xa438, 0x0c03, 0xa438, 0x1502, 0xa438, 0x8b08,
- 0xa438, 0x9503, 0xa438, 0xba20, 0xa438, 0xd704, 0xa438, 0x4100,
- 0xa438, 0xd115, 0xa438, 0xd04f, 0xa438, 0xf001, 0xa438, 0x1000,
- 0xa438, 0x1021, 0xa438, 0xd700, 0xa438, 0x5fb4, 0xa438, 0x0c03,
- 0xa438, 0x1502, 0xa438, 0x0c0f, 0xa438, 0x0d00, 0xa438, 0x0c70,
- 0xa438, 0x0b10, 0xa438, 0xab08, 0xa438, 0x9503, 0xa438, 0xd704,
- 0xa438, 0x3cf1, 0xa438, 0x8178, 0xa438, 0x0c1f, 0xa438, 0x0d11,
- 0xa438, 0xf003, 0xa438, 0x0c1f, 0xa438, 0x0d0d, 0xa438, 0x0cc0,
- 0xa438, 0x0d40, 0xa438, 0x1000, 0xa438, 0x104f, 0xa438, 0x0c03,
- 0xa438, 0x1502, 0xa438, 0xab80, 0xa438, 0x9503, 0xa438, 0x1000,
- 0xa438, 0x1021, 0xa438, 0xd706, 0xa438, 0x5fad, 0xa438, 0xd407,
- 0xa438, 0x1000, 0xa438, 0x0fcf, 0xa438, 0x0c03, 0xa438, 0x1502,
- 0xa438, 0x8b88, 0xa438, 0x9503, 0xa438, 0x1000, 0xa438, 0x1021,
- 0xa438, 0xd702, 0xa438, 0x7fa4, 0xa438, 0xd706, 0xa438, 0x61bf,
- 0xa438, 0x0c03, 0xa438, 0x1502, 0xa438, 0x0c30, 0xa438, 0x0110,
- 0xa438, 0xa304, 0xa438, 0x9503, 0xa438, 0xd199, 0xa438, 0xd04b,
- 0xa438, 0x1000, 0xa438, 0x1021, 0xa438, 0xd700, 0xa438, 0x5fb4,
- 0xa438, 0xd704, 0xa438, 0x3cf1, 0xa438, 0x81a5, 0xa438, 0x0c1f,
- 0xa438, 0x0d02, 0xa438, 0xf003, 0xa438, 0x0c1f, 0xa438, 0x0d01,
- 0xa438, 0x0cc0, 0xa438, 0x0d40, 0xa438, 0xa420, 0xa438, 0x8720,
- 0xa438, 0x1000, 0xa438, 0x104f, 0xa438, 0x1000, 0xa438, 0x0fda,
- 0xa438, 0xd70c, 0xa438, 0x41ac, 0xa438, 0x0c03, 0xa438, 0x1502,
- 0xa438, 0x8108, 0xa438, 0x9503, 0xa438, 0x0cc0, 0xa438, 0x0040,
- 0xa438, 0x0c03, 0xa438, 0x0102, 0xa438, 0x0ce0, 0xa438, 0x03e0,
- 0xa438, 0xccce, 0xa438, 0xf008, 0xa438, 0x0cc0, 0xa438, 0x0040,
- 0xa438, 0x0c03, 0xa438, 0x0100, 0xa438, 0x0ce0, 0xa438, 0x0380,
- 0xa438, 0xcc9c, 0xa438, 0x1000, 0xa438, 0x103f, 0xa438, 0x0c03,
- 0xa438, 0x1502, 0xa438, 0xa640, 0xa438, 0x9503, 0xa438, 0xcb16,
- 0xa438, 0xd706, 0xa438, 0x6129, 0xa438, 0xd70c, 0xa438, 0x608c,
- 0xa438, 0xd17a, 0xa438, 0xd04a, 0xa438, 0xf006, 0xa438, 0xd17a,
- 0xa438, 0xd04b, 0xa438, 0xf003, 0xa438, 0xd13d, 0xa438, 0xd04b,
- 0xa438, 0x0c1f, 0xa438, 0x0f14, 0xa438, 0xcb17, 0xa438, 0x8fc0,
- 0xa438, 0x1000, 0xa438, 0x0fbd, 0xa438, 0xaf40, 0xa438, 0x1000,
- 0xa438, 0x0fbd, 0xa438, 0x0cc0, 0xa438, 0x0f80, 0xa438, 0x1000,
- 0xa438, 0x0fbd, 0xa438, 0xafc0, 0xa438, 0x1000, 0xa438, 0x0fbd,
- 0xa438, 0x1000, 0xa438, 0x1021, 0xa438, 0xd701, 0xa438, 0x652e,
- 0xa438, 0xd700, 0xa438, 0x5db4, 0xa438, 0x0c03, 0xa438, 0x1502,
- 0xa438, 0x8640, 0xa438, 0xa702, 0xa438, 0x9503, 0xa438, 0xa720,
- 0xa438, 0x1000, 0xa438, 0x0fda, 0xa438, 0xa108, 0xa438, 0x1000,
- 0xa438, 0x0fec, 0xa438, 0x8108, 0xa438, 0x1000, 0xa438, 0x0fe3,
- 0xa438, 0xa202, 0xa438, 0xa308, 0xa438, 0x0000, 0xa438, 0x0000,
- 0xa438, 0x0000, 0xa438, 0x0000, 0xa438, 0x0000, 0xa438, 0x0000,
- 0xa438, 0x0000, 0xa438, 0x0000, 0xa438, 0x0000, 0xa438, 0x0000,
- 0xa438, 0x0000, 0xa438, 0x0000, 0xa438, 0x8308, 0xa438, 0xcb18,
- 0xa438, 0x1000, 0xa438, 0x10c2, 0xa438, 0x1000, 0xa438, 0x1021,
- 0xa438, 0xd70c, 0xa438, 0x2c60, 0xa438, 0x02bd, 0xa438, 0xff58,
- 0xa438, 0x8f1f, 0xa438, 0x1000, 0xa438, 0x1021, 0xa438, 0xd701,
- 0xa438, 0x7f8e, 0xa438, 0x1000, 0xa438, 0x0fe3, 0xa438, 0xa130,
- 0xa438, 0xaa2f, 0xa438, 0xa2d5, 0xa438, 0xa407, 0xa438, 0xa720,
- 0xa438, 0x8310, 0xa438, 0xa308, 0xa438, 0x0000, 0xa438, 0x0000,
- 0xa438, 0x0000, 0xa438, 0x0000, 0xa438, 0x0000, 0xa438, 0x0000,
- 0xa438, 0x0000, 0xa438, 0x0000, 0xa438, 0x0000, 0xa438, 0x0000,
- 0xa438, 0x0000, 0xa438, 0x0000, 0xa438, 0x8308, 0xa438, 0x1800,
- 0xa438, 0x02d2, 0xa436, 0xA10E, 0xa438, 0x017f, 0xa436, 0xA10C,
- 0xa438, 0x0e04, 0xa436, 0xA10A, 0xa438, 0x0c67, 0xa436, 0xA108,
- 0xa438, 0x0f13, 0xa436, 0xA106, 0xa438, 0x0eb1, 0xa436, 0xA104,
- 0xa438, 0x0e79, 0xa436, 0xA102, 0xa438, 0x0b23, 0xa436, 0xA100,
- 0xa438, 0x0908, 0xa436, 0xA110, 0xa438, 0x00ff, 0xa436, 0xb87c,
- 0xa438, 0x8ad8, 0xa436, 0xb87e, 0xa438, 0xaf8a, 0xa438, 0xf0af,
- 0xa438, 0x8af9, 0xa438, 0xaf8d, 0xa438, 0xdaaf, 0xa438, 0x8e1c,
- 0xa438, 0xaf8f, 0xa438, 0x03af, 0xa438, 0x8f06, 0xa438, 0xaf8f,
- 0xa438, 0x06af, 0xa438, 0x8f06, 0xa438, 0x0265, 0xa438, 0xa002,
- 0xa438, 0x8d78, 0xa438, 0xaf23, 0xa438, 0x47a1, 0xa438, 0x0d06,
- 0xa438, 0x028b, 0xa438, 0x05af, 0xa438, 0x225a, 0xa438, 0xaf22,
- 0xa438, 0x66f8, 0xa438, 0xe08a, 0xa438, 0x33a0, 0xa438, 0x0005,
- 0xa438, 0x028b, 0xa438, 0x21ae, 0xa438, 0x0ea0, 0xa438, 0x0105,
- 0xa438, 0x028b, 0xa438, 0xb3ae, 0xa438, 0x06a0, 0xa438, 0x0203,
- 0xa438, 0x028c, 0xa438, 0x9dfc, 0xa438, 0x04f8, 0xa438, 0xfbfa,
- 0xa438, 0xef69, 0xa438, 0xe080, 0xa438, 0x13ad, 0xa438, 0x267e,
- 0xa438, 0xd067, 0xa438, 0xe48a, 0xa438, 0x34e4, 0xa438, 0x8a36,
- 0xa438, 0xe48a, 0xa438, 0x38e4, 0xa438, 0x8a3a, 0xa438, 0xd0ae,
- 0xa438, 0xe48a, 0xa438, 0x35e4, 0xa438, 0x8a37, 0xa438, 0xe48a,
- 0xa438, 0x39e4, 0xa438, 0x8a3b, 0xa438, 0xd000, 0xa438, 0xe48a,
- 0xa438, 0x3ce4, 0xa438, 0x8a3d, 0xa438, 0xe48a, 0xa438, 0x3ee4,
- 0xa438, 0x8a3f, 0xa438, 0xe48a, 0xa438, 0x40e4, 0xa438, 0x8a41,
- 0xa438, 0xe48a, 0xa438, 0x42e4, 0xa438, 0x8a43, 0xa438, 0xe48a,
- 0xa438, 0x44d0, 0xa438, 0x02e4, 0xa438, 0x8a45, 0xa438, 0xd00a,
- 0xa438, 0xe48a, 0xa438, 0x46d0, 0xa438, 0x16e4, 0xa438, 0x8a47,
- 0xa438, 0xd01e, 0xa438, 0xe48a, 0xa438, 0x48d1, 0xa438, 0x02bf,
- 0xa438, 0x8dce, 0xa438, 0x026b, 0xa438, 0xd0d1, 0xa438, 0x0abf,
- 0xa438, 0x8dd1, 0xa438, 0x026b, 0xa438, 0xd0d1, 0xa438, 0x16bf,
- 0xa438, 0x8dd4, 0xa438, 0x026b, 0xa438, 0xd0d1, 0xa438, 0x1ebf,
- 0xa438, 0x8dd7, 0xa438, 0x026b, 0xa438, 0xd002, 0xa438, 0x73ab,
- 0xa438, 0xef47, 0xa438, 0xe585, 0xa438, 0x5de4, 0xa438, 0x855c,
- 0xa438, 0xee8a, 0xa438, 0x3301, 0xa438, 0xae03, 0xa438, 0x0224,
- 0xa438, 0x95ef, 0xa438, 0x96fe, 0xa438, 0xfffc, 0xa438, 0x04f8,
- 0xa438, 0xf9fa, 0xa438, 0xcefa, 0xa438, 0xef69, 0xa438, 0xfb02,
- 0xa438, 0x8dab, 0xa438, 0xad50, 0xa438, 0x2ee1, 0xa438, 0x8a44,
- 0xa438, 0xa104, 0xa438, 0x2bee, 0xa438, 0x8a33, 0xa438, 0x02e1,
- 0xa438, 0x8a45, 0xa438, 0xbf8d, 0xa438, 0xce02, 0xa438, 0x6bd0,
- 0xa438, 0xe18a, 0xa438, 0x46bf, 0xa438, 0x8dd1, 0xa438, 0x026b,
- 0xa438, 0xd0e1, 0xa438, 0x8a47, 0xa438, 0xbf8d, 0xa438, 0xd402,
- 0xa438, 0x6bd0, 0xa438, 0xe18a, 0xa438, 0x48bf, 0xa438, 0x8dd7,
- 0xa438, 0x026b, 0xa438, 0xd0af, 0xa438, 0x8c94, 0xa438, 0xd200,
- 0xa438, 0xbe00, 0xa438, 0x0002, 0xa438, 0x8ca5, 0xa438, 0x12a2,
- 0xa438, 0x04f6, 0xa438, 0xe18a, 0xa438, 0x44a1, 0xa438, 0x0020,
- 0xa438, 0xd129, 0xa438, 0xbf8d, 0xa438, 0xce02, 0xa438, 0x6bd0,
- 0xa438, 0xd121, 0xa438, 0xbf8d, 0xa438, 0xd102, 0xa438, 0x6bd0,
- 0xa438, 0xd125, 0xa438, 0xbf8d, 0xa438, 0xd402, 0xa438, 0x6bd0,
- 0xa438, 0xbf8d, 0xa438, 0xd702, 0xa438, 0x6bd0, 0xa438, 0xae44,
- 0xa438, 0xa101, 0xa438, 0x1ed1, 0xa438, 0x31bf, 0xa438, 0x8dce,
- 0xa438, 0x026b, 0xa438, 0xd0bf, 0xa438, 0x8dd1, 0xa438, 0x026b,
- 0xa438, 0xd0d1, 0xa438, 0x2dbf, 0xa438, 0x8dd4, 0xa438, 0x026b,
- 0xa438, 0xd0bf, 0xa438, 0x8dd7, 0xa438, 0x026b, 0xa438, 0xd0ae,
- 0xa438, 0x23a1, 0xa438, 0x0220, 0xa438, 0xd139, 0xa438, 0xbf8d,
- 0xa438, 0xce02, 0xa438, 0x6bd0, 0xa438, 0xbf8d, 0xa438, 0xd102,
- 0xa438, 0x6bd0, 0xa438, 0xd13d, 0xa438, 0xbf8d, 0xa438, 0xd402,
- 0xa438, 0x6bd0, 0xa438, 0xd135, 0xa438, 0xbf8d, 0xa438, 0xd702,
- 0xa438, 0x6bd0, 0xa438, 0xae00, 0xa438, 0xe18a, 0xa438, 0x4411,
- 0xa438, 0xe58a, 0xa438, 0x44d0, 0xa438, 0x00e4, 0xa438, 0x8a3c,
- 0xa438, 0xe48a, 0xa438, 0x3de4, 0xa438, 0x8a3e, 0xa438, 0xe48a,
- 0xa438, 0x3fe4, 0xa438, 0x8a40, 0xa438, 0xe48a, 0xa438, 0x41e4,
- 0xa438, 0x8a42, 0xa438, 0xe48a, 0xa438, 0x4302, 0xa438, 0x73ab,
- 0xa438, 0xef47, 0xa438, 0xe585, 0xa438, 0x5de4, 0xa438, 0x855c,
- 0xa438, 0xffef, 0xa438, 0x96fe, 0xa438, 0xc6fe, 0xa438, 0xfdfc,
- 0xa438, 0x0402, 0xa438, 0x2495, 0xa438, 0xee8a, 0xa438, 0x3300,
- 0xa438, 0x04f8, 0xa438, 0xf9fa, 0xa438, 0xfbef, 0xa438, 0x79fb,
- 0xa438, 0xcffb, 0xa438, 0xd300, 0xa438, 0xa200, 0xa438, 0x09bf,
- 0xa438, 0x8dc2, 0xa438, 0x026b, 0xa438, 0xefaf, 0xa438, 0x8cda,
- 0xa438, 0xa201, 0xa438, 0x09bf, 0xa438, 0x8dc5, 0xa438, 0x026b,
- 0xa438, 0xefaf, 0xa438, 0x8cda, 0xa438, 0xa202, 0xa438, 0x09bf,
- 0xa438, 0x8dc8, 0xa438, 0x026b, 0xa438, 0xefaf, 0xa438, 0x8cda,
- 0xa438, 0xbf8d, 0xa438, 0xcb02, 0xa438, 0x6bef, 0xa438, 0xef64,
- 0xa438, 0xbf8a, 0xa438, 0x3c1a, 0xa438, 0x921a, 0xa438, 0x92d8,
- 0xa438, 0x19d9, 0xa438, 0xef74, 0xa438, 0x0273, 0xa438, 0x93ef,
- 0xa438, 0x47bf, 0xa438, 0x8a3c, 0xa438, 0x1a92, 0xa438, 0x1a92,
- 0xa438, 0xdc19, 0xa438, 0xddd1, 0xa438, 0x0011, 0xa438, 0xa1ff,
- 0xa438, 0xfc13, 0xa438, 0xa310, 0xa438, 0xaf02, 0xa438, 0x8d0e,
- 0xa438, 0xffc7, 0xa438, 0xffef, 0xa438, 0x97ff, 0xa438, 0xfefd,
- 0xa438, 0xfc04, 0xa438, 0xf8fa, 0xa438, 0xfbef, 0xa438, 0x79fb,
- 0xa438, 0xcffb, 0xa438, 0xbf8a, 0xa438, 0x3c1a, 0xa438, 0x921a,
- 0xa438, 0x92d8, 0xa438, 0x19d9, 0xa438, 0xef64, 0xa438, 0xbf8a,
- 0xa438, 0x341a, 0xa438, 0x921a, 0xa438, 0x92d8, 0xa438, 0x19d9,
- 0xa438, 0xef74, 0xa438, 0x0273, 0xa438, 0x78a2, 0xa438, 0x0005,
- 0xa438, 0xbe8d, 0xa438, 0xceae, 0xa438, 0x13a2, 0xa438, 0x0105,
- 0xa438, 0xbe8d, 0xa438, 0xd1ae, 0xa438, 0x0ba2, 0xa438, 0x0205,
- 0xa438, 0xbe8d, 0xa438, 0xd4ae, 0xa438, 0x03be, 0xa438, 0x8dd7,
- 0xa438, 0xad50, 0xa438, 0x17bf, 0xa438, 0x8a45, 0xa438, 0x1a92,
- 0xa438, 0x0702, 0xa438, 0x6bef, 0xa438, 0x07dd, 0xa438, 0xef46,
- 0xa438, 0xbf8a, 0xa438, 0x341a, 0xa438, 0x921a, 0xa438, 0x92dc,
- 0xa438, 0x19dd, 0xa438, 0xffc7, 0xa438, 0xffef, 0xa438, 0x97ff,
- 0xa438, 0xfefc, 0xa438, 0x04ee, 0xa438, 0x8a33, 0xa438, 0x00ee,
- 0xa438, 0x8a32, 0xa438, 0x0404, 0xa438, 0xf8fa, 0xa438, 0xef69,
- 0xa438, 0xe080, 0xa438, 0x13ad, 0xa438, 0x2624, 0xa438, 0xd102,
- 0xa438, 0xbf8d, 0xa438, 0xce02, 0xa438, 0x6bd0, 0xa438, 0xd10a,
- 0xa438, 0xbf8d, 0xa438, 0xd102, 0xa438, 0x6bd0, 0xa438, 0xd116,
- 0xa438, 0xbf8d, 0xa438, 0xd402, 0xa438, 0x6bd0, 0xa438, 0xd11e,
- 0xa438, 0xbf8d, 0xa438, 0xd702, 0xa438, 0x6bd0, 0xa438, 0xee8a,
- 0xa438, 0x3300, 0xa438, 0xef96, 0xa438, 0xfefc, 0xa438, 0x04f8,
- 0xa438, 0xfae0, 0xa438, 0x855c, 0xa438, 0xe185, 0xa438, 0x5def,
- 0xa438, 0x64d0, 0xa438, 0x00e1, 0xa438, 0x8a32, 0xa438, 0xef74,
- 0xa438, 0x0273, 0xa438, 0xc6fe, 0xa438, 0xfc04, 0xa438, 0xf0b2,
- 0xa438, 0x02f0, 0xa438, 0xb282, 0xa438, 0xf0b3, 0xa438, 0x02f0,
- 0xa438, 0xb382, 0xa438, 0x50ac, 0xa438, 0xd450, 0xa438, 0xacd6,
- 0xa438, 0xb6ac, 0xa438, 0xd4b6, 0xa438, 0xacd6, 0xa438, 0xbf8e,
- 0xa438, 0x0d02, 0xa438, 0x6bd0, 0xa438, 0xd0ff, 0xa438, 0xd1fe,
- 0xa438, 0xbf8e, 0xa438, 0x1002, 0xa438, 0x6bd0, 0xa438, 0xd004,
- 0xa438, 0xd14d, 0xa438, 0xbf8e, 0xa438, 0x1302, 0xa438, 0x6bd0,
- 0xa438, 0xd0fc, 0xa438, 0xd1c6, 0xa438, 0xbf8e, 0xa438, 0x1602,
- 0xa438, 0x6bd0, 0xa438, 0xd009, 0xa438, 0xd146, 0xa438, 0xbf8e,
- 0xa438, 0x1902, 0xa438, 0x6bd0, 0xa438, 0xef13, 0xa438, 0xaf2d,
- 0xa438, 0xbdf0, 0xa438, 0xac1c, 0xa438, 0xf0ac, 0xa438, 0x2af0,
- 0xa438, 0xac2c, 0xa438, 0xf0ac, 0xa438, 0x2ef0, 0xa438, 0xac30,
- 0xa438, 0xbf8e, 0xa438, 0xf102, 0xa438, 0x6bef, 0xa438, 0xac28,
- 0xa438, 0x70bf, 0xa438, 0x8eeb, 0xa438, 0x026b, 0xa438, 0xefac,
- 0xa438, 0x2867, 0xa438, 0xbf8e, 0xa438, 0xee02, 0xa438, 0x6bef,
- 0xa438, 0xad28, 0xa438, 0x5bbf, 0xa438, 0x8ff2, 0xa438, 0xd8bf,
- 0xa438, 0x8ff3, 0xa438, 0xd9bf, 0xa438, 0x8ef4, 0xa438, 0x026b,
- 0xa438, 0xd0bf, 0xa438, 0x8ff0, 0xa438, 0xd8bf, 0xa438, 0x8ff1,
- 0xa438, 0xd9bf, 0xa438, 0x8ef7, 0xa438, 0x026b, 0xa438, 0xd0bf,
- 0xa438, 0x8fee, 0xa438, 0xd8bf, 0xa438, 0x8fef, 0xa438, 0xd9bf,
- 0xa438, 0x8efa, 0xa438, 0x026b, 0xa438, 0xd0bf, 0xa438, 0x8fec,
- 0xa438, 0xd8bf, 0xa438, 0x8fed, 0xa438, 0xd9bf, 0xa438, 0x8efd,
- 0xa438, 0x026b, 0xa438, 0xd0bf, 0xa438, 0x8fea, 0xa438, 0xd8bf,
- 0xa438, 0x8feb, 0xa438, 0xd9bf, 0xa438, 0x8f00, 0xa438, 0x026b,
- 0xa438, 0xd0bf, 0xa438, 0x8fe8, 0xa438, 0xd8bf, 0xa438, 0x8fe9,
- 0xa438, 0xd9bf, 0xa438, 0x8e0d, 0xa438, 0x026b, 0xa438, 0xd01f,
- 0xa438, 0x00e1, 0xa438, 0x86ee, 0xa438, 0x1b64, 0xa438, 0xaf3d,
- 0xa438, 0x7abf, 0xa438, 0x8ffe, 0xa438, 0xd8bf, 0xa438, 0x8fff,
- 0xa438, 0xd9bf, 0xa438, 0x8ef4, 0xa438, 0x026b, 0xa438, 0xd0bf,
- 0xa438, 0x8ffc, 0xa438, 0xd8bf, 0xa438, 0x8ffd, 0xa438, 0xd9bf,
- 0xa438, 0x8ef7, 0xa438, 0x026b, 0xa438, 0xd0bf, 0xa438, 0x8ffa,
- 0xa438, 0xd8bf, 0xa438, 0x8ffb, 0xa438, 0xd9bf, 0xa438, 0x8efa,
- 0xa438, 0x026b, 0xa438, 0xd0bf, 0xa438, 0x8ff8, 0xa438, 0xd8bf,
- 0xa438, 0x8ff9, 0xa438, 0xd9bf, 0xa438, 0x8efd, 0xa438, 0x026b,
- 0xa438, 0xd0bf, 0xa438, 0x8ff6, 0xa438, 0xd8bf, 0xa438, 0x8ff7,
- 0xa438, 0xd9bf, 0xa438, 0x8f00, 0xa438, 0x026b, 0xa438, 0xd0bf,
- 0xa438, 0x8ff4, 0xa438, 0xd8bf, 0xa438, 0x8ff5, 0xa438, 0xd9bf,
- 0xa438, 0x8e0d, 0xa438, 0x026b, 0xa438, 0xd0ae, 0xa438, 0xa766,
- 0xa438, 0xac5c, 0xa438, 0xbbac, 0xa438, 0x5c99, 0xa438, 0xac5c,
- 0xa438, 0xf0ac, 0xa438, 0x26f0, 0xa438, 0xac24, 0xa438, 0xf0ac,
- 0xa438, 0x22f0, 0xa438, 0xac20, 0xa438, 0xf0ac, 0xa438, 0x1eaf,
- 0xa438, 0x44f8, 0xa436, 0xb85e, 0xa438, 0x2344, 0xa436, 0xb860,
- 0xa438, 0x2254, 0xa436, 0xb862, 0xa438, 0x2DB5, 0xa436, 0xb864,
- 0xa438, 0x3D6C, 0xa436, 0xb886, 0xa438, 0x44ED, 0xa436, 0xb888,
- 0xa438, 0xffff, 0xa436, 0xb88a, 0xa438, 0xffff, 0xa436, 0xb88c,
- 0xa438, 0xffff, 0xa436, 0xb838, 0xa438, 0x001f, 0xb820, 0x0010,
- 0xa436, 0x87ad, 0xa438, 0xaf87, 0xa438, 0xc5af, 0xa438, 0x87e4,
- 0xa438, 0xaf8a, 0xa438, 0x3daf, 0xa438, 0x8a62, 0xa438, 0xaf8a,
- 0xa438, 0x62af, 0xa438, 0x8a62, 0xa438, 0xaf8a, 0xa438, 0x62af,
- 0xa438, 0x8a62, 0xa438, 0x2810, 0xa438, 0x0d01, 0xa438, 0xe484,
- 0xa438, 0xbf29, 0xa438, 0x100d, 0xa438, 0x11e5, 0xa438, 0x84c0,
- 0xa438, 0x2a10, 0xa438, 0x0d21, 0xa438, 0xe684, 0xa438, 0xc12b,
- 0xa438, 0x100d, 0xa438, 0x31e7, 0xa438, 0x84c2, 0xa438, 0xaf3f,
- 0xa438, 0x7cf8, 0xa438, 0xe080, 0xa438, 0x4cac, 0xa438, 0x222c,
- 0xa438, 0xe080, 0xa438, 0x40ad, 0xa438, 0x2232, 0xa438, 0xbf8a,
- 0xa438, 0x2502, 0xa438, 0x6752, 0xa438, 0xad29, 0xa438, 0x0502,
- 0xa438, 0x8827, 0xa438, 0xae0d, 0xa438, 0xad28, 0xa438, 0x0502,
- 0xa438, 0x8961, 0xa438, 0xae05, 0xa438, 0x0214, 0xa438, 0x04ae,
- 0xa438, 0x00e0, 0xa438, 0x8040, 0xa438, 0xac22, 0xa438, 0x1102,
- 0xa438, 0x13e1, 0xa438, 0xae0c, 0xa438, 0x0288, 0xa438, 0x7c02,
- 0xa438, 0x8a10, 0xa438, 0x0214, 0xa438, 0x2502, 0xa438, 0x1404,
- 0xa438, 0xfcaf, 0xa438, 0x13c6, 0xa438, 0xf8f8, 0xa438, 0xccf9,
- 0xa438, 0xfaef, 0xa438, 0x69fb, 0xa438, 0xe080, 0xa438, 0x18ad,
- 0xa438, 0x223b, 0xa438, 0xbf8a, 0xa438, 0x2b02, 0xa438, 0x6752,
- 0xa438, 0xad28, 0xa438, 0x32bf, 0xa438, 0x8a28, 0xa438, 0x026f,
- 0xa438, 0x17ee, 0xa438, 0x8ff3, 0xa438, 0x00bf, 0xa438, 0x6854,
- 0xa438, 0x0267, 0xa438, 0x52ad, 0xa438, 0x281f, 0xa438, 0xbf68,
- 0xa438, 0x5d02, 0xa438, 0x6752, 0xa438, 0xad28, 0xa438, 0x16e0,
- 0xa438, 0x8ff4, 0xa438, 0xe18f, 0xa438, 0xf502, 0xa438, 0x8891,
- 0xa438, 0xad50, 0xa438, 0x0abf, 0xa438, 0x8a28, 0xa438, 0x026f,
- 0xa438, 0x20ee, 0xa438, 0x8ff3, 0xa438, 0x0102, 0xa438, 0x1404,
- 0xa438, 0xffef, 0xa438, 0x96fe, 0xa438, 0xfdc4, 0xa438, 0xfcfc,
- 0xa438, 0x04f8, 0xa438, 0xf9ef, 0xa438, 0x59e0, 0xa438, 0x8018,
- 0xa438, 0xad22, 0xa438, 0x06bf, 0xa438, 0x8a28, 0xa438, 0x026f,
- 0xa438, 0x17ef, 0xa438, 0x95fd, 0xa438, 0xfc04, 0xa438, 0xf8f9,
- 0xa438, 0xf9ef, 0xa438, 0x59fa, 0xa438, 0xface, 0xa438, 0xe48f,
- 0xa438, 0xfee5, 0xa438, 0x8fff, 0xa438, 0xbf6e, 0xa438, 0x1b02,
- 0xa438, 0x6f20, 0xa438, 0xbf6e, 0xa438, 0x1802, 0xa438, 0x6f17,
- 0xa438, 0xd102, 0xa438, 0xbf6e, 0xa438, 0x1202, 0xa438, 0x6733,
- 0xa438, 0xbf6e, 0xa438, 0x1502, 0xa438, 0x6f17, 0xa438, 0xbe00,
- 0xa438, 0x00cc, 0xa438, 0xbf69, 0xa438, 0xcb02, 0xa438, 0x6733,
- 0xa438, 0xbf69, 0xa438, 0xce02, 0xa438, 0x6f17, 0xa438, 0xbf69,
- 0xa438, 0xce02, 0xa438, 0x6f20, 0xa438, 0xbf69, 0xa438, 0xd102,
- 0xa438, 0x6752, 0xa438, 0xad28, 0xa438, 0xf70c, 0xa438, 0x81bf,
- 0xa438, 0x8ff6, 0xa438, 0x1a98, 0xa438, 0xef59, 0xa438, 0xbf69,
- 0xa438, 0xd402, 0xa438, 0x6752, 0xa438, 0xef95, 0xa438, 0xdc19,
- 0xa438, 0xdd0d, 0xa438, 0x8118, 0xa438, 0xa800, 0xa438, 0x04c9,
- 0xa438, 0xbf69, 0xa438, 0xce02, 0xa438, 0x6f17, 0xa438, 0xe08f,
- 0xa438, 0xfce1, 0xa438, 0x8ffd, 0xa438, 0xef74, 0xa438, 0xe08f,
- 0xa438, 0xfae1, 0xa438, 0x8ffb, 0xa438, 0xef64, 0xa438, 0x026e,
- 0xa438, 0x57ad, 0xa438, 0x5008, 0xa438, 0xe08f, 0xa438, 0xfce1,
- 0xa438, 0x8ffd, 0xa438, 0xae06, 0xa438, 0xe08f, 0xa438, 0xfae1,
- 0xa438, 0x8ffb, 0xa438, 0xe28f, 0xa438, 0xf8e3, 0xa438, 0x8ff9,
- 0xa438, 0xef75, 0xa438, 0xe28f, 0xa438, 0xf6e3, 0xa438, 0x8ff7,
- 0xa438, 0xef65, 0xa438, 0x026e, 0xa438, 0x57ad, 0xa438, 0x5008,
- 0xa438, 0xe28f, 0xa438, 0xf8e3, 0xa438, 0x8ff9, 0xa438, 0xae06,
- 0xa438, 0xe28f, 0xa438, 0xf6e3, 0xa438, 0x8ff7, 0xa438, 0x1b45,
- 0xa438, 0xad27, 0xa438, 0x05d7, 0xa438, 0x0000, 0xa438, 0xae0d,
- 0xa438, 0xef74, 0xa438, 0xe08f, 0xa438, 0xfee1, 0xa438, 0x8fff,
- 0xa438, 0xef64, 0xa438, 0x026e, 0xa438, 0x57c6, 0xa438, 0xfefe,
- 0xa438, 0xef95, 0xa438, 0xfdfd, 0xa438, 0xfc04, 0xa438, 0xf8f9,
- 0xa438, 0xfaef, 0xa438, 0x69fb, 0xa438, 0xe080, 0xa438, 0x18ac,
- 0xa438, 0x2103, 0xa438, 0xaf8a, 0xa438, 0x06bf, 0xa438, 0x8a2b,
- 0xa438, 0xac21, 0xa438, 0x03af, 0xa438, 0x8a06, 0xa438, 0xbf8a,
- 0xa438, 0x2802, 0xa438, 0x6f17, 0xa438, 0xee8f, 0xa438, 0xee00,
- 0xa438, 0xee8f, 0xa438, 0xed00, 0xa438, 0xbf8a, 0xa438, 0x2e02,
- 0xa438, 0x6752, 0xa438, 0xad28, 0xa438, 0x03af, 0xa438, 0x8a06,
- 0xa438, 0xe28f, 0xa438, 0xefe3, 0xa438, 0x8ff0, 0xa438, 0xbf68,
- 0xa438, 0x5102, 0xa438, 0x6752, 0xa438, 0xac28, 0xa438, 0x11e2,
- 0xa438, 0x8ff1, 0xa438, 0xe38f, 0xa438, 0xf2bf, 0xa438, 0x6848,
- 0xa438, 0x0267, 0xa438, 0x52ac, 0xa438, 0x2802, 0xa438, 0xae53,
- 0xa438, 0xbf68, 0xa438, 0x5a02, 0xa438, 0x6752, 0xa438, 0xad28,
- 0xa438, 0x0aef, 0xa438, 0x4502, 0xa438, 0x8891, 0xa438, 0xac50,
- 0xa438, 0x38ae, 0xa438, 0x40bf, 0xa438, 0x8a31, 0xa438, 0x0267,
- 0xa438, 0x52ef, 0xa438, 0x31bf, 0xa438, 0x8a34, 0xa438, 0x0267,
- 0xa438, 0x520c, 0xa438, 0x311e, 0xa438, 0x31bf, 0xa438, 0x8a37,
- 0xa438, 0x0267, 0xa438, 0x520c, 0xa438, 0x311e, 0xa438, 0x31bf,
- 0xa438, 0x8a3a, 0xa438, 0x0267, 0xa438, 0x520c, 0xa438, 0x311e,
- 0xa438, 0x31e7, 0xa438, 0x8fee, 0xa438, 0xa30c, 0xa438, 0x02ae,
- 0xa438, 0x08a3, 0xa438, 0x0e02, 0xa438, 0xae03, 0xa438, 0xa30d,
- 0xa438, 0x0aee, 0xa438, 0x8fed, 0xa438, 0x01bf, 0xa438, 0x8a28,
- 0xa438, 0x026f, 0xa438, 0x2002, 0xa438, 0x1404, 0xa438, 0xffef,
- 0xa438, 0x96fe, 0xa438, 0xfdfc, 0xa438, 0x04f8, 0xa438, 0xfaef,
- 0xa438, 0x69e0, 0xa438, 0x8018, 0xa438, 0xad21, 0xa438, 0x06bf,
- 0xa438, 0x8a28, 0xa438, 0x026f, 0xa438, 0x17ef, 0xa438, 0x96fe,
- 0xa438, 0xfc04, 0xa438, 0xf8a4, 0xa438, 0xb677, 0xa438, 0xa4b6,
- 0xa438, 0x22a4, 0xa438, 0x4222, 0xa438, 0xa668, 0xa438, 0x00b2,
- 0xa438, 0x3e00, 0xa438, 0xb2be, 0xa438, 0x00b3, 0xa438, 0x3e00,
- 0xa438, 0xb3be, 0xa438, 0xd10f, 0xa438, 0xbf8a, 0xa438, 0x5c02,
- 0xa438, 0x6733, 0xa438, 0xbf8a, 0xa438, 0x5f02, 0xa438, 0x6733,
- 0xa438, 0xbf8a, 0xa438, 0x5c02, 0xa438, 0x6f17, 0xa438, 0xbf8a,
- 0xa438, 0x5f02, 0xa438, 0x6f17, 0xa438, 0x1f00, 0xa438, 0xaf3d,
- 0xa438, 0x0c30, 0xa438, 0xa85a, 0xa438, 0xfcad, 0xa438, 0x0e00,
- 0xa436, 0xb818, 0xa438, 0x3f31, 0xa436, 0xb81a, 0xa438, 0x13a4,
- 0xa436, 0xb81c, 0xa438, 0x3d0a, 0xa436, 0xb81e, 0xa438, 0xffff,
- 0xa436, 0xb850, 0xa438, 0xffff, 0xa436, 0xb852, 0xa438, 0xffff,
- 0xa436, 0xb878, 0xa438, 0xffff, 0xa436, 0xb884, 0xa438, 0xffff,
- 0xa436, 0xb832, 0xa438, 0x0007, 0xa436, 0x84cf, 0xa438, 0x0101,
- 0xa466, 0x0002, 0xa436, 0x86a7, 0xa438, 0x0000, 0xa436, 0x0000,
- 0xa438, 0x0000, 0xa436, 0xB82E, 0xa438, 0x0000, 0xa436, 0x8023,
- 0xa438, 0x0000, 0xa436, 0x801E, 0xa438, 0x0023, 0xb820, 0x0000,
- 0xFFFF, 0xFFFF
-};
-
-static const u16 phy_mcu_ram_code_8126a_1_2[] = {
- 0xB87C, 0x8a32, 0xB87E, 0x0400, 0xB87C, 0x8376, 0xB87E, 0x0300,
- 0xce00, 0x6CAF, 0xB87C, 0x8301, 0xB87E, 0x1133, 0xB87C, 0x8105,
- 0xB87E, 0xa000, 0xB87C, 0x8148, 0xB87E, 0xa000, 0xa436, 0x81d8,
- 0xa438, 0x5865, 0xacf8, 0xCCC0, 0xac90, 0x52B0, 0xad2C, 0x8000,
- 0xB87C, 0x83e6, 0xB87E, 0x4A0E, 0xB87C, 0x83d2, 0xB87E, 0x0A0E,
- 0xB87C, 0x80a0, 0xB87E, 0xB8B6, 0xB87C, 0x805e, 0xB87E, 0xB8B6,
- 0xB87C, 0x8057, 0xB87E, 0x305A, 0xB87C, 0x8099, 0xB87E, 0x305A,
- 0xB87C, 0x8052, 0xB87E, 0x3333, 0xB87C, 0x8094, 0xB87E, 0x3333,
- 0xB87C, 0x807F, 0xB87E, 0x7975, 0xB87C, 0x803D, 0xB87E, 0x7975,
- 0xB87C, 0x8036, 0xB87E, 0x305A, 0xB87C, 0x8078, 0xB87E, 0x305A,
- 0xB87C, 0x8031, 0xB87E, 0x3335, 0xB87C, 0x8073, 0xB87E, 0x3335,
- 0xa436, 0x81D8, 0xa438, 0x5865, 0xB87C, 0x867c, 0xB87E, 0x0617,
- 0xad94, 0x0092, 0xB87C, 0x89B1, 0xB87E, 0x5050, 0xB87C, 0x86E0,
- 0xB87E, 0x809A, 0xB87C, 0x86E2, 0xB87E, 0xB34D, 0xB87C, 0x8FD2,
- 0xB87E, 0x004B, 0xB87C, 0x8691, 0xB87E, 0x007D, 0xB87E, 0x00AF,
- 0xB87E, 0x00E1, 0xB87E, 0x00FF, 0xB87C, 0x867F, 0xB87E, 0x0201,
- 0xB87E, 0x0201, 0xB87E, 0x0201, 0xB87E, 0x0201, 0xB87E, 0x0201,
- 0xB87E, 0x0201, 0xB87C, 0x86DA, 0xB87E, 0xCDCD, 0xB87E, 0xE6CD,
- 0xB87E, 0xCDCD, 0xB87C, 0x8FE8, 0xB87E, 0x0368, 0xB87E, 0x033F,
- 0xB87E, 0x1046, 0xB87E, 0x147D, 0xB87E, 0x147D, 0xB87E, 0x147D,
- 0xB87E, 0x0368, 0xB87E, 0x033F, 0xB87E, 0x1046, 0xB87E, 0x147D,
- 0xB87E, 0x147D, 0xB87E, 0x147D, 0xa436, 0x80dd, 0xa438, 0xf0AB,
- 0xa436, 0x80df, 0xa438, 0xC009, 0xa436, 0x80e7, 0xa438, 0x401E,
- 0xa436, 0x80e1, 0xa438, 0x120A, 0xa436, 0x86f2, 0xa438, 0x5094,
- 0xa436, 0x8701, 0xa438, 0x5094, 0xa436, 0x80f1, 0xa438, 0x30CC,
- 0xa436, 0x80f3, 0xa438, 0x0001, 0xa436, 0x80f5, 0xa438, 0x330B,
- 0xa436, 0x80f8, 0xa438, 0xCB76, 0xa436, 0x8105, 0xa438, 0xf0D3,
- 0xa436, 0x8107, 0xa438, 0x0002, 0xa436, 0x8109, 0xa438, 0xff0B,
- 0xa436, 0x810c, 0xa438, 0xC86D, 0xB87C, 0x8a32, 0xB87E, 0x0400,
- 0xa6f8, 0x0000, 0xa6f8, 0x0000, 0xa436, 0x81bc, 0xa438, 0x1300,
- 0xa846, 0x2410, 0xa86A, 0x0801, 0xa85C, 0x9680, 0xa436, 0x841D,
- 0xa438, 0x4A28, 0xa436, 0x8016, 0xa438, 0xBE05, 0xBF9C, 0x004A,
- 0xBF96, 0x41FA, 0xBF9A, 0xDC81, 0xa436, 0x8018, 0xa438, 0x0700,
- 0xa436, 0x8ff4, 0xa438, 0x01AE, 0xa436, 0x8fef, 0xa438, 0x0172,
- 0xa438, 0x00dc, 0xc842, 0x0002, 0xFFFF, 0xFFFF
-};
-
-static const u16 phy_mcu_ram_code_8126a_1_3[] = {
- 0xb892, 0x0000, 0xB88E, 0xC236, 0xB890, 0x1A1C, 0xB88E, 0xC238,
- 0xB890, 0x1C1C, 0xB890, 0x1C1C, 0xB890, 0x2D2D, 0xB890, 0x2D2D,
- 0xB890, 0x2D2A, 0xB890, 0x2A2A, 0xB890, 0x2A2A, 0xB890, 0x2A19,
- 0xB88E, 0xC272, 0xB890, 0x8484, 0xB890, 0x8484, 0xB890, 0x84B4,
- 0xB890, 0xB4B4, 0xB890, 0xB4B4, 0xB890, 0xF8F8, 0xB890, 0xF8F8,
- 0xB890, 0xF8F8, 0xB88E, 0xC000, 0xB890, 0x0303, 0xB890, 0x0405,
- 0xB890, 0x0608, 0xB890, 0x0A0B, 0xB890, 0x0E11, 0xB890, 0x1519,
- 0xB890, 0x2028, 0xB890, 0x3503, 0xB890, 0x0304, 0xB890, 0x0405,
- 0xB890, 0x0606, 0xB890, 0x0708, 0xB890, 0x090A, 0xB890, 0x0B0D,
- 0xB890, 0x0F11, 0xB890, 0x1315, 0xB890, 0x181A, 0xB890, 0x2029,
- 0xB890, 0x2F36, 0xB890, 0x3D43, 0xB890, 0x0101, 0xB890, 0x0102,
- 0xB890, 0x0202, 0xB890, 0x0303, 0xB890, 0x0405, 0xB890, 0x0607,
- 0xB890, 0x090A, 0xB890, 0x0C0E, 0xB88E, 0xC038, 0xB890, 0x6AE1,
- 0xB890, 0x8E6B, 0xB890, 0xA767, 0xB890, 0x01EF, 0xB890, 0x5A63,
- 0xB890, 0x2B99, 0xB890, 0x7F5D, 0xB890, 0x361F, 0xB890, 0xA127,
- 0xB890, 0xB558, 0xB890, 0x11C3, 0xB890, 0x7D85, 0xB890, 0xBAC5,
- 0xB890, 0xE691, 0xB890, 0x8F79, 0xB890, 0x3164, 0xB890, 0x3293,
- 0xB890, 0xB80D, 0xB890, 0xE2B7, 0xB890, 0x0D62, 0xB890, 0x4F85,
- 0xB890, 0xC919, 0xB890, 0x78F3, 0xB890, 0x77FF, 0xB890, 0xBD9E,
- 0xB890, 0x69D6, 0xB890, 0x6DA4, 0xB890, 0x0CC5, 0xB88E, 0xC1D2,
- 0xB890, 0x2425, 0xB890, 0x2627, 0xB890, 0x2829, 0xB890, 0x2A2B,
- 0xB890, 0x2C2D, 0xB890, 0x2E2F, 0xB890, 0x3031, 0xB890, 0x3233,
- 0xB890, 0x2323, 0xB890, 0x2424, 0xB890, 0x2525, 0xB890, 0x2626,
- 0xB890, 0x2727, 0xB890, 0x2828, 0xB890, 0x2929, 0xB890, 0x2A2A,
- 0xB890, 0x2B2C, 0xB890, 0x2C2D, 0xB890, 0x2D2E, 0xB890, 0x2E2F,
- 0xB890, 0x2F30, 0xB890, 0x1A1B, 0xB890, 0x1D1E, 0xB890, 0x1F20,
- 0xB890, 0x2123, 0xB890, 0x2425, 0xB890, 0x2628, 0xB890, 0x292A,
- 0xB890, 0x2B2C, 0xB890, 0x2E12, 0xB88E, 0xC09A, 0xB890, 0xD3D3,
- 0xB890, 0xD3D3, 0xB890, 0xD3D3, 0xB890, 0xD3D3, 0xB890, 0xD3D3,
- 0xB890, 0xD3D3, 0xB890, 0xD3D3, 0xB890, 0xD3D3, 0xFFFF, 0xFFFF
-};
-
static const u16 phy_mcu_ram_code_8126a_2_1[] = {
0xa436, 0x8023, 0xa438, 0x4700, 0xa436, 0xB82E, 0xa438, 0x0001,
0xb820, 0x0090, 0xa436, 0xA016, 0xa438, 0x0000, 0xa436, 0xA012,
@@ -3086,49 +2518,6 @@ static const u16 phy_mcu_ram_code_8126a_3_1[] = {
0xB820, 0x0000, 0xFFFF, 0xFFFF
};
-static void
-rtl_real_set_phy_mcu_8126a_1_1(struct rtl_hw *hw)
-{
- rtl_set_phy_mcu_ram_code(hw, phy_mcu_ram_code_8126a_1_1,
- ARRAY_SIZE(phy_mcu_ram_code_8126a_1_1));
-}
-
-static void
-rtl_real_set_phy_mcu_8126a_1_2(struct rtl_hw *hw)
-{
- rtl_set_phy_mcu_ram_code(hw, phy_mcu_ram_code_8126a_1_2,
- ARRAY_SIZE(phy_mcu_ram_code_8126a_1_2));
-}
-
-static void
-rtl_real_set_phy_mcu_8126a_1_3(struct rtl_hw *hw)
-{
- rtl_set_phy_mcu_ram_code(hw, phy_mcu_ram_code_8126a_1_3,
- ARRAY_SIZE(phy_mcu_ram_code_8126a_1_3));
-}
-
-void
-rtl_set_phy_mcu_8126a_1(struct rtl_hw *hw)
-{
- rtl_set_phy_mcu_patch_request(hw);
-
- rtl_real_set_phy_mcu_8126a_1_1(hw);
-
- rtl_clear_phy_mcu_patch_request(hw);
-
- rtl_set_phy_mcu_patch_request(hw);
-
- rtl_real_set_phy_mcu_8126a_1_2(hw);
-
- rtl_clear_phy_mcu_patch_request(hw);
-
- rtl_set_phy_mcu_patch_request(hw);
-
- rtl_real_set_phy_mcu_8126a_1_3(hw);
-
- rtl_clear_phy_mcu_patch_request(hw);
-}
-
static void
rtl_real_set_phy_mcu_8126a_2_1(struct rtl_hw *hw)
{
diff --git a/drivers/net/r8169/base/rtl8126a_mcu.h b/drivers/net/r8169/base/rtl8126a_mcu.h
index 61da1d884c..e6d2783487 100644
--- a/drivers/net/r8169/base/rtl8126a_mcu.h
+++ b/drivers/net/r8169/base/rtl8126a_mcu.h
@@ -5,11 +5,9 @@
#ifndef RTL8126A_MCU_H
#define RTL8126A_MCU_H
-void rtl_set_mac_mcu_8126a_1(struct rtl_hw *hw);
void rtl_set_mac_mcu_8126a_2(struct rtl_hw *hw);
void rtl_set_mac_mcu_8126a_3(struct rtl_hw *hw);
-void rtl_set_phy_mcu_8126a_1(struct rtl_hw *hw);
void rtl_set_phy_mcu_8126a_2(struct rtl_hw *hw);
void rtl_set_phy_mcu_8126a_3(struct rtl_hw *hw);
diff --git a/drivers/net/r8169/r8169_ethdev.c b/drivers/net/r8169/r8169_ethdev.c
index 8e46ce09a1..80e03dd53c 100644
--- a/drivers/net/r8169/r8169_ethdev.c
+++ b/drivers/net/r8169/r8169_ethdev.c
@@ -38,7 +38,7 @@ static int rtl_dev_infos_get(struct rte_eth_dev *dev,
struct rte_eth_dev_info *dev_info);
static int rtl_dev_stats_get(struct rte_eth_dev *dev,
struct rte_eth_stats *rte_stats,
- struct eth_queue_stats *qstats);
+ struct eth_queue_stats *qstats __rte_unused);
static int rtl_dev_stats_reset(struct rte_eth_dev *dev);
static int rtl_promiscuous_enable(struct rte_eth_dev *dev);
static int rtl_promiscuous_disable(struct rte_eth_dev *dev);
@@ -436,7 +436,7 @@ rtl_dev_infos_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info)
break;
}
- if (hw->mcfg >= CFG_METHOD_69) {
+ if (hw->mcfg >= CFG_METHOD_70) {
dev_info->max_rx_queues = 4;
dev_info->max_tx_queues = 2;
} else {
diff --git a/drivers/net/r8169/r8169_hw.c b/drivers/net/r8169/r8169_hw.c
index 32c370deba..05d977379a 100644
--- a/drivers/net/r8169/r8169_hw.c
+++ b/drivers/net/r8169/r8169_hw.c
@@ -631,7 +631,6 @@ rtl_stop_all_request(struct rtl_hw *hw)
case CFG_METHOD_57:
case CFG_METHOD_58:
case CFG_METHOD_59:
- case CFG_METHOD_69:
case CFG_METHOD_70:
case CFG_METHOD_71:
case CFG_METHOD_91:
@@ -689,7 +688,6 @@ rtl_wait_txrx_fifo_empty(struct rtl_hw *hw)
case CFG_METHOD_57:
case CFG_METHOD_58:
case CFG_METHOD_59:
- case CFG_METHOD_69:
case CFG_METHOD_70:
case CFG_METHOD_71:
case CFG_METHOD_91:
@@ -929,9 +927,6 @@ rtl8125_set_rx_desc_type(struct rtl_hw *hw)
case CFG_METHOD_59:
RTL_W8(hw, 0xD8, RTL_R8(hw, 0xD8) & ~EnableRxDescV4_0);
break;
- case CFG_METHOD_69:
- RTL_W32(hw, RxConfig, EnableRxDescV3 | RTL_R32(hw, RxConfig));
- break;
case CFG_METHOD_70:
case CFG_METHOD_71:
case CFG_METHOD_91:
@@ -967,7 +962,7 @@ rtl8125_hw_config(struct rtl_hw *hw)
if (hw->mcfg >= CFG_METHOD_48 && hw->mcfg <= CFG_METHOD_53)
RTL_W16(hw, 0x382, 0x221B);
- if ((hw->mcfg >= CFG_METHOD_69 && hw->mcfg <= CFG_METHOD_71) ||
+ if ((hw->mcfg >= CFG_METHOD_70 && hw->mcfg <= CFG_METHOD_71) ||
hw->mcfg == CFG_METHOD_91)
rtl_disable_l1_timeout(hw);
@@ -1265,7 +1260,6 @@ rtl_set_hw_ops(struct rtl_hw *hw)
hw->hw_ops = rtl8125cp_ops;
return 0;
/* 8126A */
- case CFG_METHOD_69:
case CFG_METHOD_70:
case CFG_METHOD_71:
hw->hw_ops = rtl8126a_ops;
@@ -1553,7 +1547,6 @@ rtl_init_software_variable(struct rtl_hw *hw)
case CFG_METHOD_59:
hw->chipset_name = RTL8168KD;
break;
- case CFG_METHOD_69:
case CFG_METHOD_70:
case CFG_METHOD_71:
hw->chipset_name = RTL8126A;
@@ -1704,7 +1697,6 @@ rtl_init_software_variable(struct rtl_hw *hw)
case CFG_METHOD_57:
case CFG_METHOD_58:
case CFG_METHOD_59:
- case CFG_METHOD_69:
case CFG_METHOD_70:
case CFG_METHOD_71:
case CFG_METHOD_91:
@@ -1730,9 +1722,6 @@ rtl_init_software_variable(struct rtl_hw *hw)
case CFG_METHOD_91:
hw->HwSuppTxNoCloseVer = 6;
break;
- case CFG_METHOD_69:
- hw->HwSuppTxNoCloseVer = 4;
- break;
case CFG_METHOD_70:
case CFG_METHOD_71:
hw->HwSuppTxNoCloseVer = 5;
@@ -1824,9 +1813,6 @@ rtl_init_software_variable(struct rtl_hw *hw)
case CFG_METHOD_58:
hw->sw_ram_code_ver = NIC_RAMCODE_VERSION_CFG_METHOD_58;
break;
- case CFG_METHOD_69:
- hw->sw_ram_code_ver = NIC_RAMCODE_VERSION_CFG_METHOD_69;
- break;
case CFG_METHOD_70:
hw->sw_ram_code_ver = NIC_RAMCODE_VERSION_CFG_METHOD_70;
break;
@@ -1849,7 +1835,7 @@ rtl_init_software_variable(struct rtl_hw *hw)
hw->mcu_pme_setting = rtl_mac_ocp_read(hw, 0xE00A);
}
- if (hw->mcfg >= CFG_METHOD_69)
+ if (hw->mcfg >= CFG_METHOD_70)
hw->EnableRss = 1;
else
hw->EnableRss = 0;
@@ -1869,7 +1855,6 @@ rtl_init_software_variable(struct rtl_hw *hw)
case CFG_METHOD_50:
case CFG_METHOD_51:
case CFG_METHOD_53:
- case CFG_METHOD_69:
hw->HwSuppIntMitiVer = 4;
break;
case CFG_METHOD_54:
@@ -1888,10 +1873,6 @@ rtl_init_software_variable(struct rtl_hw *hw)
}
switch (hw->mcfg) {
- case CFG_METHOD_69:
- hw->HwSuppRxDescType = RX_DESC_RING_TYPE_3;
- hw->RxDescLength = RX_DESC_LEN_TYPE_3;
- break;
case CFG_METHOD_70:
case CFG_METHOD_71:
case CFG_METHOD_91:
@@ -2370,7 +2351,7 @@ rtl_get_mac_version(struct rtl_hw *hw, struct rte_pci_device *pci_dev)
break;
case 0x64800000:
if (ic_version_id == 0x00000000) {
- hw->mcfg = CFG_METHOD_69;
+ hw->mcfg = CFG_METHOD_DEFAULT;
} else if (ic_version_id == 0x100000) {
hw->mcfg = CFG_METHOD_70;
} else if (ic_version_id == 0x200000) {
diff --git a/drivers/net/r8169/r8169_hw.h b/drivers/net/r8169/r8169_hw.h
index c8705edad4..a1f841c88d 100644
--- a/drivers/net/r8169/r8169_hw.h
+++ b/drivers/net/r8169/r8169_hw.h
@@ -137,7 +137,6 @@ extern const struct rtl_hw_ops rtl8125cp_ops;
#define NIC_RAMCODE_VERSION_CFG_METHOD_56 (0x0027)
#define NIC_RAMCODE_VERSION_CFG_METHOD_57 (0x0027)
#define NIC_RAMCODE_VERSION_CFG_METHOD_58 (0x0008)
-#define NIC_RAMCODE_VERSION_CFG_METHOD_69 (0x0023)
#define NIC_RAMCODE_VERSION_CFG_METHOD_70 (0x0033)
#define NIC_RAMCODE_VERSION_CFG_METHOD_71 (0x0060)
#define NIC_RAMCODE_VERSION_CFG_METHOD_91 (0x0051)
diff --git a/drivers/net/r8169/r8169_phy.c b/drivers/net/r8169/r8169_phy.c
index 1239319da5..8988c6f288 100644
--- a/drivers/net/r8169/r8169_phy.c
+++ b/drivers/net/r8169/r8169_phy.c
@@ -976,7 +976,6 @@ _rtl_disable_adv_eee(struct rtl_hw *hw)
case CFG_METHOD_57:
case CFG_METHOD_58:
case CFG_METHOD_59:
- case CFG_METHOD_69:
case CFG_METHOD_70:
case CFG_METHOD_71:
case CFG_METHOD_91:
@@ -1073,7 +1072,6 @@ rtl_disable_eee(struct rtl_hw *hw)
rtl_clear_eth_phy_ocp_bit(hw, 0xA428, BIT_7);
rtl_clear_eth_phy_ocp_bit(hw, 0xA4A2, BIT_9);
break;
- case CFG_METHOD_69:
case CFG_METHOD_70:
case CFG_METHOD_71:
case CFG_METHOD_91:
@@ -1211,7 +1209,6 @@ rtl_set_speed_xmii(struct rtl_hw *hw, u8 autoneg, u32 speed, u8 duplex, u64 adv)
case CFG_METHOD_91:
mask |= BIT_2;
/* Fall through */
- case CFG_METHOD_69:
case CFG_METHOD_70:
case CFG_METHOD_71:
mask |= BIT_1;
diff --git a/drivers/net/r8169/r8169_rxtx.c b/drivers/net/r8169/r8169_rxtx.c
index 37f4c4da80..a2e9139ec6 100644
--- a/drivers/net/r8169/r8169_rxtx.c
+++ b/drivers/net/r8169/r8169_rxtx.c
@@ -1345,7 +1345,6 @@ rtl8125_set_tx_tag_num(struct rtl_hw *hw)
case CFG_METHOD_53:
mac_ocp_data |= (2 << 8);
break;
- case CFG_METHOD_69:
case CFG_METHOD_70:
case CFG_METHOD_71:
if (hw->EnableTxNoClose)
--
2.34.1
^ permalink raw reply related [flat|nested] 15+ messages in thread* [PATCH v3 07/12] net/r8169: update hardware configurations for 8126
2026-02-12 5:58 [PATCH v3 00/12] net/r8169: update driver with new HW support and fixes Howard Wang
` (5 preceding siblings ...)
2026-02-12 5:58 ` [PATCH v3 06/12] net/r8169: remove support for CFG_METHOD_69 Howard Wang
@ 2026-02-12 5:58 ` Howard Wang
2026-02-12 5:58 ` [PATCH v3 08/12] net/r8169: update hardware configurations for 8125 Howard Wang
` (5 subsequent siblings)
12 siblings, 0 replies; 15+ messages in thread
From: Howard Wang @ 2026-02-12 5:58 UTC (permalink / raw)
To: dev; +Cc: pro_nic_dpdk, Howard Wang
Update hw configurations as below:
phy config,
mac mcu patch.
Signed-off-by: Howard Wang <howard_wang@realsil.com.cn>
---
drivers/net/r8169/base/rtl8126a.c | 8 +++
drivers/net/r8169/base/rtl8126a_mcu.c | 76 +++++++++++++++++++--------
2 files changed, 61 insertions(+), 23 deletions(-)
diff --git a/drivers/net/r8169/base/rtl8126a.c b/drivers/net/r8169/base/rtl8126a.c
index e3f68c1292..5de4ff1274 100644
--- a/drivers/net/r8169/base/rtl8126a.c
+++ b/drivers/net/r8169/base/rtl8126a.c
@@ -456,6 +456,14 @@ rtl_hw_phy_config_8126a_3(struct rtl_hw *hw)
rtl_set_eth_phy_ocp_bit(hw, 0xA430, BIT_1 | BIT_0);
rtl_clear_and_set_eth_phy_ocp_bit(hw, 0xB54C, 0xFFC0, 0x3700);
+
+ rtl_set_eth_phy_ocp_bit(hw, 0xB648, BIT_6);
+ rtl_mdio_direct_write_phy_ocp(hw, 0xB87C, 0x8082);
+ rtl_clear_and_set_eth_phy_ocp_bit(hw, 0xB87E, 0xFF00, 0x5D00);
+ rtl_mdio_direct_write_phy_ocp(hw, 0xB87C, 0x807C);
+ rtl_clear_and_set_eth_phy_ocp_bit(hw, 0xB87E, 0xFF00, 0x5000);
+ rtl_mdio_direct_write_phy_ocp(hw, 0xB87C, 0x809D);
+ rtl_clear_and_set_eth_phy_ocp_bit(hw, 0xB87E, 0xFF00, 0x5000);
}
static void
diff --git a/drivers/net/r8169/base/rtl8126a_mcu.c b/drivers/net/r8169/base/rtl8126a_mcu.c
index 89ad5f6deb..80de797807 100644
--- a/drivers/net/r8169/base/rtl8126a_mcu.c
+++ b/drivers/net/r8169/base/rtl8126a_mcu.c
@@ -15,8 +15,8 @@ void
rtl_set_mac_mcu_8126a_2(struct rtl_hw *hw)
{
static const u16 mcu_patch_code[] = {
- 0xE010, 0xE02C, 0xE04E, 0xE0A4, 0xE0A8, 0xE0AB, 0xE0AE, 0xE0B1, 0xE0B3,
- 0xE0B5, 0xE0B7, 0xE0B9, 0xE0BB, 0xE0BD, 0xE0BF, 0xE0C1, 0xC716, 0xC616,
+ 0xE010, 0xE02C, 0xE04E, 0xE0A4, 0xE0A8, 0xE0AB, 0xE0AE, 0xE0B1, 0xE0B5,
+ 0xE0B7, 0xE0B9, 0xE0BB, 0xE0BD, 0xE0BF, 0xE0C1, 0xE0C3, 0xC716, 0xC616,
0x9EE0, 0xC616, 0x65C0, 0x1500, 0xF009, 0xC714, 0x66E0, 0x41B5, 0x8EE0,
0xC611, 0x75C0, 0x4858, 0x9DC0, 0xC707, 0xC608, 0x9EE0, 0xC608, 0xC502,
0xBD00, 0x0100, 0xE86C, 0xE000, 0xA000, 0xB404, 0xB430, 0xC070, 0xE926,
@@ -35,10 +35,11 @@ rtl_set_mac_mcu_8126a_2(struct rtl_hw *hw)
0x4898, 0x9902, 0xE7C0, 0xC00A, 0xC606, 0xBE00, 0x0C01, 0x1400, 0xF1FE,
0xFF80, 0x2362, 0xD456, 0xD404, 0xE400, 0x4166, 0x9CF6, 0xC002, 0xB800,
0x14A6, 0x49D1, 0xC602, 0xBE00, 0x4160, 0x49D1, 0xC602, 0xBE00, 0x41E6,
- 0x49D1, 0xC602, 0xBE00, 0x4282, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00,
- 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00,
- 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00,
- 0x0000, 0xC602, 0xBE00, 0x0000, 0x6847, 0x0A18, 0x0C02, 0x0B30
+ 0x49D1, 0xC602, 0xBE00, 0x4282, 0xC104, 0xC202, 0xBA00, 0x234C, 0xD116,
+ 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000,
+ 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000,
+ 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0x6847, 0x0019, 0x041C,
+ 0x1322
};
/* Get BIN mac mcu patch code version */
@@ -51,34 +52,60 @@ rtl_set_mac_mcu_8126a_2(struct rtl_hw *hw)
rtl_mac_ocp_write(hw, 0xFC26, 0x8000);
+ rtl_mac_ocp_write(hw, 0xFC28, 0x00FE);
+ rtl_mac_ocp_write(hw, 0xFC2A, 0x4A14);
rtl_mac_ocp_write(hw, 0xFC2C, 0x2360);
rtl_mac_ocp_write(hw, 0xFC2E, 0x14A4);
rtl_mac_ocp_write(hw, 0xFC30, 0x415E);
rtl_mac_ocp_write(hw, 0xFC32, 0x41E4);
rtl_mac_ocp_write(hw, 0xFC34, 0x4280);
+ rtl_mac_ocp_write(hw, 0xFC36, 0x234A);
- rtl_mac_ocp_write(hw, 0xFC48, 0x007C);
+ rtl_mac_ocp_write(hw, 0xFC48, 0x00FF);
}
void
rtl_set_mac_mcu_8126a_3(struct rtl_hw *hw)
{
static const u16 mcu_patch_code[] = {
- 0xE010, 0xE02C, 0xE04E, 0xE052, 0xE055, 0xE058, 0xE05B, 0xE05D, 0xE05F,
- 0xE061, 0xE063, 0xE065, 0xE067, 0xE069, 0xE06B, 0xE06D, 0xC716, 0xC616,
- 0x9EE0, 0xC616, 0x65C0, 0x1500, 0xF009, 0xC714, 0x66E0, 0x41B5, 0x8EE0,
- 0xC611, 0x75C0, 0x4858, 0x9DC0, 0xC707, 0xC608, 0x9EE0, 0xC608, 0xC502,
- 0xBD00, 0x0100, 0xE86C, 0xE000, 0xA000, 0xB404, 0xB430, 0xC070, 0xE926,
- 0xC2FE, 0x400A, 0xF11A, 0x63A4, 0x1A00, 0x49B0, 0xF002, 0x4820, 0x49B1,
- 0xF002, 0x4821, 0x49B2, 0xF002, 0x4822, 0x49B3, 0xF002, 0x4823, 0xC411,
- 0x6380, 0x48B0, 0x8B80, 0x6320, 0x41DA, 0x8B20, 0x6380, 0x4830, 0x8B80,
- 0xE003, 0x73A4, 0x9B20, 0xC302, 0xBB00, 0x55E2, 0xC070, 0xE022, 0x4166,
- 0x9CF6, 0xC602, 0xBE00, 0x14A6, 0x49D1, 0xC602, 0xBE00, 0x4178, 0x49D1,
- 0xC602, 0xBE00, 0x41FE, 0x49D1, 0xC602, 0xBE00, 0x429A, 0xC602, 0xBE00,
- 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00,
- 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00,
- 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00,
- 0x0000, 0x6847, 0x0B18, 0x0C02, 0x0D10
+ 0xE00A, 0xE026, 0xE048, 0xE04C, 0xE04F, 0xE052, 0xE055, 0xE0AB, 0xE0F8,
+ 0xE141, 0xC716, 0xC616, 0x9EE0, 0xC616, 0x65C0, 0x1500, 0xF009, 0xC714,
+ 0x66E0, 0x41B5, 0x8EE0, 0xC611, 0x75C0, 0x4858, 0x9DC0, 0xC707, 0xC608,
+ 0x9EE0, 0xC608, 0xC502, 0xBD00, 0x0100, 0xE86C, 0xE000, 0xA000, 0xB404,
+ 0xB430, 0xC070, 0xE926, 0xC2FE, 0x400A, 0xF11A, 0x63A4, 0x1A00, 0x49B0,
+ 0xF002, 0x4820, 0x49B1, 0xF002, 0x4821, 0x49B2, 0xF002, 0x4822, 0x49B3,
+ 0xF002, 0x4823, 0xC411, 0x6380, 0x48B0, 0x8B80, 0x6320, 0x41DA, 0x8B20,
+ 0x6380, 0x4830, 0x8B80, 0xE003, 0x73A4, 0x9B20, 0xC302, 0xBB00, 0x55E2,
+ 0xC070, 0xE022, 0x4166, 0x9CF6, 0xC602, 0xBE00, 0x14A6, 0x49D1, 0xC602,
+ 0xBE00, 0x4178, 0x49D1, 0xC602, 0xBE00, 0x41FE, 0x49D1, 0xC602, 0xBE00,
+ 0x429A, 0xC74B, 0x76E2, 0xC54A, 0x402E, 0xF034, 0x76E0, 0x402E, 0xF006,
+ 0xC503, 0xC403, 0xBC00, 0xC0BC, 0x0AAE, 0x76F0, 0x1601, 0xF023, 0xC741,
+ 0x1E04, 0x9EE0, 0x1E40, 0x9EE4, 0xC63D, 0x9EE8, 0xC73D, 0x76E0, 0x4863,
+ 0x9EE0, 0xC73A, 0x76E0, 0x48EA, 0x48EB, 0x9EE0, 0xC736, 0x1E01, 0x9EE2,
+ 0xC72D, 0x76E0, 0x486F, 0x9EE0, 0xC72D, 0x76E0, 0x48E3, 0x9EE0, 0xC728,
+ 0x1E0E, 0x9EE0, 0xC71D, 0x1E01, 0x9EE4, 0xE00D, 0x1E00, 0x9EF0, 0x1E05,
+ 0xC715, 0x9EE0, 0xE00A, 0x1E00, 0x9EE2, 0xC614, 0x75CC, 0x48D2, 0x9DCC,
+ 0x1E04, 0xC70B, 0x9EE0, 0xB000, 0xB001, 0xB002, 0xB003, 0xB004, 0xB005,
+ 0xB006, 0xB007, 0xFFC0, 0xE428, 0xD3C0, 0xBEEF, 0x5B4A, 0xDC46, 0xE0CC,
+ 0xE84E, 0xC0A2, 0x0100, 0xC010, 0xE85A, 0xE812, 0xC0B4, 0xC5F4, 0x74A0,
+ 0xC6F3, 0x4026, 0xF107, 0x74A2, 0xC6EF, 0x4026, 0xF107, 0xC6ED, 0xBE00,
+ 0x753A, 0xC602, 0xBE00, 0x5A3A, 0x7520, 0x49DE, 0xF102, 0xE7F9, 0xC6A1,
+ 0x67C6, 0x7520, 0x22D2, 0x26DD, 0x1500, 0xF002, 0xE7F1, 0x7532, 0x26D5,
+ 0x0530, 0x0D6C, 0xC42D, 0x308D, 0x7540, 0x4025, 0xF11E, 0x7542, 0x4025,
+ 0xF11B, 0x7544, 0x4025, 0xF118, 0xC423, 0x7546, 0x4025, 0xF114, 0x7548,
+ 0x4025, 0xF111, 0x754A, 0x4025, 0xF10E, 0xC5C0, 0xC4C0, 0x9CA2, 0xC6C0,
+ 0x75CC, 0x4852, 0x9DCC, 0xC6B8, 0x1D7D, 0x9DC2, 0x1D01, 0x9DC0, 0xE7C9,
+ 0xC40B, 0x7546, 0x4025, 0xF1FC, 0x7548, 0x4025, 0xF1F9, 0x754A, 0x4025,
+ 0xF1F6, 0xE7C0, 0xFFFF, 0xEEEE, 0xC2A6, 0x7340, 0xC2A5, 0x4013, 0xF013,
+ 0xC2AC, 0x7340, 0x4835, 0x9B40, 0xC240, 0x7358, 0x48B7, 0x48B2, 0x9B58,
+ 0x7346, 0x48B7, 0x48B2, 0x9B46, 0x7340, 0x48B7, 0x48B2, 0x9B40, 0xE012,
+ 0xC29A, 0x7340, 0x48B5, 0x9B40, 0xC22E, 0x7358, 0x4837, 0x4832, 0x9B58,
+ 0x7346, 0x4837, 0x4832, 0x9B46, 0x7340, 0x4837, 0x4832, 0x9B40, 0xC283,
+ 0x7340, 0x49BF, 0xF010, 0xC21B, 0x7344, 0x1300, 0xF104, 0x1B00, 0xC217,
+ 0x9B40, 0x1B01, 0xC213, 0x9B44, 0xC213, 0x734C, 0x48B7, 0x9B4C, 0xE008,
+ 0xC20C, 0x1B00, 0x9B44, 0xC20B, 0x734C, 0x4837, 0x9B4C, 0xC204, 0xC302,
+ 0xBB00, 0x2384, 0xE092, 0xD3C0, 0xE428, 0xDC46, 0xC104, 0xC202, 0xBA00,
+ 0x234C, 0xD116, 0x6847, 0x0119, 0x041C, 0x1134
};
/* Get BIN mac mcu patch code version */
@@ -91,12 +118,15 @@ rtl_set_mac_mcu_8126a_3(struct rtl_hw *hw)
rtl_mac_ocp_write(hw, 0xFC26, 0x8000);
+ rtl_mac_ocp_write(hw, 0xFC28, 0x00FE);
+ rtl_mac_ocp_write(hw, 0xFC2A, 0x55DE);
rtl_mac_ocp_write(hw, 0xFC2C, 0x14A4);
rtl_mac_ocp_write(hw, 0xFC2E, 0x4176);
rtl_mac_ocp_write(hw, 0xFC30, 0x41FC);
rtl_mac_ocp_write(hw, 0xFC32, 0x4298);
+ rtl_mac_ocp_write(hw, 0xFC3A, 0x234A);
- rtl_mac_ocp_write(hw, 0xFC48, 0x003C);
+ rtl_mac_ocp_write(hw, 0xFC48, 0x023F);
}
/* ------------------------------------PHY 8126A------------------------------------- */
--
2.34.1
^ permalink raw reply related [flat|nested] 15+ messages in thread* [PATCH v3 08/12] net/r8169: update hardware configurations for 8125
2026-02-12 5:58 [PATCH v3 00/12] net/r8169: update driver with new HW support and fixes Howard Wang
` (6 preceding siblings ...)
2026-02-12 5:58 ` [PATCH v3 07/12] net/r8169: update hardware configurations for 8126 Howard Wang
@ 2026-02-12 5:58 ` Howard Wang
2026-02-12 5:58 ` [PATCH v3 09/12] net/r8169: add support for RTL9151 Howard Wang
` (4 subsequent siblings)
12 siblings, 0 replies; 15+ messages in thread
From: Howard Wang @ 2026-02-12 5:58 UTC (permalink / raw)
To: dev; +Cc: pro_nic_dpdk, Howard Wang
Update hw configurations as below:
8125a's mac mcu,
8125b's mac mcu,
8125bp's mac mcu,
8125cp's phy config, mac mcu and phy mcu,
8125d's phy config, mac mcu and phy mcu.
Signed-off-by: Howard Wang <howard_wang@realsil.com.cn>
---
drivers/net/r8169/base/rtl8125a_mcu.c | 128 ++-----
drivers/net/r8169/base/rtl8125b_mcu.c | 56 ++-
drivers/net/r8169/base/rtl8125bp_mcu.c | 17 +-
drivers/net/r8169/base/rtl8125cp.c | 36 ++
drivers/net/r8169/base/rtl8125cp_mcu.c | 87 ++++-
drivers/net/r8169/base/rtl8125cp_mcu.h | 1 +
drivers/net/r8169/base/rtl8125d.c | 9 +
drivers/net/r8169/base/rtl8125d_mcu.c | 506 +++++++++++++++----------
drivers/net/r8169/r8169_hw.c | 4 +-
drivers/net/r8169/r8169_hw.h | 4 +-
10 files changed, 514 insertions(+), 334 deletions(-)
diff --git a/drivers/net/r8169/base/rtl8125a_mcu.c b/drivers/net/r8169/base/rtl8125a_mcu.c
index b810787daa..9fd1d59541 100644
--- a/drivers/net/r8169/base/rtl8125a_mcu.c
+++ b/drivers/net/r8169/base/rtl8125a_mcu.c
@@ -15,103 +15,53 @@ void
rtl_set_mac_mcu_8125a_2(struct rtl_hw *hw)
{
u16 entry_cnt;
- static const u16 mcu_patch_code_8125a_2[] = {
- 0xE010, 0xE012, 0xE022, 0xE024, 0xE029, 0xE02B, 0xE094, 0xE09D, 0xE09F,
- 0xE0AA, 0xE0B5, 0xE0C6, 0xE0CC, 0xE0D1, 0xE0D6, 0xE0D8, 0xC602, 0xBE00,
- 0x0000, 0xC60F, 0x73C4, 0x49B3, 0xF106, 0x73C2, 0xC608, 0xB406, 0xC609,
- 0xFF80, 0xC605, 0xB406, 0xC605, 0xFF80, 0x0544, 0x0568, 0xE906, 0xCDE8,
- 0xC602, 0xBE00, 0x0000, 0x48C1, 0x48C2, 0x9C46, 0xC402, 0xBC00, 0x0A12,
- 0xC602, 0xBE00, 0x0EBA, 0x1501, 0xF02A, 0x1500, 0xF15D, 0xC661, 0x75C8,
- 0x49D5, 0xF00A, 0x49D6, 0xF008, 0x49D7, 0xF006, 0x49D8, 0xF004, 0x75D2,
- 0x49D9, 0xF150, 0xC553, 0x77A0, 0x75C8, 0x4855, 0x4856, 0x4857, 0x4858,
- 0x48DA, 0x48DB, 0x49FE, 0xF002, 0x485A, 0x49FF, 0xF002, 0x485B, 0x9DC8,
- 0x75D2, 0x4859, 0x9DD2, 0xC643, 0x75C0, 0x49D4, 0xF033, 0x49D0, 0xF137,
- 0xE030, 0xC63A, 0x75C8, 0x49D5, 0xF00E, 0x49D6, 0xF00C, 0x49D7, 0xF00A,
- 0x49D8, 0xF008, 0x75D2, 0x49D9, 0xF005, 0xC62E, 0x75C0, 0x49D7, 0xF125,
- 0xC528, 0x77A0, 0xC627, 0x75C8, 0x4855, 0x4856, 0x4857, 0x4858, 0x48DA,
+ static const u16 mcu_patch_code[] = {
+ 0xE010, 0xE062, 0xE072, 0xE074, 0xE079, 0xE07B, 0xE0E4, 0xE0ED, 0xE0EF,
+ 0xE0FA, 0xE105, 0xE116, 0xE11C, 0xE121, 0xE126, 0xE12A, 0xB400, 0xB401,
+ 0xB402, 0xB403, 0xB404, 0xB405, 0xC03F, 0x7206, 0x49AE, 0xF1FE, 0xC13C,
+ 0x9904, 0xC13B, 0x9906, 0x7206, 0x49AE, 0xF1FE, 0x7200, 0x49A0, 0xF10D,
+ 0xC534, 0xC133, 0xC238, 0xC338, 0xE817, 0xC337, 0xE815, 0xC336, 0xE813,
+ 0xC335, 0xE811, 0xE01B, 0xC129, 0xC22D, 0xC528, 0xC32C, 0xE80B, 0xC526,
+ 0xC32A, 0xE808, 0xC524, 0xC328, 0xE805, 0xC522, 0xC326, 0xE802, 0xE00C,
+ 0x740E, 0x49CE, 0xF1FE, 0x9908, 0x9D0A, 0x9A0C, 0x9B0E, 0x740E, 0x49CE,
+ 0xF1FE, 0xFF80, 0xB005, 0xB004, 0xB003, 0xB002, 0xB001, 0xB000, 0xC604,
+ 0xC002, 0xB800, 0x3044, 0xE000, 0xE8E0, 0xF128, 0x0002, 0xFFFF, 0x10EC,
+ 0x816A, 0x816F, 0x8164, 0x816D, 0xF000, 0x8001, 0x8002, 0x8003, 0x8004,
+ 0xC60F, 0x73C4, 0x49B3, 0xF106, 0x73C2, 0xC608, 0xB406, 0xC609, 0xFF80,
+ 0xC605, 0xB406, 0xC605, 0xFF80, 0x0544, 0x0568, 0xE906, 0xCDE8, 0xC602,
+ 0xBE00, 0x0000, 0x48C1, 0x48C2, 0x9C46, 0xC402, 0xBC00, 0x0A12, 0xC602,
+ 0xBE00, 0x0EBA, 0x1501, 0xF02A, 0x1500, 0xF15D, 0xC661, 0x75C8, 0x49D5,
+ 0xF00A, 0x49D6, 0xF008, 0x49D7, 0xF006, 0x49D8, 0xF004, 0x75D2, 0x49D9,
+ 0xF150, 0xC553, 0x77A0, 0x75C8, 0x4855, 0x4856, 0x4857, 0x4858, 0x48DA,
0x48DB, 0x49FE, 0xF002, 0x485A, 0x49FF, 0xF002, 0x485B, 0x9DC8, 0x75D2,
- 0x4859, 0x9DD2, 0xC616, 0x75C0, 0x4857, 0x9DC0, 0xC613, 0x75C0, 0x49DA,
- 0xF003, 0x49D0, 0xF107, 0xC60B, 0xC50E, 0x48D9, 0x9DC0, 0x4859, 0x9DC0,
- 0xC608, 0xC702, 0xBF00, 0x3AE0, 0xE860, 0xB400, 0xB5D4, 0xE908, 0xE86C,
- 0x1200, 0xC409, 0x6780, 0x48F1, 0x8F80, 0xC404, 0xC602, 0xBE00, 0x10AA,
- 0xC010, 0xEA7C, 0xC602, 0xBE00, 0x0000, 0x740A, 0x4846, 0x4847, 0x9C0A,
- 0xC607, 0x74C0, 0x48C6, 0x9CC0, 0xC602, 0xBE00, 0x13FE, 0xE054, 0x72CA,
- 0x4826, 0x4827, 0x9ACA, 0xC607, 0x72C0, 0x48A6, 0x9AC0, 0xC602, 0xBE00,
- 0x07DC, 0xE054, 0xC60F, 0x74C4, 0x49CC, 0xF109, 0xC60C, 0x74CA, 0x48C7,
- 0x9CCA, 0xC609, 0x74C0, 0x4846, 0x9CC0, 0xC602, 0xBE00, 0x2480, 0xE092,
- 0xE0C0, 0xE054, 0x7420, 0x48C0, 0x9C20, 0x7444, 0xC602, 0xBE00, 0x12F8,
- 0x1BFF, 0x46EB, 0x1BFF, 0xC102, 0xB900, 0x0D5A, 0x1BFF, 0x46EB, 0x1BFF,
- 0xC102, 0xB900, 0x0E2A, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6486,
- 0x0B15, 0x090E, 0x1139
+ 0x4859, 0x9DD2, 0xC643, 0x75C0, 0x49D4, 0xF033, 0x49D1, 0xF137, 0xE030,
+ 0xC63A, 0x75C8, 0x49D5, 0xF00E, 0x49D6, 0xF00C, 0x49D7, 0xF00A, 0x49D8,
+ 0xF008, 0x75D2, 0x49D9, 0xF005, 0xC62E, 0x75C0, 0x49D7, 0xF125, 0xC528,
+ 0x77A0, 0xC627, 0x75C8, 0x4855, 0x4856, 0x4857, 0x4858, 0x48DA, 0x48DB,
+ 0x49FE, 0xF002, 0x485A, 0x49FF, 0xF002, 0x485B, 0x9DC8, 0x75D2, 0x4859,
+ 0x9DD2, 0xC616, 0x75C0, 0x4857, 0x9DC0, 0xC613, 0x75C0, 0x49DA, 0xF003,
+ 0x49D1, 0xF107, 0xC60B, 0xC50E, 0x48D9, 0x9DC0, 0x4859, 0x9DC0, 0xC608,
+ 0xC702, 0xBF00, 0x3AE0, 0xE860, 0xB400, 0xB5D4, 0xE908, 0xE86C, 0x1200,
+ 0xC409, 0x6780, 0x48F1, 0x8F80, 0xC404, 0xC602, 0xBE00, 0x10AA, 0xC010,
+ 0xEA7C, 0xC602, 0xBE00, 0x0000, 0x740A, 0x4846, 0x4847, 0x9C0A, 0xC607,
+ 0x74C0, 0x48C6, 0x9CC0, 0xC602, 0xBE00, 0x13FE, 0xE054, 0x72CA, 0x4826,
+ 0x4827, 0x9ACA, 0xC607, 0x72C0, 0x48A6, 0x9AC0, 0xC602, 0xBE00, 0x07DC,
+ 0xE054, 0xC60F, 0x74C4, 0x49CC, 0xF109, 0xC60C, 0x74CA, 0x48C7, 0x9CCA,
+ 0xC609, 0x74C0, 0x4846, 0x9CC0, 0xC602, 0xBE00, 0x2480, 0xE092, 0xE0C0,
+ 0xE054, 0x7420, 0x48C0, 0x9C20, 0x7444, 0xC602, 0xBE00, 0x12F8, 0x1BFF,
+ 0x46EB, 0x1BFF, 0xC102, 0xB900, 0x0D5A, 0x1BFF, 0x46EB, 0x1BFF, 0xC102,
+ 0xB900, 0x0E2A, 0xC104, 0xC202, 0xBA00, 0x21DE, 0xD116, 0xC602, 0xBE00,
+ 0x0000, 0x6486, 0x0119, 0x0606, 0x1327
};
- entry_cnt = ARRAY_SIZE(mcu_patch_code_8125a_2);
+ entry_cnt = ARRAY_SIZE(mcu_patch_code);
/* Get BIN mac mcu patch code version */
- hw->bin_mcu_patch_code_ver = rtl_get_bin_mcu_patch_code_ver(mcu_patch_code_8125a_2,
+ hw->bin_mcu_patch_code_ver = rtl_get_bin_mcu_patch_code_ver(mcu_patch_code,
entry_cnt);
if (hw->hw_mcu_patch_code_ver != hw->bin_mcu_patch_code_ver)
- rtl_write_mac_mcu_ram_code(hw, mcu_patch_code_8125a_2, entry_cnt);
+ rtl_write_mac_mcu_ram_code(hw, mcu_patch_code, entry_cnt);
rtl_mac_ocp_write(hw, 0xFC26, 0x8000);
diff --git a/drivers/net/r8169/base/rtl8125b_mcu.c b/drivers/net/r8169/base/rtl8125b_mcu.c
index afc17707ec..db3b368b64 100644
--- a/drivers/net/r8169/base/rtl8125b_mcu.c
+++ b/drivers/net/r8169/base/rtl8125b_mcu.c
@@ -14,9 +14,10 @@
void
rtl_set_mac_mcu_8125b_2(struct rtl_hw *hw)
{
- static const u16 mcu_patch_code_8125b_2[] = {
- 0xE010, 0xE01B, 0xE026, 0xE037, 0xE03D, 0xE057, 0xE05B, 0xE060, 0xE062,
- 0xE064, 0xE066, 0xE068, 0xE06A, 0xE06C, 0xE06E, 0xE070, 0x740A, 0x4846,
+ u16 entry_cnt;
+ static const u16 mcu_patch_code[] = {
+ 0xE010, 0xE01B, 0xE026, 0xE037, 0xE03D, 0xE057, 0xE05B, 0xE060, 0xE0B6,
+ 0xE103, 0xE14C, 0xE150, 0xE153, 0xE156, 0xE158, 0xE15A, 0x740A, 0x4846,
0x4847, 0x9C0A, 0xC607, 0x74C0, 0x48C6, 0x9CC0, 0xC602, 0xBE00, 0x13F0,
0xE054, 0x72CA, 0x4826, 0x4827, 0x9ACA, 0xC607, 0x72C0, 0x48A6, 0x9AC0,
0xC602, 0xBE00, 0x081C, 0xE054, 0xC60F, 0x74C4, 0x49CC, 0xF109, 0xC60C,
@@ -26,14 +27,46 @@ rtl_set_mac_mcu_8125b_2(struct rtl_hw *hw)
0x3168, 0x3ADA, 0x31AB, 0x1A00, 0x9AC0, 0x1300, 0xF1FB, 0x7620, 0x236E,
0x276F, 0x1A3C, 0x22A1, 0x41B5, 0x9EE2, 0x76E4, 0x486F, 0x9EE4, 0xC602,
0xBE00, 0x4A26, 0x733A, 0x49BB, 0xC602, 0xBE00, 0x47A2, 0x48C1, 0x48C2,
- 0x9C46, 0xC402, 0xBC00, 0x0A52, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00,
- 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00,
- 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00,
- 0x0000, 0xC602, 0xBE00, 0x0000
+ 0x9C46, 0xC402, 0xBC00, 0x0A52, 0xC74B, 0x76E2, 0xC54A, 0x402E, 0xF034,
+ 0x76E0, 0x402E, 0xF006, 0xC703, 0xC403, 0xBC00, 0xC0BC, 0x0980, 0x76F0,
+ 0x1601, 0xF023, 0xC741, 0x1E04, 0x9EE0, 0x1E40, 0x9EE4, 0xC63D, 0x9EE8,
+ 0xC73D, 0x76E0, 0x4863, 0x9EE0, 0xC73A, 0x76E0, 0x48EA, 0x48EB, 0x9EE0,
+ 0xC736, 0x1E01, 0x9EE2, 0xC72D, 0x76E0, 0x486F, 0x9EE0, 0xC72D, 0x76E0,
+ 0x48E3, 0x9EE0, 0xC728, 0x1E0E, 0x9EE0, 0xC71D, 0x1E01, 0x9EE4, 0xE00D,
+ 0x1E00, 0x9EF0, 0x1E05, 0xC715, 0x9EE0, 0xE00A, 0x1E00, 0x9EE2, 0xC614,
+ 0x75CC, 0x48D2, 0x9DCC, 0x1E04, 0xC70B, 0x9EE0, 0xB000, 0xB001, 0xB002,
+ 0xB003, 0xB004, 0xB005, 0xB006, 0xB007, 0xFFC0, 0xE428, 0xD3C0, 0xBEEF,
+ 0x473E, 0xDC46, 0xE0CC, 0xE84E, 0xC0A2, 0x0100, 0xC010, 0xE85A, 0xE812,
+ 0xC0B4, 0xC5F4, 0x74A0, 0xC6F3, 0x4026, 0xF107, 0x74A2, 0xC6EF, 0x4026,
+ 0xF107, 0xC6ED, 0xBE00, 0x753A, 0xC602, 0xBE00, 0x462E, 0x7520, 0x49DE,
+ 0xF102, 0xE7F9, 0xC6A1, 0x67C6, 0x7520, 0x22D2, 0x26DD, 0x1500, 0xF002,
+ 0xE7F1, 0x7532, 0x26D5, 0x0530, 0x0D6C, 0xC42D, 0x308D, 0x7540, 0x4025,
+ 0xF11E, 0x7542, 0x4025, 0xF11B, 0x7544, 0x4025, 0xF118, 0xC423, 0x7546,
+ 0x4025, 0xF114, 0x7548, 0x4025, 0xF111, 0x754A, 0x4025, 0xF10E, 0xC5C0,
+ 0xC4C0, 0x9CA2, 0xC6C0, 0x75CC, 0x4852, 0x9DCC, 0xC6B8, 0x1D7D, 0x9DC2,
+ 0x1D01, 0x9DC0, 0xE7C9, 0xC40B, 0x7546, 0x4025, 0xF1FC, 0x7548, 0x4025,
+ 0xF1F9, 0x754A, 0x4025, 0xF1F6, 0xE7C0, 0xFFFF, 0xEEEE, 0xC2A6, 0x7340,
+ 0xC2A5, 0x4013, 0xF013, 0xC2AC, 0x7340, 0x4835, 0x9B40, 0xC240, 0x7358,
+ 0x48B7, 0x48B2, 0x9B58, 0x7346, 0x48B7, 0x48B2, 0x9B46, 0x7340, 0x48B7,
+ 0x48B2, 0x9B40, 0xE012, 0xC29A, 0x7340, 0x48B5, 0x9B40, 0xC22E, 0x7358,
+ 0x4837, 0x4832, 0x9B58, 0x7346, 0x4837, 0x4832, 0x9B46, 0x7340, 0x4837,
+ 0x4832, 0x9B40, 0xC283, 0x7340, 0x49BF, 0xF010, 0xC21B, 0x7344, 0x1300,
+ 0xF104, 0x1B00, 0xC217, 0x9B40, 0x1B01, 0xC213, 0x9B44, 0xC213, 0x734C,
+ 0x48B7, 0x9B4C, 0xE008, 0xC20C, 0x1B00, 0x9B44, 0xC20B, 0x734C, 0x4837,
+ 0x9B4C, 0xC204, 0xC302, 0xBB00, 0x2230, 0xE092, 0xD3C0, 0xE428, 0xDC46,
+ 0xC104, 0xC202, 0xBA00, 0x21F8, 0xD116, 0x49D1, 0xC602, 0xBE00, 0x3E7A,
+ 0x49D1, 0xC602, 0xBE00, 0x3EDA, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00,
+ 0x0000, 0xC602, 0xBE00, 0x0000, 0x6637, 0x0119, 0x0604, 0x1203
};
- rtl_write_mac_mcu_ram_code(hw, mcu_patch_code_8125b_2,
- ARRAY_SIZE(mcu_patch_code_8125b_2));
+ entry_cnt = ARRAY_SIZE(mcu_patch_code);
+
+ /* Get BIN mac mcu patch code version */
+ hw->bin_mcu_patch_code_ver = rtl_get_bin_mcu_patch_code_ver(mcu_patch_code,
+ entry_cnt);
+
+ if (hw->hw_mcu_patch_code_ver != hw->bin_mcu_patch_code_ver)
+ rtl_write_mac_mcu_ram_code(hw, mcu_patch_code, entry_cnt);
rtl_mac_ocp_write(hw, 0xFC26, 0x8000);
@@ -43,8 +76,11 @@ rtl_set_mac_mcu_8125b_2(struct rtl_hw *hw)
rtl_mac_ocp_write(hw, 0xFC2E, 0x12DA);
rtl_mac_ocp_write(hw, 0xFC30, 0x4A20);
rtl_mac_ocp_write(hw, 0xFC32, 0x47A0);
+ rtl_mac_ocp_write(hw, 0xFC3C, 0x21F6);
+ rtl_mac_ocp_write(hw, 0xFC3E, 0x3E78);
+ rtl_mac_ocp_write(hw, 0xFC40, 0x3ED8);
- rtl_mac_ocp_write(hw, 0xFC48, 0x003F);
+ rtl_mac_ocp_write(hw, 0xFC48, 0x1C7B);
}
/* ------------------------------------PHY 8125B--------------------------------------- */
diff --git a/drivers/net/r8169/base/rtl8125bp_mcu.c b/drivers/net/r8169/base/rtl8125bp_mcu.c
index 2a9d0a3d48..a591988657 100644
--- a/drivers/net/r8169/base/rtl8125bp_mcu.c
+++ b/drivers/net/r8169/base/rtl8125bp_mcu.c
@@ -59,8 +59,8 @@ rtl_set_mac_mcu_8125bp_2(struct rtl_hw *hw)
{
u16 entry_cnt;
static const u16 mcu_patch_code[] = {
- 0xE010, 0xE033, 0xE046, 0xE04A, 0xE04D, 0xE050, 0xE052, 0xE054, 0xE056,
- 0xE058, 0xE05A, 0xE05C, 0xE05E, 0xE060, 0xE062, 0xE064, 0xB406, 0x1000,
+ 0xE010, 0xE033, 0xE046, 0xE04A, 0xE04D, 0xE050, 0xE054, 0xE056, 0xE058,
+ 0xE05A, 0xE05C, 0xE05E, 0xE060, 0xE062, 0xE064, 0xE066, 0xB406, 0x1000,
0xF016, 0xC61F, 0x400E, 0xF012, 0x218E, 0x25BE, 0x1300, 0xF007, 0x7340,
0xC618, 0x400E, 0xF102, 0x48B0, 0x8320, 0xB400, 0x2402, 0x1000, 0xF003,
0x7342, 0x8322, 0xB000, 0xE007, 0x7322, 0x9B42, 0x7320, 0x9B40, 0x0300,
@@ -68,11 +68,11 @@ rtl_set_mac_mcu_8125bp_2(struct rtl_hw *hw)
0xF00A, 0xC20F, 0x400A, 0xF007, 0x73A4, 0xC20C, 0x400A, 0xF102, 0x48B0,
0x9B20, 0x1B00, 0x9BA0, 0xC602, 0xBE00, 0x4392, 0xE6E0, 0xE6E2, 0xC01C,
0x4166, 0x9CF6, 0xC002, 0xB800, 0x143C, 0x49D1, 0xC602, 0xBE00, 0x3FC4,
- 0x49D1, 0xC602, 0xBE00, 0x405A, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00,
- 0x0000, 0xC102, 0xB900, 0x0000, 0xC002, 0xB800, 0x0000, 0xC602, 0xBE00,
- 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00,
- 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00,
- 0x0000, 0x6936, 0x0B18, 0x0C02, 0x0D22
+ 0x49D1, 0xC602, 0xBE00, 0x405A, 0xC104, 0xC202, 0xBA00, 0x22E6, 0xD116,
+ 0xC602, 0xBE00, 0x0000, 0xC102, 0xB900, 0x0000, 0xC002, 0xB800, 0x0000,
+ 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000,
+ 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000,
+ 0xC602, 0xBE00, 0x0000, 0x6936, 0x0119, 0x030E, 0x0B18
};
entry_cnt = ARRAY_SIZE(mcu_patch_code);
@@ -91,8 +91,9 @@ rtl_set_mac_mcu_8125bp_2(struct rtl_hw *hw)
rtl_mac_ocp_write(hw, 0xFC2C, 0x143A);
rtl_mac_ocp_write(hw, 0xFC2E, 0x3FC2);
rtl_mac_ocp_write(hw, 0xFC30, 0x4058);
+ rtl_mac_ocp_write(hw, 0xFC32, 0x22E4);
- rtl_mac_ocp_write(hw, 0xFC48, 0x001F);
+ rtl_mac_ocp_write(hw, 0xFC48, 0x003F);
}
/* ------------------------------------PHY 8125BP--------------------------------------- */
diff --git a/drivers/net/r8169/base/rtl8125cp.c b/drivers/net/r8169/base/rtl8125cp.c
index aabee94f4c..9309b20def 100644
--- a/drivers/net/r8169/base/rtl8125cp.c
+++ b/drivers/net/r8169/base/rtl8125cp.c
@@ -26,13 +26,40 @@ hw_ephy_config_8125cp(struct rtl_hw *hw)
}
}
+static void
+rtl_tgphy_irq_mask_and_ack(struct rtl_hw *hw)
+{
+ if (hw->mcfg == CFG_METHOD_58) {
+ rtl_mdio_direct_write_phy_ocp(hw, 0xA4D2, 0x0000);
+ (void)rtl_mdio_direct_read_phy_ocp(hw, 0xA4D4);
+ }
+}
+
static void
rtl_hw_phy_config_8125cp_1(struct rtl_hw *hw)
{
+ rtl_tgphy_irq_mask_and_ack(hw);
+
rtl_set_eth_phy_ocp_bit(hw, 0xA442, BIT_11);
rtl_clear_and_set_eth_phy_ocp_bit(hw, 0xad0e, 0x007F, 0x000B);
rtl_set_eth_phy_ocp_bit(hw, 0xad78, BIT_4);
+
+ rtl_mdio_direct_write_phy_ocp(hw, 0xB87C, 0x807F);
+ rtl_clear_and_set_eth_phy_ocp_bit(hw, 0xB87E, 0xFF00, 0x5300);
+
+ rtl_mdio_direct_write_phy_ocp(hw, 0xA436, 0x81B8);
+ rtl_mdio_direct_write_phy_ocp(hw, 0xA438, 0x00B4);
+ rtl_mdio_direct_write_phy_ocp(hw, 0xA436, 0x81BA);
+ rtl_mdio_direct_write_phy_ocp(hw, 0xA438, 0x00E4);
+ rtl_mdio_direct_write_phy_ocp(hw, 0xA436, 0x81C5);
+ rtl_mdio_direct_write_phy_ocp(hw, 0xA438, 0x0104);
+ rtl_mdio_direct_write_phy_ocp(hw, 0xA436, 0x81D0);
+ rtl_mdio_direct_write_phy_ocp(hw, 0xA438, 0x054D);
+
+ rtl_set_eth_phy_ocp_bit(hw, 0xA430, BIT_1 | BIT_0);
+ rtl_set_eth_phy_ocp_bit(hw, 0xA442, BIT_7);
+ rtl_clear_eth_phy_ocp_bit(hw, 0xA430, BIT_12);
}
static void
@@ -52,6 +79,15 @@ hw_mac_mcu_config_8125cp(struct rtl_hw *hw)
return;
rtl_hw_disable_mac_mcu_bps(hw);
+
+ /* Get H/W mac mcu patch code version */
+ hw->hw_mcu_patch_code_ver = rtl_get_hw_mcu_patch_code_ver(hw);
+
+ switch (hw->mcfg) {
+ case CFG_METHOD_58:
+ rtl_set_mac_mcu_8125cp_1(hw);
+ break;
+ }
}
static void
diff --git a/drivers/net/r8169/base/rtl8125cp_mcu.c b/drivers/net/r8169/base/rtl8125cp_mcu.c
index e4609f46de..e52027ee23 100644
--- a/drivers/net/r8169/base/rtl8125cp_mcu.c
+++ b/drivers/net/r8169/base/rtl8125cp_mcu.c
@@ -11,7 +11,34 @@
/* ------------------------------------MAC 8125CP------------------------------------- */
-/* No mac mcu patch code */
+void
+rtl_set_mac_mcu_8125cp_1(struct rtl_hw *hw)
+{
+ u16 entry_cnt;
+ static const u16 mcu_patch_code[] = {
+ 0xE010, 0xE014, 0xE016, 0xE018, 0xE01A, 0xE01C, 0xE01E, 0xE020, 0xE022,
+ 0xE024, 0xE026, 0xE028, 0xE02A, 0xE02C, 0xE02E, 0xE030, 0xC104, 0xC202,
+ 0xBA00, 0x2438, 0xD116, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000,
+ 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000,
+ 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000,
+ 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000,
+ 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000,
+ 0xC602, 0xBE00, 0x0000, 0x7023, 0x0019, 0x031A, 0x0E20
+ };
+
+ entry_cnt = ARRAY_SIZE(mcu_patch_code);
+
+ /* Get BIN mac mcu patch code version */
+ hw->bin_mcu_patch_code_ver = rtl_get_bin_mcu_patch_code_ver(mcu_patch_code,
+ entry_cnt);
+
+ if (hw->hw_mcu_patch_code_ver != hw->bin_mcu_patch_code_ver)
+ rtl_write_mac_mcu_ram_code(hw, mcu_patch_code, entry_cnt);
+
+ rtl_mac_ocp_write(hw, 0xFC26, 0x8000);
+ rtl_mac_ocp_write(hw, 0xFC28, 0x2436);
+ rtl_mac_ocp_write(hw, 0xFC48, 0x0001);
+}
/* ------------------------------------PHY 8125CP------------------------------------- */
@@ -28,9 +55,9 @@ static const u16 phy_mcu_ram_code_8125cp_1_1[] = {
0xa436, 0xA016, 0xa438, 0x0020, 0xa436, 0xA012, 0xa438, 0x0000,
0xa436, 0xA014, 0xa438, 0x1800, 0xa438, 0x8010, 0xa438, 0x1800,
0xa438, 0x801b, 0xa438, 0x1800, 0xa438, 0x802b, 0xa438, 0x1800,
- 0xa438, 0x8031, 0xa438, 0x1800, 0xa438, 0x8031, 0xa438, 0x1800,
- 0xa438, 0x8031, 0xa438, 0x1800, 0xa438, 0x8031, 0xa438, 0x1800,
- 0xa438, 0x8031, 0xa438, 0x800a, 0xa438, 0x8530, 0xa438, 0x0c03,
+ 0xa438, 0x8031, 0xa438, 0x1800, 0xa438, 0x8037, 0xa438, 0x1800,
+ 0xa438, 0x8085, 0xa438, 0x1800, 0xa438, 0x8085, 0xa438, 0x1800,
+ 0xa438, 0x8085, 0xa438, 0x800a, 0xa438, 0x8530, 0xa438, 0x0c03,
0xa438, 0x1502, 0xa438, 0x8d10, 0xa438, 0x9503, 0xa438, 0xd700,
0xa438, 0x6050, 0xa438, 0xaa20, 0xa438, 0x1800, 0xa438, 0x0d53,
0xa438, 0xd707, 0xa438, 0x40f6, 0xa438, 0x8901, 0xa438, 0xd704,
@@ -38,26 +65,52 @@ static const u16 phy_mcu_ram_code_8125cp_1_1[] = {
0xa438, 0x1000, 0xa438, 0x0e4d, 0xa438, 0x1000, 0xa438, 0x1277,
0xa438, 0xd704, 0xa438, 0x7e77, 0xa438, 0x1800, 0xa438, 0x0dc5,
0xa438, 0xd700, 0xa438, 0x4063, 0xa438, 0x1800, 0xa438, 0x0d15,
- 0xa438, 0x1800, 0xa438, 0x0d18, 0xa436, 0xA10E, 0xa438, 0xffff,
+ 0xa438, 0x1800, 0xa438, 0x0d18, 0xa438, 0xd700, 0xa438, 0x6063,
+ 0xa438, 0x1800, 0xa438, 0x0ca6, 0xa438, 0x1800, 0xa438, 0x0ca7,
+ 0xa438, 0xd700, 0xa438, 0x6123, 0xa438, 0x1000, 0xa438, 0x1224,
+ 0xa438, 0xcd84, 0xa438, 0xd706, 0xa438, 0x6159, 0xa438, 0xd700,
+ 0xa438, 0x611c, 0xa438, 0xfff9, 0xa438, 0x1000, 0xa438, 0x1224,
+ 0xa438, 0xcd84, 0xa438, 0xd700, 0xa438, 0x605c, 0xa438, 0xfffb,
+ 0xa438, 0xcd8a, 0xa438, 0x0000, 0xa438, 0x0000, 0xa438, 0xd706,
+ 0xa438, 0x6679, 0xa438, 0xd700, 0xa438, 0x663d, 0xa438, 0xd707,
+ 0xa438, 0x5f16, 0xa438, 0xd700, 0xa438, 0x5ed0, 0xa438, 0xd700,
+ 0xa438, 0x6043, 0xa438, 0xfff3, 0xa438, 0x0c3f, 0xa438, 0x0635,
+ 0xa438, 0xa120, 0xa438, 0x8410, 0xa438, 0x800a, 0xa438, 0x8290,
+ 0xa438, 0x8306, 0xa438, 0x8b06, 0xa438, 0x8364, 0xa438, 0xcd87,
+ 0xa438, 0xa502, 0xa438, 0x8502, 0xa438, 0xa220, 0xa438, 0xa310,
+ 0xa438, 0xa340, 0xa438, 0xa00a, 0xa438, 0x0c06, 0xa438, 0x0102,
+ 0xa438, 0xa240, 0xa438, 0xa290, 0xa438, 0x8320, 0xa438, 0xa304,
+ 0xa438, 0xab02, 0xa438, 0xa404, 0xa438, 0xd1c7, 0xa438, 0xd045,
+ 0xa438, 0xd700, 0xa438, 0x605b, 0xa438, 0xfffe, 0xa438, 0xa320,
+ 0xa438, 0x1000, 0xa438, 0x1224, 0xa438, 0xd706, 0xa438, 0x5fb5,
+ 0xa438, 0x0c3f, 0xa438, 0x062d, 0xa438, 0x8120, 0xa438, 0xcd88,
+ 0xa438, 0xd700, 0xa438, 0x605d, 0xa438, 0xfffa, 0xa438, 0xcd8b,
+ 0xa438, 0x1000, 0xa438, 0x1224, 0xa438, 0xd706, 0xa438, 0x5f99,
+ 0xa438, 0x1800, 0xa438, 0x0c9e, 0xa436, 0xA10E, 0xa438, 0xffff,
0xa436, 0xA10C, 0xa438, 0xffff, 0xa436, 0xA10A, 0xa438, 0xffff,
- 0xa436, 0xA108, 0xa438, 0xffff, 0xa436, 0xA106, 0xa438, 0xffff,
+ 0xa436, 0xA108, 0xa438, 0x0c89, 0xa436, 0xA106, 0xa438, 0x0ca2,
0xa436, 0xA104, 0xa438, 0x0d13, 0xa436, 0xA102, 0xa438, 0x0dbf,
- 0xa436, 0xA100, 0xa438, 0x0d52, 0xa436, 0xA110, 0xa438, 0x0007,
+ 0xa436, 0xA100, 0xa438, 0x0d52, 0xa436, 0xA110, 0xa438, 0x001f,
0xa436, 0xb87c, 0xa438, 0x85bd, 0xa436, 0xb87e, 0xa438, 0xaf85,
- 0xa438, 0xd5af, 0xa438, 0x85fb, 0xa438, 0xaf85, 0xa438, 0xfbaf,
- 0xa438, 0x85fb, 0xa438, 0xaf85, 0xa438, 0xfbaf, 0xa438, 0x85fb,
- 0xa438, 0xaf85, 0xa438, 0xfbaf, 0xa438, 0x85fb, 0xa438, 0xac28,
+ 0xa438, 0xd5af, 0xa438, 0x85fb, 0xa438, 0xaf86, 0xa438, 0x24af,
+ 0xa438, 0x8624, 0xa438, 0xaf86, 0xa438, 0x24af, 0xa438, 0x8624,
+ 0xa438, 0xaf86, 0xa438, 0x24af, 0xa438, 0x8624, 0xa438, 0xac28,
0xa438, 0x0bd4, 0xa438, 0x0294, 0xa438, 0xbf85, 0xa438, 0xf802,
0xa438, 0x61c2, 0xa438, 0xae09, 0xa438, 0xd414, 0xa438, 0x50bf,
0xa438, 0x85f8, 0xa438, 0x0261, 0xa438, 0xc2bf, 0xa438, 0x60de,
0xa438, 0x0261, 0xa438, 0xe1bf, 0xa438, 0x80cf, 0xa438, 0xaf24,
- 0xa438, 0xe8f0, 0xa438, 0xac52, 0xa436, 0xb85e, 0xa438, 0x24e5,
- 0xa436, 0xb860, 0xa438, 0xffff, 0xa436, 0xb862, 0xa438, 0xffff,
- 0xa436, 0xb864, 0xa438, 0xffff, 0xa436, 0xb886, 0xa438, 0xffff,
- 0xa436, 0xb888, 0xa438, 0xffff, 0xa436, 0xb88a, 0xa438, 0xffff,
- 0xa436, 0xb88c, 0xa438, 0xffff, 0xa436, 0xb838, 0xa438, 0x0001,
- 0xb820, 0x0010, 0xB82E, 0x0000, 0xa436, 0x8023, 0xa438, 0x0000,
- 0xB820, 0x0000, 0xFFFF, 0xFFFF
+ 0xa438, 0xe8f0, 0xa438, 0xac52, 0xa438, 0xef79, 0xa438, 0xf705,
+ 0xa438, 0xeeff, 0xa438, 0xd200, 0xa438, 0xbf86, 0xa438, 0x22d7,
+ 0xa438, 0xc201, 0xa438, 0x87d4, 0xa438, 0x0001, 0xa438, 0x025a,
+ 0xa438, 0x0abf, 0xa438, 0x8623, 0xa438, 0xd7c2, 0xa438, 0xcc17,
+ 0xa438, 0xd400, 0xa438, 0x0102, 0xa438, 0x5a0a, 0xa438, 0xf605,
+ 0xa438, 0xaf33, 0xa438, 0x78ff, 0xa438, 0xff00, 0xa436, 0xb85e,
+ 0xa438, 0x24e5, 0xa436, 0xb860, 0xa438, 0x3376, 0xa436, 0xb862,
+ 0xa438, 0xffff, 0xa436, 0xb864, 0xa438, 0xffff, 0xa436, 0xb886,
+ 0xa438, 0xffff, 0xa436, 0xb888, 0xa438, 0xffff, 0xa436, 0xb88a,
+ 0xa438, 0xffff, 0xa436, 0xb88c, 0xa438, 0xffff, 0xa436, 0xb838,
+ 0xa438, 0x0003, 0xb820, 0x0010, 0xB82E, 0x0000, 0xa436, 0x8023,
+ 0xa438, 0x0000, 0xB820, 0x0000, 0xFFFF, 0xFFFF
};
static void
diff --git a/drivers/net/r8169/base/rtl8125cp_mcu.h b/drivers/net/r8169/base/rtl8125cp_mcu.h
index 8114dab2b9..1f08151818 100644
--- a/drivers/net/r8169/base/rtl8125cp_mcu.h
+++ b/drivers/net/r8169/base/rtl8125cp_mcu.h
@@ -5,6 +5,7 @@
#ifndef RTL8125CP_MCU_H
#define RTL8125CP_MCU_H
+void rtl_set_mac_mcu_8125cp_1(struct rtl_hw *hw);
void rtl_set_phy_mcu_8125cp_1(struct rtl_hw *hw);
#endif /* RTL8125CP_MCU_H */
diff --git a/drivers/net/r8169/base/rtl8125d.c b/drivers/net/r8169/base/rtl8125d.c
index 29be122e6b..ac500587e0 100644
--- a/drivers/net/r8169/base/rtl8125d.c
+++ b/drivers/net/r8169/base/rtl8125d.c
@@ -256,6 +256,15 @@ rtl_hw_phy_config_8125d_2(struct rtl_hw *hw)
rtl_clear_eth_phy_ocp_bit(hw, 0xA5D4, BIT_5);
rtl_clear_eth_phy_ocp_bit(hw, 0xA654, BIT_11);
+ rtl_clear_eth_phy_ocp_bit(hw, 0xA448, BIT_10);
+ rtl_clear_eth_phy_ocp_bit(hw, 0xA586, BIT_10);
+
+ rtl_clear_eth_phy_ocp_bit(hw, 0xA4E0, BIT_15);
+ rtl_mdio_direct_write_phy_ocp(hw, 0xA436, 0x8155);
+ rtl_clear_and_set_eth_phy_ocp_bit(hw, 0xA438, 0xFF00, 0x0200);
+ rtl_mdio_direct_write_phy_ocp(hw, 0xA436, 0x815C);
+ rtl_clear_and_set_eth_phy_ocp_bit(hw, 0xA438, 0xFF00, 0x0200);
+
rtl_set_eth_phy_ocp_bit(hw, 0xA430, BIT_12 | BIT_0);
rtl_set_eth_phy_ocp_bit(hw, 0xA442, BIT_7);
}
diff --git a/drivers/net/r8169/base/rtl8125d_mcu.c b/drivers/net/r8169/base/rtl8125d_mcu.c
index c99681ad33..304bad2998 100644
--- a/drivers/net/r8169/base/rtl8125d_mcu.c
+++ b/drivers/net/r8169/base/rtl8125d_mcu.c
@@ -17,15 +17,16 @@
void
rtl_set_mac_mcu_8125d_1(struct rtl_hw *hw)
{
- static const u16 mcu_patch_code_8125d_1[] = {
- 0xE002, 0xE006, 0x4166, 0x9CF6, 0xC002, 0xB800, 0x14A4, 0xC102, 0xB900,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ u16 entry_cnt;
+ static const u16 mcu_patch_code[] = {
+ 0xE010, 0xE014, 0xE018, 0xE01A, 0xE01C, 0xE01E, 0xE020, 0xE022, 0xE024,
+ 0xE026, 0xE028, 0xE02A, 0xE02C, 0xE02E, 0xE030, 0xE032, 0x4166, 0x9CF6,
+ 0xC002, 0xB800, 0x14A4, 0xC104, 0xC202, 0xBA00, 0x2378, 0xD116, 0xC602,
+ 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602,
+ 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602,
+ 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602,
+ 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0xC602,
+ 0xBE00, 0x0000, 0xC602, 0xBE00, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
@@ -103,14 +104,24 @@ rtl_set_mac_mcu_8125d_1(struct rtl_hw *hw)
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6938,
- 0x0A18, 0x0217, 0x0D2A
+ 0x0A19, 0x030E, 0x0B2B
};
- rtl_write_mac_mcu_ram_code(hw, mcu_patch_code_8125d_1,
- ARRAY_SIZE(mcu_patch_code_8125d_1));
+ entry_cnt = ARRAY_SIZE(mcu_patch_code);
+
+ /* Get BIN mac mcu patch code version */
+ hw->bin_mcu_patch_code_ver = rtl_get_bin_mcu_patch_code_ver(mcu_patch_code,
+ entry_cnt);
+
+ if (hw->hw_mcu_patch_code_ver != hw->bin_mcu_patch_code_ver)
+ rtl_write_mac_mcu_ram_code(hw, mcu_patch_code, entry_cnt);
+
rtl_mac_ocp_write(hw, 0xFC26, 0x8000);
+
rtl_mac_ocp_write(hw, 0xFC28, 0x14A2);
- rtl_mac_ocp_write(hw, 0xFC48, 0x0001);
+ rtl_mac_ocp_write(hw, 0xFC2A, 0x2376);
+
+ rtl_mac_ocp_write(hw, 0xFC48, 0x0003);
}
void
@@ -825,6 +836,7 @@ static const u16 phy_mcu_ram_code_8125d_1_1[] = {
0xa438, 0x0000, 0xB82E, 0x0000, 0xa436, 0x8023, 0xa438, 0x0000,
0xa436, 0x801E, 0xa438, 0x0031, 0xB820, 0x0000, 0xFFFF, 0xFFFF
};
+
static const u16 phy_mcu_ram_code_8125d_1_2[] = {
0xb892, 0x0000, 0xB88E, 0xC28F, 0xB890, 0x252D, 0xB88E, 0xC290,
0xB890, 0xC924, 0xB88E, 0xC291, 0xB890, 0xC92E, 0xB88E, 0xC292,
@@ -859,6 +871,7 @@ static const u16 phy_mcu_ram_code_8125d_1_2[] = {
0xB890, 0x9F3A, 0xB88E, 0xC2CB, 0xB890, 0x9F3A, 0xB88E, 0xC2CC,
0xB890, 0x4430, 0xFFFF, 0xFFFF
};
+
static const u16 phy_mcu_ram_code_8125d_1_3[] = {
0xa436, 0xacca, 0xa438, 0x0104, 0xa436, 0xaccc, 0xa438, 0x8000,
0xa436, 0xacce, 0xa438, 0xffff, 0xa436, 0xacd0, 0xa438, 0x0fff,
@@ -1045,54 +1058,60 @@ static const u16 phy_mcu_ram_code_8125d_2_1[] = {
0xa436, 0x8023, 0xa438, 0x3801, 0xa436, 0xB82E, 0xa438, 0x0001,
0xb820, 0x0090, 0xa436, 0xA016, 0xa438, 0x0000, 0xa436, 0xA012,
0xa438, 0x0000, 0xa436, 0xA014, 0xa438, 0x1800, 0xa438, 0x8010,
- 0xa438, 0x1800, 0xa438, 0x807e, 0xa438, 0x1800, 0xa438, 0x80be,
- 0xa438, 0x1800, 0xa438, 0x81c8, 0xa438, 0x1800, 0xa438, 0x81c8,
- 0xa438, 0x1800, 0xa438, 0x81c8, 0xa438, 0x1800, 0xa438, 0x81c8,
- 0xa438, 0x1800, 0xa438, 0x81c8, 0xa438, 0xd500, 0xa438, 0xc48d,
+ 0xa438, 0x1800, 0xa438, 0x808e, 0xa438, 0x1800, 0xa438, 0x80d6,
+ 0xa438, 0x1800, 0xa438, 0x81e2, 0xa438, 0x1800, 0xa438, 0x8205,
+ 0xa438, 0x1800, 0xa438, 0x8227, 0xa438, 0x1800, 0xa438, 0x8227,
+ 0xa438, 0x1800, 0xa438, 0x8227, 0xa438, 0xd500, 0xa438, 0xc48d,
0xa438, 0xd504, 0xa438, 0x8d03, 0xa438, 0xd701, 0xa438, 0x4045,
0xa438, 0xad02, 0xa438, 0xd504, 0xa438, 0xd706, 0xa438, 0x2529,
0xa438, 0x8021, 0xa438, 0xd718, 0xa438, 0x607b, 0xa438, 0x40da,
- 0xa438, 0xf01b, 0xa438, 0x461a, 0xa438, 0xf045, 0xa438, 0xd718,
- 0xa438, 0x62fb, 0xa438, 0xbb01, 0xa438, 0xd75e, 0xa438, 0x6271,
+ 0xa438, 0xf019, 0xa438, 0x459a, 0xa438, 0xf03f, 0xa438, 0xd718,
+ 0xa438, 0x62bb, 0xa438, 0xbb01, 0xa438, 0xd75e, 0xa438, 0x6231,
0xa438, 0x0cf0, 0xa438, 0x0c10, 0xa438, 0xd501, 0xa438, 0xce01,
- 0xa438, 0xd70c, 0xa438, 0x6187, 0xa438, 0x0cf0, 0xa438, 0x0470,
- 0xa438, 0x0cf0, 0xa438, 0x0430, 0xa438, 0x0cf0, 0xa438, 0x0410,
- 0xa438, 0xce00, 0xa438, 0xd505, 0xa438, 0x0c0f, 0xa438, 0x0808,
- 0xa438, 0xf002, 0xa438, 0xa4f0, 0xa438, 0xf042, 0xa438, 0xbb02,
- 0xa438, 0xd75e, 0xa438, 0x6271, 0xa438, 0x0cf0, 0xa438, 0x0c20,
- 0xa438, 0xd501, 0xa438, 0xce01, 0xa438, 0xd70c, 0xa438, 0x6187,
- 0xa438, 0x0cf0, 0xa438, 0x0470, 0xa438, 0x0cf0, 0xa438, 0x0430,
- 0xa438, 0x0cf0, 0xa438, 0x0420, 0xa438, 0xce00, 0xa438, 0xd505,
+ 0xa438, 0xd70c, 0xa438, 0x6147, 0xa438, 0x8480, 0xa438, 0x8440,
+ 0xa438, 0x8420, 0xa438, 0xa410, 0xa438, 0xce00, 0xa438, 0xd505,
+ 0xa438, 0x0c0f, 0xa438, 0x0808, 0xa438, 0xf002, 0xa438, 0xa4f0,
+ 0xa438, 0xf03c, 0xa438, 0xbb02, 0xa438, 0xd75e, 0xa438, 0x6231,
+ 0xa438, 0x0cf0, 0xa438, 0x0c20, 0xa438, 0xd501, 0xa438, 0xce01,
+ 0xa438, 0xd70c, 0xa438, 0x6147, 0xa438, 0x8480, 0xa438, 0x8440,
+ 0xa438, 0xa420, 0xa438, 0x8410, 0xa438, 0xce00, 0xa438, 0xd505,
0xa438, 0x0c0f, 0xa438, 0x0804, 0xa438, 0xf002, 0xa438, 0xa4f0,
- 0xa438, 0xf02c, 0xa438, 0xbb04, 0xa438, 0xd75e, 0xa438, 0x6271,
+ 0xa438, 0xf028, 0xa438, 0xbb04, 0xa438, 0xd75e, 0xa438, 0x6231,
0xa438, 0x0cf0, 0xa438, 0x0c40, 0xa438, 0xd501, 0xa438, 0xce01,
- 0xa438, 0xd70c, 0xa438, 0x6187, 0xa438, 0x0cf0, 0xa438, 0x0470,
- 0xa438, 0x0cf0, 0xa438, 0x0450, 0xa438, 0x0cf0, 0xa438, 0x0440,
- 0xa438, 0xce00, 0xa438, 0xd505, 0xa438, 0x0c0f, 0xa438, 0x0802,
- 0xa438, 0xf002, 0xa438, 0xa4f0, 0xa438, 0xf016, 0xa438, 0xbb08,
- 0xa438, 0xd75e, 0xa438, 0x6271, 0xa438, 0x0cf0, 0xa438, 0x0c80,
- 0xa438, 0xd501, 0xa438, 0xce01, 0xa438, 0xd70c, 0xa438, 0x6187,
- 0xa438, 0x0cf0, 0xa438, 0x04b0, 0xa438, 0x0cf0, 0xa438, 0x0490,
- 0xa438, 0x0cf0, 0xa438, 0x0480, 0xa438, 0xce00, 0xa438, 0xd505,
+ 0xa438, 0xd70c, 0xa438, 0x6147, 0xa438, 0x8480, 0xa438, 0xa440,
+ 0xa438, 0x8420, 0xa438, 0x8410, 0xa438, 0xce00, 0xa438, 0xd505,
+ 0xa438, 0x0c0f, 0xa438, 0x0802, 0xa438, 0xf002, 0xa438, 0xa4f0,
+ 0xa438, 0xf014, 0xa438, 0xbb08, 0xa438, 0xd75e, 0xa438, 0x6231,
+ 0xa438, 0x0cf0, 0xa438, 0x0c80, 0xa438, 0xd501, 0xa438, 0xce01,
+ 0xa438, 0xd70c, 0xa438, 0x6147, 0xa438, 0xa480, 0xa438, 0x8440,
+ 0xa438, 0x8420, 0xa438, 0x8410, 0xa438, 0xce00, 0xa438, 0xd505,
0xa438, 0x0c0f, 0xa438, 0x0801, 0xa438, 0xf002, 0xa438, 0xa4f0,
- 0xa438, 0xce00, 0xa438, 0xd500, 0xa438, 0x1800, 0xa438, 0x165a,
- 0xa438, 0xd75e, 0xa438, 0x67b1, 0xa438, 0xd504, 0xa438, 0xd71e,
- 0xa438, 0x65bb, 0xa438, 0x63da, 0xa438, 0x61f9, 0xa438, 0x0cf0,
+ 0xa438, 0xce00, 0xa438, 0xd500, 0xa438, 0x1000, 0xa438, 0x1a8a,
+ 0xa438, 0x1000, 0xa438, 0x1829, 0xa438, 0xd73e, 0xa438, 0x6074,
+ 0xa438, 0xd718, 0xa438, 0x5f2d, 0xa438, 0x1000, 0xa438, 0x81b7,
+ 0xa438, 0x1000, 0xa438, 0x1a8a, 0xa438, 0x1000, 0xa438, 0x1829,
+ 0xa438, 0xd73e, 0xa438, 0x7f74, 0xa438, 0x1000, 0xa438, 0x81ce,
+ 0xa438, 0x1000, 0xa438, 0x1a8a, 0xa438, 0x1000, 0xa438, 0x1829,
+ 0xa438, 0xd718, 0xa438, 0x5f6d, 0xa438, 0x1800, 0xa438, 0x1660,
+ 0xa438, 0xd75e, 0xa438, 0x68b1, 0xa438, 0xd504, 0xa438, 0xd71e,
+ 0xa438, 0x667b, 0xa438, 0x645a, 0xa438, 0x6239, 0xa438, 0x0cf0,
0xa438, 0x0c10, 0xa438, 0xd505, 0xa438, 0x0c0f, 0xa438, 0x0808,
- 0xa438, 0xd501, 0xa438, 0xce01, 0xa438, 0xd70c, 0xa438, 0x6087,
- 0xa438, 0x0cf0, 0xa438, 0x0410, 0xa438, 0xf02c, 0xa438, 0xa4f0,
- 0xa438, 0xf02a, 0xa438, 0x0cf0, 0xa438, 0x0c20, 0xa438, 0xd505,
- 0xa438, 0x0c0f, 0xa438, 0x0804, 0xa438, 0xd501, 0xa438, 0xce01,
- 0xa438, 0xd70c, 0xa438, 0x6087, 0xa438, 0x0cf0, 0xa438, 0x0420,
- 0xa438, 0xf01e, 0xa438, 0xa4f0, 0xa438, 0xf01c, 0xa438, 0x0cf0,
+ 0xa438, 0xd501, 0xa438, 0xce01, 0xa438, 0xd70c, 0xa438, 0x60c7,
+ 0xa438, 0x8480, 0xa438, 0x8440, 0xa438, 0x8420, 0xa438, 0xa410,
+ 0xa438, 0xf032, 0xa438, 0xa4f0, 0xa438, 0xf030, 0xa438, 0x0cf0,
+ 0xa438, 0x0c20, 0xa438, 0xd505, 0xa438, 0x0c0f, 0xa438, 0x0804,
+ 0xa438, 0xd501, 0xa438, 0xce01, 0xa438, 0xd70c, 0xa438, 0x60c7,
+ 0xa438, 0x8480, 0xa438, 0x8440, 0xa438, 0xa420, 0xa438, 0x8410,
+ 0xa438, 0xf022, 0xa438, 0xa4f0, 0xa438, 0xf020, 0xa438, 0x0cf0,
0xa438, 0x0c40, 0xa438, 0xd505, 0xa438, 0x0c0f, 0xa438, 0x0802,
- 0xa438, 0xd501, 0xa438, 0xce01, 0xa438, 0xd70c, 0xa438, 0x6087,
- 0xa438, 0x0cf0, 0xa438, 0x0440, 0xa438, 0xf010, 0xa438, 0xa4f0,
- 0xa438, 0xf00e, 0xa438, 0x0cf0, 0xa438, 0x0c80, 0xa438, 0xd505,
- 0xa438, 0x0c0f, 0xa438, 0x0801, 0xa438, 0xd501, 0xa438, 0xce01,
- 0xa438, 0xd70c, 0xa438, 0x6087, 0xa438, 0x0cf0, 0xa438, 0x0480,
+ 0xa438, 0xd501, 0xa438, 0xce01, 0xa438, 0xd70c, 0xa438, 0x60c7,
+ 0xa438, 0x8480, 0xa438, 0xa440, 0xa438, 0x8420, 0xa438, 0x8410,
+ 0xa438, 0xf012, 0xa438, 0xa4f0, 0xa438, 0xf010, 0xa438, 0x0cf0,
+ 0xa438, 0x0c80, 0xa438, 0xd505, 0xa438, 0x0c0f, 0xa438, 0x0801,
+ 0xa438, 0xd501, 0xa438, 0xce01, 0xa438, 0xd70c, 0xa438, 0x60c7,
+ 0xa438, 0xa480, 0xa438, 0x8440, 0xa438, 0x8420, 0xa438, 0x8410,
0xa438, 0xf002, 0xa438, 0xa4f0, 0xa438, 0x1800, 0xa438, 0x168c,
- 0xa438, 0xd500, 0xa438, 0xd706, 0xa438, 0x2529, 0xa438, 0x80c8,
+ 0xa438, 0xd500, 0xa438, 0xd706, 0xa438, 0x2529, 0xa438, 0x80e0,
0xa438, 0xd718, 0xa438, 0x607b, 0xa438, 0x40da, 0xa438, 0xf00f,
0xa438, 0x431a, 0xa438, 0xf021, 0xa438, 0xd718, 0xa438, 0x617b,
0xa438, 0x1000, 0xa438, 0x1a8a, 0xa438, 0x1000, 0xa438, 0x1b1a,
@@ -1105,18 +1124,18 @@ static const u16 phy_mcu_ram_code_8125d_2_1[] = {
0xa438, 0xf026, 0xa438, 0xf07b, 0xa438, 0x1000, 0xa438, 0x1a8a,
0xa438, 0x1000, 0xa438, 0x1b1a, 0xa438, 0xd718, 0xa438, 0x608e,
0xa438, 0xd73e, 0xa438, 0x5f34, 0xa438, 0xf029, 0xa438, 0xf08f,
- 0xa438, 0x1000, 0xa438, 0x819f, 0xa438, 0x1000, 0xa438, 0x1a8a,
- 0xa438, 0xd73e, 0xa438, 0x7fb4, 0xa438, 0x1000, 0xa438, 0x81b4,
+ 0xa438, 0x1000, 0xa438, 0x81b7, 0xa438, 0x1000, 0xa438, 0x1a8a,
+ 0xa438, 0xd73e, 0xa438, 0x7fb4, 0xa438, 0x1000, 0xa438, 0x81ce,
0xa438, 0x1000, 0xa438, 0x1a8a, 0xa438, 0xd718, 0xa438, 0x5fae,
- 0xa438, 0xf028, 0xa438, 0x1000, 0xa438, 0x819f, 0xa438, 0x1000,
+ 0xa438, 0xf028, 0xa438, 0x1000, 0xa438, 0x81b7, 0xa438, 0x1000,
0xa438, 0x1a8a, 0xa438, 0xd73e, 0xa438, 0x7fb4, 0xa438, 0x1000,
- 0xa438, 0x81b4, 0xa438, 0x1000, 0xa438, 0x1a8a, 0xa438, 0xd718,
- 0xa438, 0x5fae, 0xa438, 0xf039, 0xa438, 0x1000, 0xa438, 0x819f,
+ 0xa438, 0x81ce, 0xa438, 0x1000, 0xa438, 0x1a8a, 0xa438, 0xd718,
+ 0xa438, 0x5fae, 0xa438, 0xf039, 0xa438, 0x1000, 0xa438, 0x81b7,
0xa438, 0x1000, 0xa438, 0x1a8a, 0xa438, 0xd73e, 0xa438, 0x7fb4,
- 0xa438, 0x1000, 0xa438, 0x81b4, 0xa438, 0x1000, 0xa438, 0x1a8a,
+ 0xa438, 0x1000, 0xa438, 0x81ce, 0xa438, 0x1000, 0xa438, 0x1a8a,
0xa438, 0xd718, 0xa438, 0x5fae, 0xa438, 0xf04a, 0xa438, 0x1000,
- 0xa438, 0x819f, 0xa438, 0x1000, 0xa438, 0x1a8a, 0xa438, 0xd73e,
- 0xa438, 0x7fb4, 0xa438, 0x1000, 0xa438, 0x81b4, 0xa438, 0x1000,
+ 0xa438, 0x81b7, 0xa438, 0x1000, 0xa438, 0x1a8a, 0xa438, 0xd73e,
+ 0xa438, 0x7fb4, 0xa438, 0x1000, 0xa438, 0x81ce, 0xa438, 0x1000,
0xa438, 0x1a8a, 0xa438, 0xd718, 0xa438, 0x5fae, 0xa438, 0xf05b,
0xa438, 0xd719, 0xa438, 0x4119, 0xa438, 0xd504, 0xa438, 0xac01,
0xa438, 0xae01, 0xa438, 0xd500, 0xa438, 0x1000, 0xa438, 0x1a78,
@@ -1149,158 +1168,233 @@ static const u16 phy_mcu_ram_code_8125d_2_1[] = {
0xa438, 0xd505, 0xa438, 0xd719, 0xa438, 0x4079, 0xa438, 0xa80f,
0xa438, 0xf003, 0xa438, 0x4058, 0xa438, 0xa801, 0xa438, 0x1800,
0xa438, 0x1736, 0xa438, 0xd73e, 0xa438, 0xd505, 0xa438, 0x3088,
- 0xa438, 0x81a6, 0xa438, 0x6193, 0xa438, 0x6132, 0xa438, 0x60d1,
- 0xa438, 0x3298, 0xa438, 0x81b1, 0xa438, 0xf00a, 0xa438, 0xa808,
- 0xa438, 0xf008, 0xa438, 0xa804, 0xa438, 0xf006, 0xa438, 0xa802,
- 0xa438, 0xf004, 0xa438, 0xa801, 0xa438, 0xf002, 0xa438, 0xa80f,
- 0xa438, 0xd500, 0xa438, 0x0800, 0xa438, 0xd505, 0xa438, 0xd75e,
- 0xa438, 0x6211, 0xa438, 0xd71e, 0xa438, 0x619b, 0xa438, 0x611a,
- 0xa438, 0x6099, 0xa438, 0x0c0f, 0xa438, 0x0808, 0xa438, 0xf009,
- 0xa438, 0x0c0f, 0xa438, 0x0804, 0xa438, 0xf006, 0xa438, 0x0c0f,
- 0xa438, 0x0802, 0xa438, 0xf003, 0xa438, 0x0c0f, 0xa438, 0x0801,
- 0xa438, 0xd500, 0xa438, 0x0800, 0xa436, 0xA026, 0xa438, 0xffff,
- 0xa436, 0xA024, 0xa438, 0xffff, 0xa436, 0xA022, 0xa438, 0xffff,
- 0xa436, 0xA020, 0xa438, 0xffff, 0xa436, 0xA006, 0xa438, 0xffff,
- 0xa436, 0xA004, 0xa438, 0x16ab, 0xa436, 0xA002, 0xa438, 0x1663,
- 0xa436, 0xA000, 0xa438, 0x1608, 0xa436, 0xA008, 0xa438, 0x0700,
- 0xa436, 0xA016, 0xa438, 0x0000, 0xa436, 0xA012, 0xa438, 0x07f8,
- 0xa436, 0xA014, 0xa438, 0xcc01, 0xa438, 0x0000, 0xa438, 0x0000,
+ 0xa438, 0x81c0, 0xa438, 0x61d3, 0xa438, 0x6172, 0xa438, 0x6111,
+ 0xa438, 0x60b0, 0xa438, 0xf00d, 0xa438, 0x3298, 0xa438, 0x81cb,
+ 0xa438, 0xf00a, 0xa438, 0xa808, 0xa438, 0xf008, 0xa438, 0xa804,
+ 0xa438, 0xf006, 0xa438, 0xa802, 0xa438, 0xf004, 0xa438, 0xa801,
+ 0xa438, 0xf002, 0xa438, 0xa80f, 0xa438, 0xd500, 0xa438, 0x0800,
+ 0xa438, 0xd505, 0xa438, 0xd75e, 0xa438, 0x6211, 0xa438, 0xd71e,
+ 0xa438, 0x619b, 0xa438, 0x611a, 0xa438, 0x6099, 0xa438, 0x0c0f,
+ 0xa438, 0x0808, 0xa438, 0xf009, 0xa438, 0x0c0f, 0xa438, 0x0804,
+ 0xa438, 0xf006, 0xa438, 0x0c0f, 0xa438, 0x0802, 0xa438, 0xf003,
+ 0xa438, 0x0c0f, 0xa438, 0x0801, 0xa438, 0xd500, 0xa438, 0x0800,
+ 0xa438, 0xd707, 0xa438, 0x4141, 0xa438, 0xd706, 0xa438, 0x4112,
+ 0xa438, 0xd705, 0xa438, 0x40da, 0xa438, 0xbc01, 0xa438, 0xd028,
+ 0xa438, 0xd1c1, 0xa438, 0x1800, 0xa438, 0x81f0, 0xa438, 0x9c01,
+ 0xa438, 0xd07b, 0xa438, 0xd1c5, 0xa438, 0xbe10, 0xa438, 0xd503,
+ 0xa438, 0xa108, 0xa438, 0xd505, 0xa438, 0x8103, 0xa438, 0xd504,
+ 0xa438, 0xa002, 0xa438, 0xa302, 0xa438, 0xd707, 0xa438, 0x4061,
+ 0xa438, 0xd503, 0xa438, 0x8b01, 0xa438, 0xd500, 0xa438, 0xc48a,
+ 0xa438, 0xd503, 0xa438, 0xcc09, 0xa438, 0xcd58, 0xa438, 0xaf01,
+ 0xa438, 0xd500, 0xa438, 0x1800, 0xa438, 0x134c, 0xa438, 0xd71e,
+ 0xa438, 0x4097, 0xa438, 0xd078, 0xa438, 0xd1aa, 0xa438, 0xf003,
+ 0xa438, 0xd078, 0xa438, 0xd1aa, 0xa438, 0xd707, 0xa438, 0x40a1,
+ 0xa438, 0xd706, 0xa438, 0x4072, 0xa438, 0xd705, 0xa438, 0x621a,
+ 0xa438, 0xd706, 0xa438, 0x6065, 0xa438, 0xcc89, 0xa438, 0xf002,
+ 0xa438, 0xcc8b, 0xa438, 0x1000, 0xa438, 0x0bc8, 0xa438, 0xd705,
+ 0xa438, 0x2ad0, 0xa438, 0x821d, 0xa438, 0xf003, 0xa438, 0x1000,
+ 0xa438, 0x0bce, 0xa438, 0x1000, 0xa438, 0x0bd4, 0xa438, 0x1000,
+ 0xa438, 0x0cfa, 0xa438, 0xd04d, 0xa438, 0xd1c6, 0xa438, 0x1800,
+ 0xa438, 0x13b8, 0xa436, 0xA026, 0xa438, 0xffff, 0xa436, 0xA024,
+ 0xa438, 0xffff, 0xa436, 0xA022, 0xa438, 0xffff, 0xa436, 0xA020,
+ 0xa438, 0x1393, 0xa436, 0xA006, 0xa438, 0x1331, 0xa436, 0xA004,
+ 0xa438, 0x16ab, 0xa436, 0xA002, 0xa438, 0x1663, 0xa436, 0xA000,
+ 0xa438, 0x1608, 0xa436, 0xA008, 0xa438, 0x1f00, 0xa436, 0xA016,
+ 0xa438, 0x0000, 0xa436, 0xA012, 0xa438, 0x07f8, 0xa436, 0xA014,
+ 0xa438, 0xcc01, 0xa438, 0x20f6, 0xa438, 0x0000, 0xa438, 0x0000,
0xa438, 0x0000, 0xa438, 0x0000, 0xa438, 0x0000, 0xa438, 0x0000,
- 0xa438, 0x0000, 0xa436, 0xA152, 0xa438, 0x021c, 0xa436, 0xA154,
- 0xa438, 0x3fff, 0xa436, 0xA156, 0xa438, 0x3fff, 0xa436, 0xA158,
- 0xa438, 0x3fff, 0xa436, 0xA15A, 0xa438, 0x3fff, 0xa436, 0xA15C,
- 0xa438, 0x3fff, 0xa436, 0xA15E, 0xa438, 0x3fff, 0xa436, 0xA160,
- 0xa438, 0x3fff, 0xa436, 0xA150, 0xa438, 0x0001, 0xa436, 0xA016,
- 0xa438, 0x0010, 0xa436, 0xA012, 0xa438, 0x0000, 0xa436, 0xA014,
- 0xa438, 0x1800, 0xa438, 0x8010, 0xa438, 0x1800, 0xa438, 0x8013,
- 0xa438, 0x1800, 0xa438, 0x803a, 0xa438, 0x1800, 0xa438, 0x8045,
- 0xa438, 0x1800, 0xa438, 0x8049, 0xa438, 0x1800, 0xa438, 0x804d,
- 0xa438, 0x1800, 0xa438, 0x8059, 0xa438, 0x1800, 0xa438, 0x805d,
- 0xa438, 0xc2ff, 0xa438, 0x1800, 0xa438, 0x0042, 0xa438, 0x1000,
- 0xa438, 0x02e5, 0xa438, 0x1000, 0xa438, 0x02b4, 0xa438, 0xd701,
- 0xa438, 0x40e3, 0xa438, 0xd700, 0xa438, 0x5f6c, 0xa438, 0x1000,
- 0xa438, 0x8021, 0xa438, 0x1800, 0xa438, 0x0073, 0xa438, 0x1800,
- 0xa438, 0x0084, 0xa438, 0xd701, 0xa438, 0x4061, 0xa438, 0xba0f,
- 0xa438, 0xf004, 0xa438, 0x4060, 0xa438, 0x1000, 0xa438, 0x802a,
- 0xa438, 0xba10, 0xa438, 0x0800, 0xa438, 0xd700, 0xa438, 0x60bb,
- 0xa438, 0x611c, 0xa438, 0x0c0f, 0xa438, 0x1a01, 0xa438, 0xf00a,
- 0xa438, 0x60fc, 0xa438, 0x0c0f, 0xa438, 0x1a02, 0xa438, 0xf006,
- 0xa438, 0x0c0f, 0xa438, 0x1a04, 0xa438, 0xf003, 0xa438, 0x0c0f,
- 0xa438, 0x1a08, 0xa438, 0x0800, 0xa438, 0x0c0f, 0xa438, 0x0504,
- 0xa438, 0xad02, 0xa438, 0x1000, 0xa438, 0x02c0, 0xa438, 0xd700,
- 0xa438, 0x5fac, 0xa438, 0x1000, 0xa438, 0x8021, 0xa438, 0x1800,
- 0xa438, 0x0139, 0xa438, 0x9a1f, 0xa438, 0x8bf0, 0xa438, 0x1800,
- 0xa438, 0x02df, 0xa438, 0x9a1f, 0xa438, 0x9910, 0xa438, 0x1800,
- 0xa438, 0x02d7, 0xa438, 0xad02, 0xa438, 0x8d01, 0xa438, 0x9a1f,
+ 0xa436, 0xA152, 0xa438, 0x021c, 0xa436, 0xA154, 0xa438, 0x2100,
+ 0xa436, 0xA156, 0xa438, 0x3fff, 0xa436, 0xA158, 0xa438, 0x3fff,
+ 0xa436, 0xA15A, 0xa438, 0x3fff, 0xa436, 0xA15C, 0xa438, 0x3fff,
+ 0xa436, 0xA15E, 0xa438, 0x3fff, 0xa436, 0xA160, 0xa438, 0x3fff,
+ 0xa436, 0xA150, 0xa438, 0x0003, 0xa436, 0xA016, 0xa438, 0x0010,
+ 0xa436, 0xA012, 0xa438, 0x0000, 0xa436, 0xA014, 0xa438, 0x1800,
+ 0xa438, 0x8010, 0xa438, 0x1800, 0xa438, 0x8014, 0xa438, 0x1800,
+ 0xa438, 0x803d, 0xa438, 0x1800, 0xa438, 0x804a, 0xa438, 0x1800,
+ 0xa438, 0x804e, 0xa438, 0x1800, 0xa438, 0x8052, 0xa438, 0x1800,
+ 0xa438, 0x8092, 0xa438, 0x1800, 0xa438, 0x80a0, 0xa438, 0xc2ff,
+ 0xa438, 0x9a40, 0xa438, 0x1800, 0xa438, 0x0042, 0xa438, 0x1000,
+ 0xa438, 0x02e5, 0xa438, 0xba20, 0xa438, 0x1000, 0xa438, 0x02b4,
+ 0xa438, 0xd701, 0xa438, 0x4103, 0xa438, 0xd700, 0xa438, 0x5f6c,
+ 0xa438, 0x1000, 0xa438, 0x8024, 0xa438, 0x9a20, 0xa438, 0x1800,
+ 0xa438, 0x0073, 0xa438, 0x1800, 0xa438, 0x0084, 0xa438, 0xd701,
+ 0xa438, 0x4061, 0xa438, 0xba0f, 0xa438, 0xf004, 0xa438, 0x4060,
+ 0xa438, 0x1000, 0xa438, 0x802d, 0xa438, 0xba10, 0xa438, 0x0800,
+ 0xa438, 0xd700, 0xa438, 0x60bb, 0xa438, 0x611c, 0xa438, 0x0c0f,
+ 0xa438, 0x1a01, 0xa438, 0xf00a, 0xa438, 0x60fc, 0xa438, 0x0c0f,
+ 0xa438, 0x1a02, 0xa438, 0xf006, 0xa438, 0x0c0f, 0xa438, 0x1a04,
+ 0xa438, 0xf003, 0xa438, 0x0c0f, 0xa438, 0x1a08, 0xa438, 0x0800,
+ 0xa438, 0x0c0f, 0xa438, 0x0504, 0xa438, 0xad02, 0xa438, 0xd73e,
+ 0xa438, 0x40f6, 0xa438, 0x1000, 0xa438, 0x02c0, 0xa438, 0xd700,
+ 0xa438, 0x5fac, 0xa438, 0x1000, 0xa438, 0x8024, 0xa438, 0x1800,
+ 0xa438, 0x0139, 0xa438, 0x9a3f, 0xa438, 0x8bf0, 0xa438, 0x1800,
+ 0xa438, 0x02df, 0xa438, 0x9a3f, 0xa438, 0x9910, 0xa438, 0x1800,
+ 0xa438, 0x02d7, 0xa438, 0xad02, 0xa438, 0x8d01, 0xa438, 0x9a7f,
0xa438, 0x9910, 0xa438, 0x9860, 0xa438, 0xcb00, 0xa438, 0xd501,
- 0xa438, 0xce01, 0xa438, 0x85f0, 0xa438, 0xd500, 0xa438, 0x1800,
- 0xa438, 0x015c, 0xa438, 0x8580, 0xa438, 0x8d02, 0xa438, 0x1800,
- 0xa438, 0x018f, 0xa438, 0x0c0f, 0xa438, 0x0503, 0xa438, 0xad02,
- 0xa438, 0x1800, 0xa438, 0x00dd, 0xa436, 0xA08E, 0xa438, 0x00db,
- 0xa436, 0xA08C, 0xa438, 0x018e, 0xa436, 0xA08A, 0xa438, 0x015a,
- 0xa436, 0xA088, 0xa438, 0x02d6, 0xa436, 0xA086, 0xa438, 0x02de,
- 0xa436, 0xA084, 0xa438, 0x0137, 0xa436, 0xA082, 0xa438, 0x0071,
- 0xa436, 0xA080, 0xa438, 0x0041, 0xa436, 0xA090, 0xa438, 0x00ff,
- 0xa436, 0xA016, 0xa438, 0x0020, 0xa436, 0xA012, 0xa438, 0x0000,
- 0xa436, 0xA014, 0xa438, 0x1800, 0xa438, 0x8010, 0xa438, 0x1800,
- 0xa438, 0x801d, 0xa438, 0x1800, 0xa438, 0x808a, 0xa438, 0x1800,
- 0xa438, 0x80a1, 0xa438, 0x1800, 0xa438, 0x80b4, 0xa438, 0x1800,
- 0xa438, 0x8104, 0xa438, 0x1800, 0xa438, 0x810b, 0xa438, 0x1800,
- 0xa438, 0x810f, 0xa438, 0x8980, 0xa438, 0xd702, 0xa438, 0x6126,
- 0xa438, 0xd704, 0xa438, 0x4063, 0xa438, 0xd702, 0xa438, 0x6060,
- 0xa438, 0xd702, 0xa438, 0x6077, 0xa438, 0x1800, 0xa438, 0x0c29,
- 0xa438, 0x1800, 0xa438, 0x0c2b, 0xa438, 0x1000, 0xa438, 0x115a,
- 0xa438, 0xd71f, 0xa438, 0x5fb4, 0xa438, 0xd702, 0xa438, 0x6c46,
- 0xa438, 0xd704, 0xa438, 0x4063, 0xa438, 0xd702, 0xa438, 0x6060,
- 0xa438, 0xd702, 0xa438, 0x6b97, 0xa438, 0xa340, 0xa438, 0x0c06,
- 0xa438, 0x0102, 0xa438, 0xce01, 0xa438, 0x1000, 0xa438, 0x117a,
- 0xa438, 0xa240, 0xa438, 0xa902, 0xa438, 0xa204, 0xa438, 0xa280,
- 0xa438, 0xa364, 0xa438, 0xab02, 0xa438, 0x8380, 0xa438, 0xa00a,
- 0xa438, 0xcd8d, 0xa438, 0x1000, 0xa438, 0x115a, 0xa438, 0xd706,
- 0xa438, 0x5fb5, 0xa438, 0xb920, 0xa438, 0x1000, 0xa438, 0x115a,
- 0xa438, 0xd71f, 0xa438, 0x7fb4, 0xa438, 0x9920, 0xa438, 0x1000,
- 0xa438, 0x115a, 0xa438, 0xd71f, 0xa438, 0x6065, 0xa438, 0x7c74,
- 0xa438, 0xfffb, 0xa438, 0xb820, 0xa438, 0x1000, 0xa438, 0x115a,
- 0xa438, 0xd71f, 0xa438, 0x7fa5, 0xa438, 0x9820, 0xa438, 0xa410,
- 0xa438, 0x8902, 0xa438, 0xa120, 0xa438, 0xa380, 0xa438, 0xce02,
- 0xa438, 0x1000, 0xa438, 0x117a, 0xa438, 0x8280, 0xa438, 0xa324,
- 0xa438, 0xab02, 0xa438, 0xa00a, 0xa438, 0x8118, 0xa438, 0x863f,
- 0xa438, 0x87fb, 0xa438, 0xcd8e, 0xa438, 0xd193, 0xa438, 0xd047,
- 0xa438, 0x1000, 0xa438, 0x115a, 0xa438, 0x1000, 0xa438, 0x115f,
- 0xa438, 0xd700, 0xa438, 0x5f7b, 0xa438, 0xa280, 0xa438, 0x1000,
- 0xa438, 0x115a, 0xa438, 0x1000, 0xa438, 0x115f, 0xa438, 0xd706,
- 0xa438, 0x5f78, 0xa438, 0xa210, 0xa438, 0xd700, 0xa438, 0x6083,
- 0xa438, 0xd101, 0xa438, 0xd047, 0xa438, 0xf003, 0xa438, 0xd160,
- 0xa438, 0xd04b, 0xa438, 0x1000, 0xa438, 0x115a, 0xa438, 0x1000,
- 0xa438, 0x115f, 0xa438, 0xd700, 0xa438, 0x5f7b, 0xa438, 0x1000,
- 0xa438, 0x115a, 0xa438, 0x1000, 0xa438, 0x115f, 0xa438, 0xd706,
- 0xa438, 0x5f79, 0xa438, 0x8120, 0xa438, 0xbb20, 0xa438, 0x1800,
- 0xa438, 0x0c8b, 0xa438, 0x0c03, 0xa438, 0x1502, 0xa438, 0x8f80,
- 0xa438, 0x9503, 0xa438, 0x1800, 0xa438, 0x0c3c, 0xa438, 0x0c03,
- 0xa438, 0x1502, 0xa438, 0x8f80, 0xa438, 0x9503, 0xa438, 0xd704,
- 0xa438, 0x6192, 0xa438, 0xd702, 0xa438, 0x4116, 0xa438, 0xce04,
- 0xa438, 0x1000, 0xa438, 0x117a, 0xa438, 0x0c03, 0xa438, 0x1502,
- 0xa438, 0x8f40, 0xa438, 0x9503, 0xa438, 0x1800, 0xa438, 0x0b3d,
- 0xa438, 0x0c03, 0xa438, 0x1502, 0xa438, 0xaf40, 0xa438, 0x9503,
- 0xa438, 0x1800, 0xa438, 0x0b48, 0xa438, 0xd704, 0xa438, 0x6192,
- 0xa438, 0xd702, 0xa438, 0x4116, 0xa438, 0xce04, 0xa438, 0x1000,
- 0xa438, 0x117a, 0xa438, 0x0c03, 0xa438, 0x1502, 0xa438, 0x8f40,
- 0xa438, 0x9503, 0xa438, 0x1800, 0xa438, 0x1269, 0xa438, 0x0c03,
- 0xa438, 0x1502, 0xa438, 0xaf40, 0xa438, 0x9503, 0xa438, 0x1800,
- 0xa438, 0x1274, 0xa438, 0x0c03, 0xa438, 0x1502, 0xa438, 0xa608,
- 0xa438, 0xc700, 0xa438, 0x9503, 0xa438, 0xce54, 0xa438, 0x1000,
- 0xa438, 0x117a, 0xa438, 0xa290, 0xa438, 0xa304, 0xa438, 0xab02,
- 0xa438, 0xd700, 0xa438, 0x6050, 0xa438, 0xab04, 0xa438, 0x0c38,
- 0xa438, 0x0608, 0xa438, 0xaa0b, 0xa438, 0xd702, 0xa438, 0x0c03,
- 0xa438, 0x1502, 0xa438, 0x8d01, 0xa438, 0xae40, 0xa438, 0x4044,
- 0xa438, 0x8e20, 0xa438, 0x9503, 0xa438, 0x0c03, 0xa438, 0x1502,
- 0xa438, 0x8c20, 0xa438, 0x9503, 0xa438, 0xd700, 0xa438, 0x6078,
- 0xa438, 0xd700, 0xa438, 0x609a, 0xa438, 0xd109, 0xa438, 0xd074,
- 0xa438, 0xf003, 0xa438, 0xd109, 0xa438, 0xd075, 0xa438, 0x1000,
- 0xa438, 0x115a, 0xa438, 0xd704, 0xa438, 0x6252, 0xa438, 0xd702,
- 0xa438, 0x4116, 0xa438, 0xce54, 0xa438, 0x1000, 0xa438, 0x117a,
+ 0xa438, 0xce01, 0xa438, 0x85f0, 0xa438, 0xd500, 0xa438, 0x0c0f,
+ 0xa438, 0x0505, 0xa438, 0xb820, 0xa438, 0xc000, 0xa438, 0xc100,
+ 0xa438, 0xc628, 0xa438, 0xc700, 0xa438, 0xc801, 0xa438, 0xc91e,
+ 0xa438, 0xc001, 0xa438, 0x4019, 0xa438, 0xc6f8, 0xa438, 0xc702,
+ 0xa438, 0xc809, 0xa438, 0xc940, 0xa438, 0xc002, 0xa438, 0x4019,
+ 0xa438, 0x1000, 0xa438, 0x02cc, 0xa438, 0xd700, 0xa438, 0x5fa7,
+ 0xa438, 0xc010, 0xa438, 0x1000, 0xa438, 0x02cc, 0xa438, 0xd700,
+ 0xa438, 0x5fa0, 0xa438, 0xc020, 0xa438, 0x1000, 0xa438, 0x02cc,
+ 0xa438, 0xd700, 0xa438, 0x5fa1, 0xa438, 0x0c0f, 0xa438, 0x0506,
+ 0xa438, 0xb840, 0xa438, 0xc6ca, 0xa438, 0xc701, 0xa438, 0xc809,
+ 0xa438, 0xc900, 0xa438, 0xc001, 0xa438, 0x4019, 0xa438, 0xc6b8,
+ 0xa438, 0xc700, 0xa438, 0xc800, 0xa438, 0xc900, 0xa438, 0xc008,
+ 0xa438, 0x4019, 0xa438, 0x1000, 0xa438, 0x02cc, 0xa438, 0xd700,
+ 0xa438, 0x5fa5, 0xa438, 0x8580, 0xa438, 0x8d02, 0xa438, 0x1800,
+ 0xa438, 0x018f, 0xa438, 0x1000, 0xa438, 0x02cc, 0xa438, 0xd700,
+ 0xa438, 0x6124, 0xa438, 0xd73e, 0xa438, 0x5f75, 0xa438, 0xd700,
+ 0xa438, 0x5f2c, 0xa438, 0x1000, 0xa438, 0x8024, 0xa438, 0x9a20,
+ 0xa438, 0xfff5, 0xa438, 0x1800, 0xa438, 0x00b8, 0xa438, 0x0c0f,
+ 0xa438, 0x0503, 0xa438, 0xad02, 0xa438, 0x68c8, 0xa438, 0x1000,
+ 0xa438, 0x02c0, 0xa438, 0xd700, 0xa438, 0x6848, 0xa438, 0x604d,
+ 0xa438, 0xfffb, 0xa438, 0xd73e, 0xa438, 0x6082, 0xa438, 0x1000,
+ 0xa438, 0x02a1, 0xa438, 0x8a0f, 0xa438, 0x1000, 0xa438, 0x02c0,
+ 0xa438, 0xd700, 0xa438, 0x5fae, 0xa438, 0x1000, 0xa438, 0x02de,
+ 0xa438, 0x1000, 0xa438, 0x02c0, 0xa438, 0xd700, 0xa438, 0x5faf,
+ 0xa438, 0x8d01, 0xa438, 0x8b0f, 0xa438, 0x1000, 0xa438, 0x02c0,
+ 0xa438, 0xd700, 0xa438, 0x2a58, 0xa438, 0x80c5, 0xa438, 0x2a5b,
+ 0xa438, 0x80cd, 0xa438, 0x2b53, 0xa438, 0x80d9, 0xa438, 0xfff7,
+ 0xa438, 0x1000, 0xa438, 0x022a, 0xa438, 0x1000, 0xa438, 0x02e5,
+ 0xa438, 0xba40, 0xa438, 0x1000, 0xa438, 0x02fd, 0xa438, 0xf018,
+ 0xa438, 0x1000, 0xa438, 0x022a, 0xa438, 0x1000, 0xa438, 0x02e5,
+ 0xa438, 0xba40, 0xa438, 0x1000, 0xa438, 0x02c0, 0xa438, 0xd700,
+ 0xa438, 0x5faa, 0xa438, 0x1000, 0xa438, 0x02fd, 0xa438, 0xf00c,
+ 0xa438, 0x1000, 0xa438, 0x022a, 0xa438, 0x1000, 0xa438, 0x02fd,
+ 0xa438, 0x1000, 0xa438, 0x02c0, 0xa438, 0xd700, 0xa438, 0x5fab,
+ 0xa438, 0x1000, 0xa438, 0x02e5, 0xa438, 0xba40, 0xa438, 0x1000,
+ 0xa438, 0x02c0, 0xa438, 0xd700, 0xa438, 0x6088, 0xa438, 0xfffc,
+ 0xa438, 0x1800, 0xa438, 0x0120, 0xa438, 0x1800, 0xa438, 0x0122,
+ 0xa436, 0xA08E, 0xa438, 0x00db, 0xa436, 0xA08C, 0xa438, 0x00b4,
+ 0xa436, 0xA08A, 0xa438, 0x015a, 0xa436, 0xA088, 0xa438, 0x02d6,
+ 0xa436, 0xA086, 0xa438, 0x02de, 0xa436, 0xA084, 0xa438, 0x0137,
+ 0xa436, 0xA082, 0xa438, 0x0071, 0xa436, 0xA080, 0xa438, 0x0041,
+ 0xa436, 0xA090, 0xa438, 0x00ff, 0xa436, 0xA016, 0xa438, 0x0020,
+ 0xa436, 0xA012, 0xa438, 0x0000, 0xa436, 0xA014, 0xa438, 0x1800,
+ 0xa438, 0x8010, 0xa438, 0x1800, 0xa438, 0x8019, 0xa438, 0x1800,
+ 0xa438, 0x809e, 0xa438, 0x1800, 0xa438, 0x80b9, 0xa438, 0x1800,
+ 0xa438, 0x80cc, 0xa438, 0x1800, 0xa438, 0x811c, 0xa438, 0x1800,
+ 0xa438, 0x8123, 0xa438, 0x1800, 0xa438, 0x812f, 0xa438, 0xd71f,
+ 0xa438, 0x6080, 0xa438, 0xd141, 0xa438, 0xd043, 0xa438, 0xf003,
+ 0xa438, 0xd101, 0xa438, 0xd040, 0xa438, 0x1800, 0xa438, 0x0ac8,
+ 0xa438, 0x8980, 0xa438, 0xd702, 0xa438, 0x6126, 0xa438, 0xd704,
+ 0xa438, 0x4063, 0xa438, 0xd702, 0xa438, 0x6060, 0xa438, 0xd702,
+ 0xa438, 0x6077, 0xa438, 0x8410, 0xa438, 0xf002, 0xa438, 0xa410,
+ 0xa438, 0xce02, 0xa438, 0x1000, 0xa438, 0x117a, 0xa438, 0xcd81,
+ 0xa438, 0xd412, 0xa438, 0x1000, 0xa438, 0x1125, 0xa438, 0xcd82,
+ 0xa438, 0xd40e, 0xa438, 0x1000, 0xa438, 0x1125, 0xa438, 0xcd83,
+ 0xa438, 0x1000, 0xa438, 0x115a, 0xa438, 0xd71f, 0xa438, 0x5fb4,
+ 0xa438, 0xd702, 0xa438, 0x6c46, 0xa438, 0xd704, 0xa438, 0x4063,
+ 0xa438, 0xd702, 0xa438, 0x6060, 0xa438, 0xd702, 0xa438, 0x6b97,
+ 0xa438, 0xa340, 0xa438, 0x0c06, 0xa438, 0x0102, 0xa438, 0xce01,
+ 0xa438, 0x1000, 0xa438, 0x117a, 0xa438, 0xa240, 0xa438, 0xa902,
+ 0xa438, 0xa204, 0xa438, 0xa280, 0xa438, 0xa364, 0xa438, 0xab02,
+ 0xa438, 0x8380, 0xa438, 0xa00a, 0xa438, 0xcd8d, 0xa438, 0x1000,
+ 0xa438, 0x115a, 0xa438, 0xd706, 0xa438, 0x5fb5, 0xa438, 0xb920,
+ 0xa438, 0x1000, 0xa438, 0x115a, 0xa438, 0xd71f, 0xa438, 0x7fb4,
+ 0xa438, 0x9920, 0xa438, 0x1000, 0xa438, 0x115a, 0xa438, 0xd71f,
+ 0xa438, 0x6065, 0xa438, 0x7c74, 0xa438, 0xfffb, 0xa438, 0xb820,
+ 0xa438, 0x1000, 0xa438, 0x115a, 0xa438, 0xd71f, 0xa438, 0x7fa5,
+ 0xa438, 0x9820, 0xa438, 0xa410, 0xa438, 0x8902, 0xa438, 0xa120,
+ 0xa438, 0xa380, 0xa438, 0xce02, 0xa438, 0x1000, 0xa438, 0x117a,
+ 0xa438, 0x8280, 0xa438, 0xa324, 0xa438, 0xab02, 0xa438, 0xa00a,
+ 0xa438, 0x8118, 0xa438, 0x863f, 0xa438, 0x87fb, 0xa438, 0xcd8e,
+ 0xa438, 0xd193, 0xa438, 0xd047, 0xa438, 0x1000, 0xa438, 0x115a,
+ 0xa438, 0x1000, 0xa438, 0x115f, 0xa438, 0xd700, 0xa438, 0x5f7b,
+ 0xa438, 0xa280, 0xa438, 0x1000, 0xa438, 0x115a, 0xa438, 0x1000,
+ 0xa438, 0x115f, 0xa438, 0xd706, 0xa438, 0x5f78, 0xa438, 0xa210,
+ 0xa438, 0xd700, 0xa438, 0x6083, 0xa438, 0xd101, 0xa438, 0xd047,
+ 0xa438, 0xf003, 0xa438, 0xd160, 0xa438, 0xd04b, 0xa438, 0x1000,
+ 0xa438, 0x115a, 0xa438, 0x1000, 0xa438, 0x115f, 0xa438, 0xd700,
+ 0xa438, 0x5f7b, 0xa438, 0x1000, 0xa438, 0x115a, 0xa438, 0x1000,
+ 0xa438, 0x115f, 0xa438, 0xd706, 0xa438, 0x5f79, 0xa438, 0x8120,
+ 0xa438, 0xbb20, 0xa438, 0x1800, 0xa438, 0x0c8b, 0xa438, 0x0c03,
+ 0xa438, 0x1502, 0xa438, 0x8f80, 0xa438, 0x9503, 0xa438, 0x1800,
+ 0xa438, 0x0c3c, 0xa438, 0x0c03, 0xa438, 0x1502, 0xa438, 0xa608,
+ 0xa438, 0x9503, 0xa438, 0x0c03, 0xa438, 0x1502, 0xa438, 0x8f80,
+ 0xa438, 0x9503, 0xa438, 0xd704, 0xa438, 0x6192, 0xa438, 0xd702,
+ 0xa438, 0x4116, 0xa438, 0xce04, 0xa438, 0x1000, 0xa438, 0x117a,
0xa438, 0x0c03, 0xa438, 0x1502, 0xa438, 0x8f40, 0xa438, 0x9503,
- 0xa438, 0xa00a, 0xa438, 0xd704, 0xa438, 0x41e7, 0xa438, 0x0c03,
- 0xa438, 0x1502, 0xa438, 0xa570, 0xa438, 0x9503, 0xa438, 0xf00a,
- 0xa438, 0x0c03, 0xa438, 0x1502, 0xa438, 0xaf40, 0xa438, 0x9503,
- 0xa438, 0x800a, 0xa438, 0x0c03, 0xa438, 0x1502, 0xa438, 0x8570,
- 0xa438, 0x9503, 0xa438, 0xd704, 0xa438, 0x60f3, 0xa438, 0xd71f,
- 0xa438, 0x60ee, 0xa438, 0xd700, 0xa438, 0x5bbe, 0xa438, 0x1800,
- 0xa438, 0x0e71, 0xa438, 0x1800, 0xa438, 0x0e7c, 0xa438, 0x1800,
- 0xa438, 0x0e7e, 0xa438, 0x0c03, 0xa438, 0x1502, 0xa438, 0xaf80,
- 0xa438, 0x9503, 0xa438, 0xcd62, 0xa438, 0x1800, 0xa438, 0x0bd2,
- 0xa438, 0x800a, 0xa438, 0x8306, 0xa438, 0x1800, 0xa438, 0x0cb6,
- 0xa438, 0x0c03, 0xa438, 0x1502, 0xa438, 0x8608, 0xa438, 0x8c20,
- 0xa438, 0x9503, 0xa438, 0x1800, 0xa438, 0x0eb9, 0xa436, 0xA10E,
- 0xa438, 0x0eb5, 0xa436, 0xA10C, 0xa438, 0x0cb5, 0xa436, 0xA10A,
+ 0xa438, 0x1800, 0xa438, 0x0b3d, 0xa438, 0x0c03, 0xa438, 0x1502,
+ 0xa438, 0xaf40, 0xa438, 0x9503, 0xa438, 0x1800, 0xa438, 0x0b48,
+ 0xa438, 0xd704, 0xa438, 0x6192, 0xa438, 0xd702, 0xa438, 0x4116,
+ 0xa438, 0xce04, 0xa438, 0x1000, 0xa438, 0x117a, 0xa438, 0x0c03,
+ 0xa438, 0x1502, 0xa438, 0x8f40, 0xa438, 0x9503, 0xa438, 0x1800,
+ 0xa438, 0x1269, 0xa438, 0x0c03, 0xa438, 0x1502, 0xa438, 0xaf40,
+ 0xa438, 0x9503, 0xa438, 0x1800, 0xa438, 0x1274, 0xa438, 0x0c03,
+ 0xa438, 0x1502, 0xa438, 0xa608, 0xa438, 0xc700, 0xa438, 0x9503,
+ 0xa438, 0xce54, 0xa438, 0x1000, 0xa438, 0x117a, 0xa438, 0xa290,
+ 0xa438, 0xa304, 0xa438, 0xab02, 0xa438, 0xd700, 0xa438, 0x6050,
+ 0xa438, 0xab04, 0xa438, 0x0c38, 0xa438, 0x0608, 0xa438, 0xaa0b,
+ 0xa438, 0xd702, 0xa438, 0x0c03, 0xa438, 0x1502, 0xa438, 0x8d01,
+ 0xa438, 0xae40, 0xa438, 0x4044, 0xa438, 0x8e20, 0xa438, 0x9503,
+ 0xa438, 0x0c03, 0xa438, 0x1502, 0xa438, 0x8c20, 0xa438, 0x9503,
+ 0xa438, 0xd700, 0xa438, 0x6078, 0xa438, 0xd700, 0xa438, 0x609a,
+ 0xa438, 0xd109, 0xa438, 0xd074, 0xa438, 0xf003, 0xa438, 0xd109,
+ 0xa438, 0xd075, 0xa438, 0x1000, 0xa438, 0x115a, 0xa438, 0xd704,
+ 0xa438, 0x6252, 0xa438, 0xd702, 0xa438, 0x4116, 0xa438, 0xce54,
+ 0xa438, 0x1000, 0xa438, 0x117a, 0xa438, 0x0c03, 0xa438, 0x1502,
+ 0xa438, 0x8f40, 0xa438, 0x9503, 0xa438, 0xa00a, 0xa438, 0xd704,
+ 0xa438, 0x41e7, 0xa438, 0x0c03, 0xa438, 0x1502, 0xa438, 0xa570,
+ 0xa438, 0x9503, 0xa438, 0xf00a, 0xa438, 0x0c03, 0xa438, 0x1502,
+ 0xa438, 0xaf40, 0xa438, 0x9503, 0xa438, 0x800a, 0xa438, 0x0c03,
+ 0xa438, 0x1502, 0xa438, 0x8570, 0xa438, 0x9503, 0xa438, 0xd704,
+ 0xa438, 0x60f3, 0xa438, 0xd71f, 0xa438, 0x60ee, 0xa438, 0xd700,
+ 0xa438, 0x5bbe, 0xa438, 0x1800, 0xa438, 0x0e71, 0xa438, 0x1800,
+ 0xa438, 0x0e7c, 0xa438, 0x1800, 0xa438, 0x0e7e, 0xa438, 0x0c03,
+ 0xa438, 0x1502, 0xa438, 0xaf80, 0xa438, 0x9503, 0xa438, 0xcd62,
+ 0xa438, 0x1800, 0xa438, 0x0bd2, 0xa438, 0x800a, 0xa438, 0x8530,
+ 0xa438, 0x0c03, 0xa438, 0x1502, 0xa438, 0x8d10, 0xa438, 0x9503,
+ 0xa438, 0xd700, 0xa438, 0x6050, 0xa438, 0xaa20, 0xa438, 0x8306,
+ 0xa438, 0x1800, 0xa438, 0x0cb6, 0xa438, 0xd105, 0xa438, 0xd040,
+ 0xa438, 0x1000, 0xa438, 0x0d8f, 0xa438, 0xd700, 0xa438, 0x5fbb,
+ 0xa438, 0x0c03, 0xa438, 0x1502, 0xa438, 0x8608, 0xa438, 0x9503,
+ 0xa438, 0x1000, 0xa438, 0x0d8f, 0xa438, 0xd704, 0xa438, 0x7fb6,
+ 0xa438, 0x0c03, 0xa438, 0x1502, 0xa438, 0x87f0, 0xa438, 0x9503,
+ 0xa438, 0xce88, 0xa438, 0x1000, 0xa438, 0x117a, 0xa438, 0x0c03,
+ 0xa438, 0x1502, 0xa438, 0xa608, 0xa438, 0x9503, 0xa438, 0xd73e,
+ 0xa438, 0x60a5, 0xa438, 0xd705, 0xa438, 0x4071, 0xa438, 0x1800,
+ 0xa438, 0x0d65, 0xa438, 0x1800, 0xa438, 0x0d6f, 0xa436, 0xA10E,
+ 0xa438, 0x0d58, 0xa436, 0xA10C, 0xa438, 0x0cb5, 0xa436, 0xA10A,
0xa438, 0x0bd1, 0xa436, 0xA108, 0xa438, 0x0e37, 0xa436, 0xA106,
0xa438, 0x1267, 0xa436, 0xA104, 0xa438, 0x0b3b, 0xa436, 0xA102,
- 0xa438, 0x0c38, 0xa436, 0xA100, 0xa438, 0x0c24, 0xa436, 0xA110,
- 0xa438, 0x00ff, 0xa436, 0xb87c, 0xa438, 0x85bf, 0xa436, 0xb87e,
- 0xa438, 0xaf85, 0xa438, 0xd7af, 0xa438, 0x85fb, 0xa438, 0xaf86,
- 0xa438, 0x10af, 0xa438, 0x8638, 0xa438, 0xaf86, 0xa438, 0x47af,
- 0xa438, 0x8647, 0xa438, 0xaf86, 0xa438, 0x47af, 0xa438, 0x8647,
- 0xa438, 0xbf85, 0xa438, 0xf802, 0xa438, 0x627f, 0xa438, 0xbf61,
- 0xa438, 0xc702, 0xa438, 0x627f, 0xa438, 0xae0c, 0xa438, 0xbf85,
- 0xa438, 0xf802, 0xa438, 0x6276, 0xa438, 0xbf61, 0xa438, 0xc702,
- 0xa438, 0x6276, 0xa438, 0xee85, 0xa438, 0x4200, 0xa438, 0xaf1b,
- 0xa438, 0x2333, 0xa438, 0xa484, 0xa438, 0xbf86, 0xa438, 0x0a02,
- 0xa438, 0x627f, 0xa438, 0xbf86, 0xa438, 0x0d02, 0xa438, 0x627f,
- 0xa438, 0xaf1b, 0xa438, 0x8422, 0xa438, 0xa484, 0xa438, 0x66ac,
- 0xa438, 0x0ef8, 0xa438, 0xfbef, 0xa438, 0x79fb, 0xa438, 0xe080,
- 0xa438, 0x16ad, 0xa438, 0x230f, 0xa438, 0xee85, 0xa438, 0x4200,
- 0xa438, 0x1f44, 0xa438, 0xbf86, 0xa438, 0x30d7, 0xa438, 0x0008,
- 0xa438, 0x0264, 0xa438, 0xa3ff, 0xa438, 0xef97, 0xa438, 0xfffc,
- 0xa438, 0x0485, 0xa438, 0xf861, 0xa438, 0xc786, 0xa438, 0x0a86,
- 0xa438, 0x0de1, 0xa438, 0x8feb, 0xa438, 0xe583, 0xa438, 0x20e1,
- 0xa438, 0x8fea, 0xa438, 0xe583, 0xa438, 0x21af, 0xa438, 0x41a7,
- 0xa436, 0xb85e, 0xa438, 0x1b05, 0xa436, 0xb860, 0xa438, 0x1b78,
- 0xa436, 0xb862, 0xa438, 0x1a08, 0xa436, 0xb864, 0xa438, 0x419F,
- 0xa436, 0xb886, 0xa438, 0xffff, 0xa436, 0xb888, 0xa438, 0xffff,
- 0xa436, 0xb88a, 0xa438, 0xffff, 0xa436, 0xb88c, 0xa438, 0xffff,
- 0xa436, 0xb838, 0xa438, 0x000f, 0xb820, 0x0010, 0xa436, 0x0000,
- 0xa438, 0x0000, 0xB82E, 0x0000, 0xa436, 0x8023, 0xa438, 0x0000,
- 0xa436, 0x801E, 0xa438, 0x0008, 0xB820, 0x0000, 0xFFFF, 0xFFFF
+ 0xa438, 0x0c24, 0xa436, 0xA100, 0xa438, 0x0ac6, 0xa436, 0xA110,
+ 0xa438, 0x00ff, 0xa436, 0xA016, 0xa438, 0x0020, 0xa436, 0xA012,
+ 0xa438, 0x1ff8, 0xa436, 0xA014, 0xa438, 0x0000, 0xa438, 0x0000,
+ 0xa438, 0x0000, 0xa438, 0xd100, 0xa438, 0x0000, 0xa438, 0x0000,
+ 0xa438, 0x0000, 0xa438, 0x0000, 0xa436, 0xA164, 0xa438, 0x0ceb,
+ 0xa436, 0xA166, 0xa438, 0x0e73, 0xa436, 0xA168, 0xa438, 0x0deb,
+ 0xa436, 0xA16A, 0xa438, 0x0c63, 0xa436, 0xA16C, 0xa438, 0x3fff,
+ 0xa436, 0xA16E, 0xa438, 0x3fff, 0xa436, 0xA170, 0xa438, 0x3fff,
+ 0xa436, 0xA172, 0xa438, 0x3fff, 0xa436, 0xA162, 0xa438, 0x000f,
+ 0xa436, 0xb87c, 0xa438, 0x85bf, 0xa436, 0xb87e, 0xa438, 0xaf85,
+ 0xa438, 0xd7af, 0xa438, 0x85fb, 0xa438, 0xaf86, 0xa438, 0x10af,
+ 0xa438, 0x8638, 0xa438, 0xaf86, 0xa438, 0x47af, 0xa438, 0x8647,
+ 0xa438, 0xaf86, 0xa438, 0x47af, 0xa438, 0x8647, 0xa438, 0xbf85,
+ 0xa438, 0xf802, 0xa438, 0x627f, 0xa438, 0xbf61, 0xa438, 0xc702,
+ 0xa438, 0x627f, 0xa438, 0xae0c, 0xa438, 0xbf85, 0xa438, 0xf802,
+ 0xa438, 0x6276, 0xa438, 0xbf61, 0xa438, 0xc702, 0xa438, 0x6276,
+ 0xa438, 0xee85, 0xa438, 0x4200, 0xa438, 0xaf1b, 0xa438, 0x2333,
+ 0xa438, 0xa484, 0xa438, 0xbf86, 0xa438, 0x0a02, 0xa438, 0x627f,
+ 0xa438, 0xbf86, 0xa438, 0x0d02, 0xa438, 0x627f, 0xa438, 0xaf1b,
+ 0xa438, 0x8422, 0xa438, 0xa484, 0xa438, 0x66ac, 0xa438, 0x0ef8,
+ 0xa438, 0xfbef, 0xa438, 0x79fb, 0xa438, 0xe080, 0xa438, 0x16ad,
+ 0xa438, 0x230f, 0xa438, 0xee85, 0xa438, 0x4200, 0xa438, 0x1f44,
+ 0xa438, 0xbf86, 0xa438, 0x30d7, 0xa438, 0x0008, 0xa438, 0x0264,
+ 0xa438, 0xa3ff, 0xa438, 0xef97, 0xa438, 0xfffc, 0xa438, 0x0485,
+ 0xa438, 0xf861, 0xa438, 0xc786, 0xa438, 0x0a86, 0xa438, 0x0de1,
+ 0xa438, 0x8feb, 0xa438, 0xe583, 0xa438, 0x20e1, 0xa438, 0x8fea,
+ 0xa438, 0xe583, 0xa438, 0x21af, 0xa438, 0x41a7, 0xa436, 0xb85e,
+ 0xa438, 0x1b05, 0xa436, 0xb860, 0xa438, 0x1b78, 0xa436, 0xb862,
+ 0xa438, 0x1a08, 0xa436, 0xb864, 0xa438, 0x419F, 0xa436, 0xb886,
+ 0xa438, 0xffff, 0xa436, 0xb888, 0xa438, 0xffff, 0xa436, 0xb88a,
+ 0xa438, 0xffff, 0xa436, 0xb88c, 0xa438, 0xffff, 0xa436, 0xb838,
+ 0xa438, 0x000f, 0xb820, 0x0010, 0xa436, 0x0000, 0xa438, 0x0000,
+ 0xB82E, 0x0000, 0xa436, 0x8023, 0xa438, 0x0000, 0xa436, 0x801E,
+ 0xa438, 0x0014, 0xB820, 0x0000, 0xFFFF, 0xFFFF
};
static const u16 phy_mcu_ram_code_8125d_2_2[] = {
diff --git a/drivers/net/r8169/r8169_hw.c b/drivers/net/r8169/r8169_hw.c
index 05d977379a..3f7e452132 100644
--- a/drivers/net/r8169/r8169_hw.c
+++ b/drivers/net/r8169/r8169_hw.c
@@ -769,8 +769,8 @@ rtl_enable_aspm_clkreq_lock(struct rtl_hw *hw, bool enable)
if (unlock_cfg_wr)
rtl_enable_cfg9346_write(hw);
- if (hw->mcfg == CFG_METHOD_70 || hw->mcfg == CFG_METHOD_71 ||
- hw->mcfg == CFG_METHOD_91) {
+ if (hw->mcfg == CFG_METHOD_58 || hw->mcfg == CFG_METHOD_70 ||
+ hw->mcfg == CFG_METHOD_71 || hw->mcfg == CFG_METHOD_91) {
if (enable) {
RTL_W8(hw, INT_CFG0_8125, RTL_R8(hw, INT_CFG0_8125) | BIT_3);
RTL_W8(hw, Config5, RTL_R8(hw, Config5) | BIT_0);
diff --git a/drivers/net/r8169/r8169_hw.h b/drivers/net/r8169/r8169_hw.h
index a1f841c88d..1bdc46bd17 100644
--- a/drivers/net/r8169/r8169_hw.h
+++ b/drivers/net/r8169/r8169_hw.h
@@ -135,8 +135,8 @@ extern const struct rtl_hw_ops rtl8125cp_ops;
#define NIC_RAMCODE_VERSION_CFG_METHOD_54 (0x0013)
#define NIC_RAMCODE_VERSION_CFG_METHOD_55 (0x0001)
#define NIC_RAMCODE_VERSION_CFG_METHOD_56 (0x0027)
-#define NIC_RAMCODE_VERSION_CFG_METHOD_57 (0x0027)
-#define NIC_RAMCODE_VERSION_CFG_METHOD_58 (0x0008)
+#define NIC_RAMCODE_VERSION_CFG_METHOD_57 (0x0034)
+#define NIC_RAMCODE_VERSION_CFG_METHOD_58 (0x0024)
#define NIC_RAMCODE_VERSION_CFG_METHOD_70 (0x0033)
#define NIC_RAMCODE_VERSION_CFG_METHOD_71 (0x0060)
#define NIC_RAMCODE_VERSION_CFG_METHOD_91 (0x0051)
--
2.34.1
^ permalink raw reply related [flat|nested] 15+ messages in thread* [PATCH v3 09/12] net/r8169: add support for RTL9151
2026-02-12 5:58 [PATCH v3 00/12] net/r8169: update driver with new HW support and fixes Howard Wang
` (7 preceding siblings ...)
2026-02-12 5:58 ` [PATCH v3 08/12] net/r8169: update hardware configurations for 8125 Howard Wang
@ 2026-02-12 5:58 ` Howard Wang
2026-02-12 5:59 ` [PATCH v3 10/12] net/r8169: add support for RTL8125K Howard Wang
` (3 subsequent siblings)
12 siblings, 0 replies; 15+ messages in thread
From: Howard Wang @ 2026-02-12 5:58 UTC (permalink / raw)
To: dev; +Cc: pro_nic_dpdk, Howard Wang
This device supports network speeds up to 2.5Gbps.
Signed-off-by: Howard Wang <howard_wang@realsil.com.cn>
---
drivers/net/r8169/base/rtl9151a.c | 87 ++++++++++++++++++++
drivers/net/r8169/base/rtl9151a.h | 10 +++
drivers/net/r8169/base/rtl9151a_mcu.c | 53 ++++++++++++
drivers/net/r8169/meson.build | 2 +
drivers/net/r8169/r8169_compat.h | 3 +
drivers/net/r8169/r8169_ethdev.c | 5 +-
drivers/net/r8169/r8169_ethdev.h | 3 +
drivers/net/r8169/r8169_hw.c | 112 +++++++++++++++++---------
drivers/net/r8169/r8169_hw.h | 4 +-
drivers/net/r8169/r8169_phy.c | 36 ++-------
10 files changed, 246 insertions(+), 69 deletions(-)
create mode 100644 drivers/net/r8169/base/rtl9151a.c
create mode 100644 drivers/net/r8169/base/rtl9151a.h
create mode 100644 drivers/net/r8169/base/rtl9151a_mcu.c
diff --git a/drivers/net/r8169/base/rtl9151a.c b/drivers/net/r8169/base/rtl9151a.c
new file mode 100644
index 0000000000..4eca5fb96b
--- /dev/null
+++ b/drivers/net/r8169/base/rtl9151a.c
@@ -0,0 +1,87 @@
+/* SPDX-License-Identifier: BSD-3-Clause
+ * Copyright(c) 2024 Realtek Corporation. All rights reserved
+ */
+
+#include "../r8169_ethdev.h"
+#include "../r8169_hw.h"
+#include "../r8169_phy.h"
+#include "rtl9151a.h"
+
+/* For RTL9151A, CFG_METHOD_60 */
+
+static void
+hw_init_rxcfg_9151a(struct rtl_hw *hw)
+{
+ RTL_W32(hw, RxConfig, Rx_Fetch_Number_8 | Rx_Close_Multiple |
+ RxCfg_pause_slot_en | (RX_DMA_BURST_512 << RxCfgDMAShift));
+}
+
+static void
+hw_ephy_config_9151a(struct rtl_hw *hw)
+{
+ switch (hw->mcfg) {
+ case CFG_METHOD_60:
+ /* nothing to do */
+ break;
+ }
+}
+
+static void
+rtl_hw_phy_config_9151a_1(struct rtl_hw *hw)
+{
+ rtl_set_eth_phy_ocp_bit(hw, 0xA442, BIT_11);
+
+ rtl_mdio_direct_write_phy_ocp(hw, 0xB87C, 0x8079);
+ rtl_clear_and_set_eth_phy_ocp_bit(hw, 0xB87E, 0xFF00, 0x4400);
+ rtl_clear_and_set_eth_phy_ocp_bit(hw, 0xAC16, 0x00FF, 0x0001);
+ rtl_clear_and_set_eth_phy_ocp_bit(hw, 0xAD0E, 0x007F, 0x000D);
+
+ rtl_mdio_direct_write_phy_ocp(hw, 0xA436, 0x80B6);
+ rtl_mdio_direct_write_phy_ocp(hw, 0xA438, 0xB6C3);
+}
+
+static void
+hw_phy_config_9151a(struct rtl_hw *hw)
+{
+ switch (hw->mcfg) {
+ case CFG_METHOD_60:
+ rtl_hw_phy_config_9151a_1(hw);
+ break;
+ }
+}
+
+static void
+hw_mac_mcu_config_9151a(struct rtl_hw *hw)
+{
+ if (hw->NotWrMcuPatchCode)
+ return;
+
+ rtl_hw_disable_mac_mcu_bps(hw);
+
+ /* Get H/W mac mcu patch code version */
+ hw->hw_mcu_patch_code_ver = rtl_get_hw_mcu_patch_code_ver(hw);
+
+ switch (hw->mcfg) {
+ case CFG_METHOD_60:
+ /* no mac mcu patch code */
+ break;
+ }
+}
+
+static void
+hw_phy_mcu_config_9151a(struct rtl_hw *hw)
+{
+ switch (hw->mcfg) {
+ case CFG_METHOD_60:
+ rtl_set_phy_mcu_9151a_1(hw);
+ break;
+ }
+}
+
+const struct rtl_hw_ops rtl9151a_ops = {
+ .hw_init_rxcfg = hw_init_rxcfg_9151a,
+ .hw_ephy_config = hw_ephy_config_9151a,
+ .hw_phy_config = hw_phy_config_9151a,
+ .hw_mac_mcu_config = hw_mac_mcu_config_9151a,
+ .hw_phy_mcu_config = hw_phy_mcu_config_9151a,
+};
diff --git a/drivers/net/r8169/base/rtl9151a.h b/drivers/net/r8169/base/rtl9151a.h
new file mode 100644
index 0000000000..bf0e2017d6
--- /dev/null
+++ b/drivers/net/r8169/base/rtl9151a.h
@@ -0,0 +1,10 @@
+/* SPDX-License-Identifier: BSD-3-Clause
+ * Copyright(c) 2024 Realtek Corporation. All rights reserved
+ */
+
+#ifndef RTL9151A_H
+#define RTL9151A_H
+
+void rtl_set_phy_mcu_9151a_1(struct rtl_hw *hw);
+
+#endif /* RTL9151A_H */
diff --git a/drivers/net/r8169/base/rtl9151a_mcu.c b/drivers/net/r8169/base/rtl9151a_mcu.c
new file mode 100644
index 0000000000..50a2cd90e6
--- /dev/null
+++ b/drivers/net/r8169/base/rtl9151a_mcu.c
@@ -0,0 +1,53 @@
+/* SPDX-License-Identifier: BSD-3-Clause
+ * Copyright(c) 2024 Realtek Corporation. All rights reserved
+ */
+
+#include "../r8169_ethdev.h"
+#include "../r8169_hw.h"
+#include "../r8169_phy.h"
+#include "rtl9151a.h"
+
+/* For RTL9151A, CFG_METHOD_60 */
+
+/* ------------------------------------MAC 9151A------------------------------------- */
+
+/* ------------------------------------PHY 9151A--------------------------------------- */
+
+static const u16 phy_mcu_ram_code_9151a_1_1[] = {
+ 0xa436, 0x8023, 0xa438, 0x5100, 0xa436, 0xB82E, 0xa438, 0x0001,
+ 0xb820, 0x0090, 0xa436, 0xA016, 0xa438, 0x0020, 0xa436, 0xA012,
+ 0xa438, 0x0000, 0xa436, 0xA014, 0xa438, 0x1800, 0xa438, 0x8010,
+ 0xa438, 0x1800, 0xa438, 0x8017, 0xa438, 0x1800, 0xa438, 0x8028,
+ 0xa438, 0x1800, 0xa438, 0x8028, 0xa438, 0x1800, 0xa438, 0x8028,
+ 0xa438, 0x1800, 0xa438, 0x8028, 0xa438, 0x1800, 0xa438, 0x8028,
+ 0xa438, 0x1800, 0xa438, 0x8028, 0xa438, 0x8901, 0xa438, 0xd707,
+ 0xa438, 0x4076, 0xa438, 0x1800, 0xa438, 0x1399, 0xa438, 0x1800,
+ 0xa438, 0x139f, 0xa438, 0xa00a, 0xa438, 0x0c06, 0xa438, 0x0102,
+ 0xa438, 0xa240, 0xa438, 0xa290, 0xa438, 0xa344, 0xa438, 0xab02,
+ 0xa438, 0xa404, 0xa438, 0xd1c7, 0xa438, 0xd045, 0xa438, 0x1000,
+ 0xa438, 0x125f, 0xa438, 0xd700, 0xa438, 0x5fbb, 0xa438, 0xa320,
+ 0xa438, 0x1800, 0xa438, 0x0cc2, 0xa436, 0xA10E, 0xa438, 0xffff,
+ 0xa436, 0xA10C, 0xa438, 0xffff, 0xa436, 0xA10A, 0xa438, 0xffff,
+ 0xa436, 0xA108, 0xa438, 0xffff, 0xa436, 0xA106, 0xa438, 0xffff,
+ 0xa436, 0xA104, 0xa438, 0xffff, 0xa436, 0xA102, 0xa438, 0x0cb4,
+ 0xa436, 0xA100, 0xa438, 0x1398, 0xa436, 0xA110, 0xa438, 0x0003,
+ 0xb820, 0x0010, 0xB82E, 0x0000, 0xa436, 0x8023, 0xa438, 0x0000,
+ 0xB820, 0x0000, 0xFFFF, 0xFFFF
+};
+
+static void
+rtl_real_set_phy_mcu_9151a_1_1(struct rtl_hw *hw)
+{
+ rtl_set_phy_mcu_ram_code(hw, phy_mcu_ram_code_9151a_1_1,
+ ARRAY_SIZE(phy_mcu_ram_code_9151a_1_1));
+}
+
+void
+rtl_set_phy_mcu_9151a_1(struct rtl_hw *hw)
+{
+ rtl_set_phy_mcu_patch_request(hw);
+
+ rtl_real_set_phy_mcu_9151a_1_1(hw);
+
+ rtl_clear_phy_mcu_patch_request(hw);
+}
diff --git a/drivers/net/r8169/meson.build b/drivers/net/r8169/meson.build
index e0b3e88c3d..3747e198bc 100644
--- a/drivers/net/r8169/meson.build
+++ b/drivers/net/r8169/meson.build
@@ -32,4 +32,6 @@ sources = files(
'base/rtl8168m.c',
'base/rtl8127.c',
'base/rtl8127_mcu.c',
+ 'base/rtl9151a.c',
+ 'base/rtl9151a_mcu.c',
)
diff --git a/drivers/net/r8169/r8169_compat.h b/drivers/net/r8169/r8169_compat.h
index 673a1ca274..4339522f2d 100644
--- a/drivers/net/r8169/r8169_compat.h
+++ b/drivers/net/r8169/r8169_compat.h
@@ -271,6 +271,8 @@ enum RTL_registers {
IB2SOC_DATA = 0x0014,
IB2SOC_CMD = 0x0018,
IB2SOC_IMR = 0x001C,
+ /* 9151 */
+ TxConfigV2 = 0x60B0,
};
enum RTL_register_content {
@@ -526,6 +528,7 @@ enum RTL_chipset_name {
RTL8125D,
RTL8125CP,
RTL8168KD,
+ RTL9151A,
RTL8126A,
RTL8168EP,
RTL8168FP,
diff --git a/drivers/net/r8169/r8169_ethdev.c b/drivers/net/r8169/r8169_ethdev.c
index 80e03dd53c..625f50853e 100644
--- a/drivers/net/r8169/r8169_ethdev.c
+++ b/drivers/net/r8169/r8169_ethdev.c
@@ -171,6 +171,7 @@ _rtl_setup_link(struct rte_eth_dev *dev)
case RTL8125BP:
case RTL8125D:
case RTL8125CP:
+ case RTL9151A:
speed_mode = SPEED_2500;
break;
case RTL8126A:
@@ -426,6 +427,7 @@ rtl_dev_infos_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info)
case CFG_METHOD_56:
case CFG_METHOD_57:
case CFG_METHOD_58:
+ case CFG_METHOD_60:
case CFG_METHOD_70:
case CFG_METHOD_71:
case CFG_METHOD_91:
@@ -471,6 +473,7 @@ rtl_dev_infos_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info)
case RTL8125BP:
case RTL8125D:
case RTL8125CP:
+ case RTL9151A:
dev_info->speed_capa |= RTE_ETH_LINK_SPEED_2_5G;
break;
}
@@ -931,7 +934,7 @@ rtl_dev_init(struct rte_eth_dev *dev)
rtl_disable_intr(hw);
- rtl_hw_initialize(hw);
+ rtl_hw_initialize(hw, pci_dev);
/* Read the permanent MAC address out of ROM */
rtl_get_mac_address(hw, perm_addr);
diff --git a/drivers/net/r8169/r8169_ethdev.h b/drivers/net/r8169/r8169_ethdev.h
index a7604df6c2..d3676ee7d2 100644
--- a/drivers/net/r8169/r8169_ethdev.h
+++ b/drivers/net/r8169/r8169_ethdev.h
@@ -117,6 +117,9 @@ struct rtl_hw {
u16 mcu_pme_setting;
+ /* Device function */
+ u8 function;
+
/* Enable Tx No Close */
u8 HwSuppTxNoCloseVer;
u8 EnableTxNoClose;
diff --git a/drivers/net/r8169/r8169_hw.c b/drivers/net/r8169/r8169_hw.c
index 3f7e452132..ef2b0654a5 100644
--- a/drivers/net/r8169/r8169_hw.c
+++ b/drivers/net/r8169/r8169_hw.c
@@ -496,22 +496,7 @@ rtl_csi_other_fun_read(struct rtl_hw *hw, u8 multi_fun_sel_bit, u32 addr)
u32
rtl_csi_read(struct rtl_hw *hw, u32 addr)
{
- u8 multi_fun_sel_bit;
-
- switch (hw->mcfg) {
- case CFG_METHOD_26:
- case CFG_METHOD_31:
- case CFG_METHOD_32:
- case CFG_METHOD_33:
- case CFG_METHOD_34:
- multi_fun_sel_bit = 1;
- break;
- default:
- multi_fun_sel_bit = 0;
- break;
- }
-
- return rtl_csi_other_fun_read(hw, multi_fun_sel_bit, addr);
+ return rtl_csi_other_fun_read(hw, hw->function, addr);
}
void
@@ -546,22 +531,7 @@ rtl_csi_other_fun_write(struct rtl_hw *hw, u8 multi_fun_sel_bit, u32 addr,
void
rtl_csi_write(struct rtl_hw *hw, u32 addr, u32 value)
{
- u8 multi_fun_sel_bit;
-
- switch (hw->mcfg) {
- case CFG_METHOD_26:
- case CFG_METHOD_31:
- case CFG_METHOD_32:
- case CFG_METHOD_33:
- case CFG_METHOD_34:
- multi_fun_sel_bit = 1;
- break;
- default:
- multi_fun_sel_bit = 0;
- break;
- }
-
- rtl_csi_other_fun_write(hw, multi_fun_sel_bit, addr, value);
+ rtl_csi_other_fun_write(hw, hw->function, addr, value);
}
void
@@ -631,6 +601,7 @@ rtl_stop_all_request(struct rtl_hw *hw)
case CFG_METHOD_57:
case CFG_METHOD_58:
case CFG_METHOD_59:
+ case CFG_METHOD_60:
case CFG_METHOD_70:
case CFG_METHOD_71:
case CFG_METHOD_91:
@@ -688,6 +659,7 @@ rtl_wait_txrx_fifo_empty(struct rtl_hw *hw)
case CFG_METHOD_57:
case CFG_METHOD_58:
case CFG_METHOD_59:
+ case CFG_METHOD_60:
case CFG_METHOD_70:
case CFG_METHOD_71:
case CFG_METHOD_91:
@@ -925,6 +897,7 @@ rtl8125_set_rx_desc_type(struct rtl_hw *hw)
case CFG_METHOD_57:
case CFG_METHOD_58:
case CFG_METHOD_59:
+ case CFG_METHOD_60:
RTL_W8(hw, 0xD8, RTL_R8(hw, 0xD8) & ~EnableRxDescV4_0);
break;
case CFG_METHOD_70:
@@ -1043,7 +1016,7 @@ rtl8125_hw_config(struct rtl_hw *hw)
rtl_oob_mutex_lock(hw);
if (hw->mcfg == CFG_METHOD_56 || hw->mcfg == CFG_METHOD_57 ||
- hw->mcfg == CFG_METHOD_59)
+ hw->mcfg == CFG_METHOD_59 || hw->mcfg == CFG_METHOD_60)
rtl_mac_ocp_write(hw, 0xE0C0, 0x4403);
else
rtl_mac_ocp_write(hw, 0xE0C0, 0x4000);
@@ -1259,6 +1232,10 @@ rtl_set_hw_ops(struct rtl_hw *hw)
case CFG_METHOD_58:
hw->hw_ops = rtl8125cp_ops;
return 0;
+ /* 9151A */
+ case CFG_METHOD_60:
+ hw->hw_ops = rtl9151a_ops;
+ return 0;
/* 8126A */
case CFG_METHOD_70:
case CFG_METHOD_71:
@@ -1486,7 +1463,7 @@ rtl_set_link_option(struct rtl_hw *hw, u8 autoneg, u32 speed, u8 duplex,
}
static void
-rtl_init_software_variable(struct rtl_hw *hw)
+rtl_init_software_variable(struct rtl_hw *hw, struct rte_pci_device *pci_dev)
{
int tx_no_close_enable = 1;
unsigned int speed_mode;
@@ -1547,6 +1524,9 @@ rtl_init_software_variable(struct rtl_hw *hw)
case CFG_METHOD_59:
hw->chipset_name = RTL8168KD;
break;
+ case CFG_METHOD_60:
+ hw->chipset_name = RTL9151A;
+ break;
case CFG_METHOD_70:
case CFG_METHOD_71:
hw->chipset_name = RTL8126A;
@@ -1566,6 +1546,7 @@ rtl_init_software_variable(struct rtl_hw *hw)
case RTL8125BP:
case RTL8125D:
case RTL8125CP:
+ case RTL9151A:
speed_mode = SPEED_2500;
break;
case RTL8126A:
@@ -1697,6 +1678,7 @@ rtl_init_software_variable(struct rtl_hw *hw)
case CFG_METHOD_57:
case CFG_METHOD_58:
case CFG_METHOD_59:
+ case CFG_METHOD_60:
case CFG_METHOD_70:
case CFG_METHOD_71:
case CFG_METHOD_91:
@@ -1719,6 +1701,7 @@ rtl_init_software_variable(struct rtl_hw *hw)
case CFG_METHOD_57:
case CFG_METHOD_58:
case CFG_METHOD_59:
+ case CFG_METHOD_60:
case CFG_METHOD_91:
hw->HwSuppTxNoCloseVer = 6;
break;
@@ -1813,6 +1796,9 @@ rtl_init_software_variable(struct rtl_hw *hw)
case CFG_METHOD_58:
hw->sw_ram_code_ver = NIC_RAMCODE_VERSION_CFG_METHOD_58;
break;
+ case CFG_METHOD_60:
+ hw->sw_ram_code_ver = NIC_RAMCODE_VERSION_CFG_METHOD_60;
+ break;
case CFG_METHOD_70:
hw->sw_ram_code_ver = NIC_RAMCODE_VERSION_CFG_METHOD_70;
break;
@@ -1863,6 +1849,7 @@ rtl_init_software_variable(struct rtl_hw *hw)
case CFG_METHOD_57:
case CFG_METHOD_58:
case CFG_METHOD_59:
+ case CFG_METHOD_60:
case CFG_METHOD_91:
hw->HwSuppIntMitiVer = 6;
break;
@@ -1894,6 +1881,8 @@ rtl_init_software_variable(struct rtl_hw *hw)
rtl_set_link_option(hw, autoneg_mode, speed_mode, duplex_mode, rtl_fc_full);
hw->mtu = RTL_DEFAULT_MTU;
+
+ hw->function = pci_dev->addr.function;
}
static void
@@ -2104,9 +2093,9 @@ rtl_hw_init(struct rtl_hw *hw)
}
void
-rtl_hw_initialize(struct rtl_hw *hw)
+rtl_hw_initialize(struct rtl_hw *hw, struct rte_pci_device *pci_dev)
{
- rtl_init_software_variable(hw);
+ rtl_init_software_variable(hw, pci_dev);
rtl_exit_oob(hw);
@@ -2115,6 +2104,36 @@ rtl_hw_initialize(struct rtl_hw *hw)
rtl_nic_reset(hw);
}
+static void
+rtl8125_get_mac_version_v2(struct rtl_hw *hw)
+{
+ u32 reg, val32;
+ u32 ic_version_id;
+
+ val32 = RTL_R32(hw, TxConfigV2);
+ reg = val32 & 0x7fffffc0;
+ ic_version_id = val32 & 0x3f;
+
+ RTE_ASSERT(val32 != UINT_MAX &&
+ (val32 & RTL_R32(hw, TxConfig) & 0x7c800000) == 0x7c800000);
+
+ if (val32 == UINT_MAX)
+ return;
+
+ switch (reg) {
+ case 0x00000000:
+ if (ic_version_id == 0x00000000) {
+ hw->mcfg = CFG_METHOD_60;
+ } else {
+ hw->mcfg = CFG_METHOD_60;
+ hw->HwIcVerUnknown = TRUE;
+ }
+ break;
+ default:
+ break;
+ }
+}
+
void
rtl_get_mac_version(struct rtl_hw *hw, struct rte_pci_device *pci_dev)
{
@@ -2125,6 +2144,13 @@ rtl_get_mac_version(struct rtl_hw *hw, struct rte_pci_device *pci_dev)
reg = val32 & 0x7c800000;
ic_version_id = val32 & 0x00700000;
+ hw->mcfg = CFG_METHOD_DEFAULT;
+
+ RTE_ASSERT(val32 != UINT_MAX);
+
+ if (val32 == UINT_MAX)
+ goto exit;
+
switch (reg) {
case 0x30000000:
hw->mcfg = CFG_METHOD_1;
@@ -2336,8 +2362,10 @@ rtl_get_mac_version(struct rtl_hw *hw, struct rte_pci_device *pci_dev)
hw->mcfg = CFG_METHOD_56;
} else if (ic_version_id == 0x100000) {
hw->mcfg = CFG_METHOD_57;
+ } else if (ic_version_id == 0x300000) {
+ hw->mcfg = CFG_METHOD_60;
} else {
- hw->mcfg = CFG_METHOD_57;
+ hw->mcfg = CFG_METHOD_61;
hw->HwIcVerUnknown = TRUE;
}
break;
@@ -2369,11 +2397,17 @@ rtl_get_mac_version(struct rtl_hw *hw, struct rte_pci_device *pci_dev)
hw->HwIcVerUnknown = TRUE;
}
break;
+ case 0x7C800000:
+ rtl8125_get_mac_version_v2(hw);
+ break;
default:
+ break;
+ }
+
+exit:
+ if (hw->mcfg == CFG_METHOD_DEFAULT) {
PMD_INIT_LOG(NOTICE, "unknown chip version (%x)", reg);
- hw->mcfg = CFG_METHOD_DEFAULT;
hw->HwIcVerUnknown = TRUE;
- break;
}
if (pci_dev->id.device_id == 0x8162) {
diff --git a/drivers/net/r8169/r8169_hw.h b/drivers/net/r8169/r8169_hw.h
index 1bdc46bd17..65007c2a7e 100644
--- a/drivers/net/r8169/r8169_hw.h
+++ b/drivers/net/r8169/r8169_hw.h
@@ -45,7 +45,7 @@ void rtl_hw_disable_mac_mcu_bps(struct rtl_hw *hw);
void rtl_write_mac_mcu_ram_code(struct rtl_hw *hw, const u16 *entry,
u16 entry_cnt);
-void rtl_hw_initialize(struct rtl_hw *hw);
+void rtl_hw_initialize(struct rtl_hw *hw, struct rte_pci_device *pci_dev);
bool rtl_is_speed_mode_valid(struct rtl_hw *hw, u32 speed);
@@ -91,6 +91,7 @@ extern const struct rtl_hw_ops rtl8125a_ops;
extern const struct rtl_hw_ops rtl8125b_ops;
extern const struct rtl_hw_ops rtl8125bp_ops;
extern const struct rtl_hw_ops rtl8125d_ops;
+extern const struct rtl_hw_ops rtl9151a_ops;
extern const struct rtl_hw_ops rtl8126a_ops;
extern const struct rtl_hw_ops rtl8168kb_ops;
extern const struct rtl_hw_ops rtl8127_ops;
@@ -137,6 +138,7 @@ extern const struct rtl_hw_ops rtl8125cp_ops;
#define NIC_RAMCODE_VERSION_CFG_METHOD_56 (0x0027)
#define NIC_RAMCODE_VERSION_CFG_METHOD_57 (0x0034)
#define NIC_RAMCODE_VERSION_CFG_METHOD_58 (0x0024)
+#define NIC_RAMCODE_VERSION_CFG_METHOD_60 (0x0003)
#define NIC_RAMCODE_VERSION_CFG_METHOD_70 (0x0033)
#define NIC_RAMCODE_VERSION_CFG_METHOD_71 (0x0060)
#define NIC_RAMCODE_VERSION_CFG_METHOD_91 (0x0051)
diff --git a/drivers/net/r8169/r8169_phy.c b/drivers/net/r8169/r8169_phy.c
index 8988c6f288..de6e512375 100644
--- a/drivers/net/r8169/r8169_phy.c
+++ b/drivers/net/r8169/r8169_phy.c
@@ -551,7 +551,7 @@ rtl_powerdown_pll(struct rtl_hw *hw)
if (!hw->HwIcVerUnknown) {
if (!(hw->mcfg == CFG_METHOD_23 || hw->mcfg == CFG_METHOD_37 ||
- hw->mcfg == CFG_METHOD_91))
+ hw->mcfg == CFG_METHOD_60 || hw->mcfg == CFG_METHOD_91))
RTL_W8(hw, PMCH, RTL_R8(hw, PMCH) & ~BIT_7);
}
@@ -964,21 +964,9 @@ _rtl_disable_adv_eee(struct rtl_hw *hw)
rtl_mdio_write(hw, 0x11, data);
rtl_mdio_write(hw, 0x1F, 0x0000);
break;
- case CFG_METHOD_48:
- case CFG_METHOD_49:
- case CFG_METHOD_50:
- case CFG_METHOD_51:
- case CFG_METHOD_52:
- case CFG_METHOD_53:
- case CFG_METHOD_54:
- case CFG_METHOD_55:
- case CFG_METHOD_56:
- case CFG_METHOD_57:
- case CFG_METHOD_58:
- case CFG_METHOD_59:
- case CFG_METHOD_70:
- case CFG_METHOD_71:
- case CFG_METHOD_91:
+ default:
+ if (!rtl_is_8125(hw))
+ break;
rtl_clear_mac_ocp_bit(hw, 0xE052, BIT_0);
rtl_clear_eth_phy_ocp_bit(hw, 0xA442, (BIT_12 | BIT_13));
rtl_clear_eth_phy_ocp_bit(hw, 0xA430, BIT_15);
@@ -1062,6 +1050,7 @@ rtl_disable_eee(struct rtl_hw *hw)
case CFG_METHOD_57:
case CFG_METHOD_58:
case CFG_METHOD_59:
+ case CFG_METHOD_60:
rtl_clear_mac_ocp_bit(hw, 0xE040, (BIT_1 | BIT_0));
rtl_set_eth_phy_ocp_bit(hw, 0xA432, BIT_4);
@@ -1213,18 +1202,9 @@ rtl_set_speed_xmii(struct rtl_hw *hw, u8 autoneg, u32 speed, u8 duplex, u64 adv)
case CFG_METHOD_71:
mask |= BIT_1;
/* Fall through */
- case CFG_METHOD_48:
- case CFG_METHOD_49:
- case CFG_METHOD_50:
- case CFG_METHOD_51:
- case CFG_METHOD_52:
- case CFG_METHOD_53:
- case CFG_METHOD_54:
- case CFG_METHOD_55:
- case CFG_METHOD_56:
- case CFG_METHOD_57:
- case CFG_METHOD_58:
- case CFG_METHOD_59:
+ default:
+ if (!rtl_is_8125(hw))
+ break;
mask |= BIT_0;
rtl_clear_eth_phy_ocp_bit(hw, 0xA428, BIT_9);
rtl_clear_eth_phy_ocp_bit(hw, 0xA5EA, mask);
--
2.34.1
^ permalink raw reply related [flat|nested] 15+ messages in thread* [PATCH v3 10/12] net/r8169: add support for RTL8125K
2026-02-12 5:58 [PATCH v3 00/12] net/r8169: update driver with new HW support and fixes Howard Wang
` (8 preceding siblings ...)
2026-02-12 5:58 ` [PATCH v3 09/12] net/r8169: add support for RTL9151 Howard Wang
@ 2026-02-12 5:59 ` Howard Wang
2026-02-12 5:59 ` [PATCH v3 11/12] net/r8169: fix one bug about RTL8168KB Howard Wang
` (2 subsequent siblings)
12 siblings, 0 replies; 15+ messages in thread
From: Howard Wang @ 2026-02-12 5:59 UTC (permalink / raw)
To: dev; +Cc: pro_nic_dpdk, Howard Wang
This device supports network speeds up to 2.5Gbps.
Signed-off-by: Howard Wang <howard_wang@realsil.com.cn>
---
drivers/net/r8169/base/rtl8125d.c | 7 +++++
drivers/net/r8169/base/rtl8125d_mcu.c | 1 +
drivers/net/r8169/r8169_compat.h | 1 +
drivers/net/r8169/r8169_ethdev.c | 3 ++
drivers/net/r8169/r8169_hw.c | 42 +++++++++++----------------
drivers/net/r8169/r8169_phy.c | 1 +
6 files changed, 30 insertions(+), 25 deletions(-)
diff --git a/drivers/net/r8169/base/rtl8125d.c b/drivers/net/r8169/base/rtl8125d.c
index ac500587e0..70b82858ef 100644
--- a/drivers/net/r8169/base/rtl8125d.c
+++ b/drivers/net/r8169/base/rtl8125d.c
@@ -10,6 +10,7 @@
/*
* For RTL8125D, CFG_METHOD_56,57
* For RTL8168KD, CFG_METHOD_59
+ * For RTL8125K, CFG_METHOD_61
*/
static void
@@ -26,6 +27,7 @@ hw_ephy_config_8125d(struct rtl_hw *hw)
case CFG_METHOD_56:
case CFG_METHOD_57:
case CFG_METHOD_59:
+ case CFG_METHOD_61:
/* Nothing to do */
break;
}
@@ -278,6 +280,7 @@ hw_phy_config_8125d(struct rtl_hw *hw)
break;
case CFG_METHOD_57:
case CFG_METHOD_59:
+ case CFG_METHOD_61:
rtl_hw_phy_config_8125d_2(hw);
break;
}
@@ -302,6 +305,9 @@ hw_mac_mcu_config_8125d(struct rtl_hw *hw)
case CFG_METHOD_59:
rtl_set_mac_mcu_8125d_2(hw);
break;
+ default:
+ /* no mac mcu patch code */
+ break;
}
}
@@ -314,6 +320,7 @@ hw_phy_mcu_config_8125d(struct rtl_hw *hw)
break;
case CFG_METHOD_57:
case CFG_METHOD_59:
+ case CFG_METHOD_61:
rtl_set_phy_mcu_8125d_2(hw);
break;
}
diff --git a/drivers/net/r8169/base/rtl8125d_mcu.c b/drivers/net/r8169/base/rtl8125d_mcu.c
index 304bad2998..953c80da5b 100644
--- a/drivers/net/r8169/base/rtl8125d_mcu.c
+++ b/drivers/net/r8169/base/rtl8125d_mcu.c
@@ -10,6 +10,7 @@
/*
* For RTL8125D, CFG_METHOD_56,57
* For RTL8168KD, CFG_METHOD_59
+ * For RTL8125K, CFG_METHOD_61
*/
/* ------------------------------------MAC 8125D------------------------------------- */
diff --git a/drivers/net/r8169/r8169_compat.h b/drivers/net/r8169/r8169_compat.h
index 4339522f2d..91c84c7633 100644
--- a/drivers/net/r8169/r8169_compat.h
+++ b/drivers/net/r8169/r8169_compat.h
@@ -529,6 +529,7 @@ enum RTL_chipset_name {
RTL8125CP,
RTL8168KD,
RTL9151A,
+ RTL8125K,
RTL8126A,
RTL8168EP,
RTL8168FP,
diff --git a/drivers/net/r8169/r8169_ethdev.c b/drivers/net/r8169/r8169_ethdev.c
index 625f50853e..72e014e22b 100644
--- a/drivers/net/r8169/r8169_ethdev.c
+++ b/drivers/net/r8169/r8169_ethdev.c
@@ -172,6 +172,7 @@ _rtl_setup_link(struct rte_eth_dev *dev)
case RTL8125D:
case RTL8125CP:
case RTL9151A:
+ case RTL8125K:
speed_mode = SPEED_2500;
break;
case RTL8126A:
@@ -428,6 +429,7 @@ rtl_dev_infos_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info)
case CFG_METHOD_57:
case CFG_METHOD_58:
case CFG_METHOD_60:
+ case CFG_METHOD_61:
case CFG_METHOD_70:
case CFG_METHOD_71:
case CFG_METHOD_91:
@@ -474,6 +476,7 @@ rtl_dev_infos_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info)
case RTL8125D:
case RTL8125CP:
case RTL9151A:
+ case RTL8125K:
dev_info->speed_capa |= RTE_ETH_LINK_SPEED_2_5G;
break;
}
diff --git a/drivers/net/r8169/r8169_hw.c b/drivers/net/r8169/r8169_hw.c
index ef2b0654a5..aa5e160feb 100644
--- a/drivers/net/r8169/r8169_hw.c
+++ b/drivers/net/r8169/r8169_hw.c
@@ -602,6 +602,7 @@ rtl_stop_all_request(struct rtl_hw *hw)
case CFG_METHOD_58:
case CFG_METHOD_59:
case CFG_METHOD_60:
+ case CFG_METHOD_61:
case CFG_METHOD_70:
case CFG_METHOD_71:
case CFG_METHOD_91:
@@ -660,6 +661,7 @@ rtl_wait_txrx_fifo_empty(struct rtl_hw *hw)
case CFG_METHOD_58:
case CFG_METHOD_59:
case CFG_METHOD_60:
+ case CFG_METHOD_61:
case CFG_METHOD_70:
case CFG_METHOD_71:
case CFG_METHOD_91:
@@ -898,6 +900,7 @@ rtl8125_set_rx_desc_type(struct rtl_hw *hw)
case CFG_METHOD_58:
case CFG_METHOD_59:
case CFG_METHOD_60:
+ case CFG_METHOD_61:
RTL_W8(hw, 0xD8, RTL_R8(hw, 0xD8) & ~EnableRxDescV4_0);
break;
case CFG_METHOD_70:
@@ -1016,7 +1019,8 @@ rtl8125_hw_config(struct rtl_hw *hw)
rtl_oob_mutex_lock(hw);
if (hw->mcfg == CFG_METHOD_56 || hw->mcfg == CFG_METHOD_57 ||
- hw->mcfg == CFG_METHOD_59 || hw->mcfg == CFG_METHOD_60)
+ hw->mcfg == CFG_METHOD_59 || hw->mcfg == CFG_METHOD_60 ||
+ hw->mcfg == CFG_METHOD_61)
rtl_mac_ocp_write(hw, 0xE0C0, 0x4403);
else
rtl_mac_ocp_write(hw, 0xE0C0, 0x4000);
@@ -1222,10 +1226,11 @@ rtl_set_hw_ops(struct rtl_hw *hw)
case CFG_METHOD_55:
hw->hw_ops = rtl8125bp_ops;
return 0;
- /* 8125D and 8168KD */
+ /* 8125D, 8168KD, 8125K */
case CFG_METHOD_56:
case CFG_METHOD_57:
case CFG_METHOD_59:
+ case CFG_METHOD_61:
hw->hw_ops = rtl8125d_ops;
return 0;
/* 8125CP */
@@ -1527,6 +1532,9 @@ rtl_init_software_variable(struct rtl_hw *hw, struct rte_pci_device *pci_dev)
case CFG_METHOD_60:
hw->chipset_name = RTL9151A;
break;
+ case CFG_METHOD_61:
+ hw->chipset_name = RTL8125K;
+ break;
case CFG_METHOD_70:
case CFG_METHOD_71:
hw->chipset_name = RTL8126A;
@@ -1547,6 +1555,7 @@ rtl_init_software_variable(struct rtl_hw *hw, struct rte_pci_device *pci_dev)
case RTL8125D:
case RTL8125CP:
case RTL9151A:
+ case RTL8125K:
speed_mode = SPEED_2500;
break;
case RTL8126A:
@@ -1659,29 +1668,7 @@ rtl_init_software_variable(struct rtl_hw *hw, struct rte_pci_device *pci_dev)
case CFG_METHOD_37:
hw->HwSuppCheckPhyDisableModeVer = 2;
break;
- case CFG_METHOD_23:
- case CFG_METHOD_27:
- case CFG_METHOD_28:
- case CFG_METHOD_31:
- case CFG_METHOD_32:
- case CFG_METHOD_33:
- case CFG_METHOD_34:
- case CFG_METHOD_48:
- case CFG_METHOD_49:
- case CFG_METHOD_50:
- case CFG_METHOD_51:
- case CFG_METHOD_52:
- case CFG_METHOD_53:
- case CFG_METHOD_54:
- case CFG_METHOD_55:
- case CFG_METHOD_56:
- case CFG_METHOD_57:
- case CFG_METHOD_58:
- case CFG_METHOD_59:
- case CFG_METHOD_60:
- case CFG_METHOD_70:
- case CFG_METHOD_71:
- case CFG_METHOD_91:
+ default:
hw->HwSuppCheckPhyDisableModeVer = 3;
break;
}
@@ -1702,6 +1689,7 @@ rtl_init_software_variable(struct rtl_hw *hw, struct rte_pci_device *pci_dev)
case CFG_METHOD_58:
case CFG_METHOD_59:
case CFG_METHOD_60:
+ case CFG_METHOD_61:
case CFG_METHOD_91:
hw->HwSuppTxNoCloseVer = 6;
break;
@@ -1791,6 +1779,7 @@ rtl_init_software_variable(struct rtl_hw *hw, struct rte_pci_device *pci_dev)
break;
case CFG_METHOD_57:
case CFG_METHOD_59:
+ case CFG_METHOD_61:
hw->sw_ram_code_ver = NIC_RAMCODE_VERSION_CFG_METHOD_57;
break;
case CFG_METHOD_58:
@@ -1850,6 +1839,7 @@ rtl_init_software_variable(struct rtl_hw *hw, struct rte_pci_device *pci_dev)
case CFG_METHOD_58:
case CFG_METHOD_59:
case CFG_METHOD_60:
+ case CFG_METHOD_61:
case CFG_METHOD_91:
hw->HwSuppIntMitiVer = 6;
break;
@@ -2362,6 +2352,8 @@ rtl_get_mac_version(struct rtl_hw *hw, struct rte_pci_device *pci_dev)
hw->mcfg = CFG_METHOD_56;
} else if (ic_version_id == 0x100000) {
hw->mcfg = CFG_METHOD_57;
+ } else if (ic_version_id == 0x200000) {
+ hw->mcfg = CFG_METHOD_61;
} else if (ic_version_id == 0x300000) {
hw->mcfg = CFG_METHOD_60;
} else {
diff --git a/drivers/net/r8169/r8169_phy.c b/drivers/net/r8169/r8169_phy.c
index de6e512375..079b9e5f00 100644
--- a/drivers/net/r8169/r8169_phy.c
+++ b/drivers/net/r8169/r8169_phy.c
@@ -1051,6 +1051,7 @@ rtl_disable_eee(struct rtl_hw *hw)
case CFG_METHOD_58:
case CFG_METHOD_59:
case CFG_METHOD_60:
+ case CFG_METHOD_61:
rtl_clear_mac_ocp_bit(hw, 0xE040, (BIT_1 | BIT_0));
rtl_set_eth_phy_ocp_bit(hw, 0xA432, BIT_4);
--
2.34.1
^ permalink raw reply related [flat|nested] 15+ messages in thread* [PATCH v3 11/12] net/r8169: fix one bug about RTL8168KB
2026-02-12 5:58 [PATCH v3 00/12] net/r8169: update driver with new HW support and fixes Howard Wang
` (9 preceding siblings ...)
2026-02-12 5:59 ` [PATCH v3 10/12] net/r8169: add support for RTL8125K Howard Wang
@ 2026-02-12 5:59 ` Howard Wang
2026-02-12 5:59 ` [PATCH v3 12/12] net/r8169: ensure the old mapping is used Howard Wang
2026-02-12 18:18 ` [PATCH v3 00/12] net/r8169: update driver with new HW support and fixes Stephen Hemminger
12 siblings, 0 replies; 15+ messages in thread
From: Howard Wang @ 2026-02-12 5:59 UTC (permalink / raw)
To: dev; +Cc: pro_nic_dpdk, Howard Wang
The RTL8168KB was incorrectly treated as a 2.5G device.
This chip actually supports a maximum speed of 1Gbps.
Fixes: 4e6ed7284f50 ("net/r8169: simplify config method check")
Signed-off-by: Howard Wang <howard_wang@realsil.com.cn>
---
drivers/net/r8169/r8169_ethdev.c | 1 -
drivers/net/r8169/r8169_hw.c | 1 -
2 files changed, 2 deletions(-)
diff --git a/drivers/net/r8169/r8169_ethdev.c b/drivers/net/r8169/r8169_ethdev.c
index 72e014e22b..b2b1882aa5 100644
--- a/drivers/net/r8169/r8169_ethdev.c
+++ b/drivers/net/r8169/r8169_ethdev.c
@@ -167,7 +167,6 @@ _rtl_setup_link(struct rte_eth_dev *dev)
switch (hw->chipset_name) {
case RTL8125A:
case RTL8125B:
- case RTL8168KB:
case RTL8125BP:
case RTL8125D:
case RTL8125CP:
diff --git a/drivers/net/r8169/r8169_hw.c b/drivers/net/r8169/r8169_hw.c
index aa5e160feb..acc16f3e48 100644
--- a/drivers/net/r8169/r8169_hw.c
+++ b/drivers/net/r8169/r8169_hw.c
@@ -1550,7 +1550,6 @@ rtl_init_software_variable(struct rtl_hw *hw, struct rte_pci_device *pci_dev)
switch (hw->chipset_name) {
case RTL8125A:
case RTL8125B:
- case RTL8168KB:
case RTL8125BP:
case RTL8125D:
case RTL8125CP:
--
2.34.1
^ permalink raw reply related [flat|nested] 15+ messages in thread* [PATCH v3 12/12] net/r8169: ensure the old mapping is used
2026-02-12 5:58 [PATCH v3 00/12] net/r8169: update driver with new HW support and fixes Howard Wang
` (10 preceding siblings ...)
2026-02-12 5:59 ` [PATCH v3 11/12] net/r8169: fix one bug about RTL8168KB Howard Wang
@ 2026-02-12 5:59 ` Howard Wang
2026-02-12 18:18 ` [PATCH v3 00/12] net/r8169: update driver with new HW support and fixes Stephen Hemminger
12 siblings, 0 replies; 15+ messages in thread
From: Howard Wang @ 2026-02-12 5:59 UTC (permalink / raw)
To: dev; +Cc: pro_nic_dpdk, Howard Wang
Fix the incorrect link status reported when binding the PMD after
the NIC has been initialized by the vendor driver.
Fixes: 619f6ebce115 ("net/r8169: support hardware configuration")
Signed-off-by: Howard Wang <howard_wang@realsil.com.cn>
---
drivers/net/r8169/r8169_hw.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/drivers/net/r8169/r8169_hw.c b/drivers/net/r8169/r8169_hw.c
index acc16f3e48..27d52c81c9 100644
--- a/drivers/net/r8169/r8169_hw.c
+++ b/drivers/net/r8169/r8169_hw.c
@@ -1083,6 +1083,9 @@ rtl8125_hw_config(struct rtl_hw *hw)
rtl_mac_ocp_write(hw, 0xE098, 0xC302);
+ /* Ensure the old mapping is used. */
+ RTL_W8(hw, INT_CFG0_8125, RTL_R8(hw, INT_CFG0_8125) & ~BIT_0);
+
rtl_disable_cfg9346_write(hw);
rte_delay_us(10);
--
2.34.1
^ permalink raw reply related [flat|nested] 15+ messages in thread* Re: [PATCH v3 00/12] net/r8169: update driver with new HW support and fixes
2026-02-12 5:58 [PATCH v3 00/12] net/r8169: update driver with new HW support and fixes Howard Wang
` (11 preceding siblings ...)
2026-02-12 5:59 ` [PATCH v3 12/12] net/r8169: ensure the old mapping is used Howard Wang
@ 2026-02-12 18:18 ` Stephen Hemminger
2026-02-13 3:11 ` 回复: " 王颢
12 siblings, 1 reply; 15+ messages in thread
From: Stephen Hemminger @ 2026-02-12 18:18 UTC (permalink / raw)
To: Howard Wang; +Cc: dev, pro_nic_dpdk
On Thu, 12 Feb 2026 13:58:50 +0800
Howard Wang <howard_wang@realsil.com.cn> wrote:
> This patch set updates the r8169 pmd driver to include support for new
> Realtek hardware revisions and provides several bug fixes and improvements.
>
> The main changes include:
>
> 1. New Hardware Support:
> - Add support for RTL8125K, RTL9151 and RTL8168KD.
>
> 2. Bug Fixes:
> - Fix a bug related to RTL8168KB.
> - Fix a potential NULL pointer dereference in rtl8168fp_ops.
> - Fix the incorrect link status reported when binding the PMD after
> the NIC has been initialized by the vendor driver.
>
> 3. Configuration & Optimization:
> - Update hardware configurations for 8125, 8126, and 8127 series.
> - Adjust jumbo frame size limits for non-1G cards.
> - Tune RX descriptor fetch number for 8126 and 8127 to improve performance.
> - Remove support for legacy CFG_METHOD_69.
>
> Howard Wang (12):
> net/r8169: fix crash in RTL8168FP init
> net/r8169: optimize Rx descriptor fetch number
> net/r8169: add support for RTL8168KD
> net/r8169: update hardware configurations for 8127
> net/r8169: adjust jumbo frame size limit for non-1G cards
> net/r8169: remove support for CFG_METHOD_69
> net/r8169: update hardware configurations for 8126
> net/r8169: update hardware configurations for 8125
> net/r8169: add support for RTL9151
> net/r8169: add support for RTL8125K
> net/r8169: fix one bug about RTL8168KB
> net/r8169: ensure the old mapping is used
>
> drivers/net/r8169/base/rtl8125a_mcu.c | 128 +--
> drivers/net/r8169/base/rtl8125b_mcu.c | 56 +-
> drivers/net/r8169/base/rtl8125bp_mcu.c | 17 +-
> drivers/net/r8169/base/rtl8125cp.c | 36 +
> drivers/net/r8169/base/rtl8125cp_mcu.c | 87 +-
> drivers/net/r8169/base/rtl8125cp_mcu.h | 1 +
> drivers/net/r8169/base/rtl8125d.c | 31 +-
> drivers/net/r8169/base/rtl8125d_mcu.c | 605 +++++++----
> drivers/net/r8169/base/rtl8125d_mcu.h | 1 +
> drivers/net/r8169/base/rtl8126a.c | 32 +-
> drivers/net/r8169/base/rtl8126a_mcu.c | 689 +-----------
> drivers/net/r8169/base/rtl8126a_mcu.h | 2 -
> drivers/net/r8169/base/rtl8127.c | 15 +-
> drivers/net/r8169/base/rtl8127_mcu.c | 1332 +++++++++++++++++-------
> drivers/net/r8169/base/rtl8168fp.c | 1 +
> drivers/net/r8169/base/rtl8168fp.h | 1 +
> drivers/net/r8169/base/rtl8168fp_mcu.c | 6 +
> drivers/net/r8169/base/rtl9151a.c | 87 ++
> drivers/net/r8169/base/rtl9151a.h | 10 +
> drivers/net/r8169/base/rtl9151a_mcu.c | 53 +
> drivers/net/r8169/meson.build | 2 +
> drivers/net/r8169/r8169_compat.h | 10 +-
> drivers/net/r8169/r8169_ethdev.c | 36 +-
> drivers/net/r8169/r8169_ethdev.h | 3 +
> drivers/net/r8169/r8169_fiber.c | 15 +-
> drivers/net/r8169/r8169_hw.c | 239 +++--
> drivers/net/r8169/r8169_hw.h | 11 +-
> drivers/net/r8169/r8169_phy.c | 54 +-
> drivers/net/r8169/r8169_rxtx.c | 1 -
> 29 files changed, 2058 insertions(+), 1503 deletions(-)
> create mode 100644 drivers/net/r8169/base/rtl9151a.c
> create mode 100644 drivers/net/r8169/base/rtl9151a.h
> create mode 100644 drivers/net/r8169/base/rtl9151a_mcu.c
>
Better but AI review flagged some issues:
Most significant: Patch 4 has what looks like a real mask inversion bug
fix (&= (bits) → &= ~(bits)) in two places in r8169_fiber.c for RTL8127
SerDes configuration. The original code was AND'ing to keep only those
bits when it should have been clearing them before OR'ing in new
values. This fix is buried in a large hardware update patch with no
Fixes tag — it should really be split out as a standalone bugfix.
Process: Patches 1, 11, and 12 all have Fixes: tags but are missing Cc: stable@dpdk.org.
Minor: Patches 11 and 12 have vague commit subjects, and patch 5's
jumbo frame size switch may be missing some newer CFG_METHODs that the
commit message implies should get 16K. The bulk of the series (MCU
firmware blobs, PHY register programming, new chip enablement) is
typical vendor driver code that looks structurally sound — the patterns
match existing chip support code consistently.
Full details:
# DPDK net/r8169 v3 Patch Series Review
**Series**: [PATCH v3 01/12] through [PATCH v3 12/12]
**Author**: Howard Wang <howard_wang@realsil.com.cn>
**Delegate**: stephen@networkplumber.org
---
## Series Overview
This 12-patch series for the Realtek r8169 PMD includes:
- **Bug fixes** (patches 1, 11, 12): NULL pointer crash fix for RTL8168FP, incorrect 2.5G classification of RTL8168KB, and stale interrupt mapping after vendor driver initialization.
- **New chip support** (patches 3, 9, 10): RTL8168KD (1G), RTL9151 (2.5G), RTL8125K (2.5G).
- **Hardware configuration updates** (patches 4, 7, 8): Updated MCU firmware, PHY config, and tuning for RTL8127, RTL8126, and RTL8125 family chips.
- **Optimization** (patch 2): Rx descriptor fetch number tuning for RTL8126/RTL8127.
- **Cleanup** (patches 5, 6): Remove test chip CFG_METHOD_69 and adjust jumbo frame size limits.
The series is largely vendor firmware/register programming updates — the kind of code that's difficult to review for logical correctness without hardware documentation, but can be reviewed for structural issues, error handling, and process compliance.
---
## Findings
### Patch 1: net/r8169: fix crash in RTL8168FP init
**Error — Missing `Cc: stable@dpdk.org`**: This patch has a `Fixes:` tag indicating it corrects a regression (NULL pointer dereference during init). It should include `Cc: stable@dpdk.org` for stable release backport consideration.
### Patch 4: net/r8169: update hardware configurations for 8127
**Warning — Bug fix embedded in a feature patch without Fixes tag**: This patch changes two mask operations from `val &= (BIT_13 | BIT_12 | BIT_1 | BIT_0)` to `val &= ~(BIT_13 | BIT_12 | BIT_1 | BIT_0)`. The original code *keeps* only those bits (AND without NOT), while the new code *clears* those bits (AND with NOT). This is a significant behavioral change — it looks like a bug fix (the original almost certainly should have been clearing those bits before OR'ing in new values). This fix is buried inside a large hardware config update patch with no `Fixes:` tag. It should either be split into a separate fix patch with a proper `Fixes:` tag and `Cc: stable@dpdk.org`, or at least called out in the commit message.
The same `&= (bits)` to `&= ~(bits)` change appears at two sites in `r8169_fiber.c`:
- `rtl8127_set_sds_phy_caps_5g_8127()` (line 2364)
- `rtl8127_set_sds_phy_caps_10g_8127()` (line 2381)
### Patch 5: net/r8169: adjust jumbo frame size limit for non-1G cards
**Warning — Missing CFG_METHOD_59, CFG_METHOD_60, CFG_METHOD_61 in jumbo frame switch**: The switch statement for `max_rx_pktlen` lists specific CFG_METHODs for 16K frames but omits CFG_METHOD_52, CFG_METHOD_53, CFG_METHOD_59 (RTL8168KD, added in patch 3), CFG_METHOD_60 (RTL9151, added in patch 9), and CFG_METHOD_61 (RTL8125K, added in patch 10). These later chips fall into the `default` case and get 9K. This may be intentional (perhaps these chips only support 9K jumbo frames), but the commit message says "For other non-1G cards, set the max size to 16K" which contradicts the code — several 2.5G+ chips would still get the 9K default. Worth verifying intent.
### Patch 6: net/r8169: remove support for CFG_METHOD_69
**Warning — Removal of CFG_METHOD_69 from `hw_init_rxcfg_8126a` leaves an empty switch case fall-through**: After removing the `CFG_METHOD_69` case, `CFG_METHOD_70` and `CFG_METHOD_71` still exist but the switch now starts with `CFG_METHOD_70`. Not a bug, just noting the cleanup is consistent.
No issues with this patch.
### Patch 9: net/r8169: add support for RTL9151
**Warning — Missing CFG_METHOD_60 in several locations in r8169_hw.c**: When patch 10 (RTL8125K, CFG_METHOD_61) is reviewed, it adds CFG_METHOD_61 alongside CFG_METHOD_60 in multiple switch/if blocks (`rtl_stop_all_request`, `rtl_wait_txrx_fifo_empty`, `rtl8125_set_rx_desc_type`, etc.). Checking patch 9, CFG_METHOD_60 is *not* added to these same locations — it appears that patch 10 handles adding CFG_METHOD_60 to those locations retroactively. Per review guidelines, I'm assuming the author ordered patches correctly and these compile in sequence, but it's worth confirming that CFG_METHOD_60 is handled in `rtl_stop_all_request`, `rtl_wait_txrx_fifo_empty`, and `rtl8125_set_rx_desc_type` after the full series is applied.
### Patch 10: net/r8169: add support for RTL8125K
**Info — HwSuppCheckPhyDisableModeVer simplification**: The switch converting many explicit `CFG_METHOD_*` cases to a `default` for `HwSuppCheckPhyDisableModeVer = 3` is a welcome simplification. However, this means any future unrecognized CFG_METHOD will get version 3. This seems intentional and reasonable as a catch-all.
### Patch 11: net/r8169: fix one bug about RTL8168KB
**Error — Missing `Cc: stable@dpdk.org`**: This patch has a `Fixes:` tag. The RTL8168KB was being incorrectly treated as a 2.5G device which could cause link negotiation issues. Should have `Cc: stable@dpdk.org`.
**Warning — Commit subject**: "fix one bug about RTL8168KB" is vague. A more descriptive subject like `net/r8169: fix RTL8168KB speed classification` would be clearer.
### Patch 12: net/r8169: ensure the old mapping is used
**Error — Missing `Cc: stable@dpdk.org`**: This patch has a `Fixes:` tag correcting incorrect link status when taking over from the vendor kernel driver. Should have `Cc: stable@dpdk.org`.
**Warning — Commit message could be more descriptive**: "ensure the old mapping is used" is somewhat opaque. The body explains it fixes incorrect link status when binding after the vendor driver, but the subject line doesn't convey what "mapping" refers to (interrupt register mapping). Consider something like `net/r8169: fix link status after vendor driver unbind`.
---
## Patches With No Issues Found
Patches 2, 3, 6, 7, 8 — no issues identified.
---
## Summary
| Severity | Count | Details |
|----------|-------|---------|
| Error | 3 | Missing `Cc: stable@dpdk.org` on patches 1, 11, 12 (all have Fixes tags) |
| Warning | 4 | Bug fix buried in feature patch (patch 4); missing CFG_METHODs in jumbo size (patch 5); vague commit subjects (patches 11, 12) |
| Info | 1 | Default case simplification in patch 10 |
The most technically significant finding is the `&= (bits)` → `&= ~(bits)` fix in patch 4, which corrects what appears to be a real mask inversion bug in the fiber/SerDes configuration for RTL8127. This should ideally be a standalone fix with a Fixes tag rather than buried in a large hardware update.
^ permalink raw reply [flat|nested] 15+ messages in thread* 回复: [PATCH v3 00/12] net/r8169: update driver with new HW support and fixes
2026-02-12 18:18 ` [PATCH v3 00/12] net/r8169: update driver with new HW support and fixes Stephen Hemminger
@ 2026-02-13 3:11 ` 王颢
0 siblings, 0 replies; 15+ messages in thread
From: 王颢 @ 2026-02-13 3:11 UTC (permalink / raw)
To: Stephen Hemminger; +Cc: dev@dpdk.org, pro_nic_dpdk@realtek.com
Hi,
Thank you for the review.
Regarding the CC to stable:
I will add Cc: stable@dpdk.org as requested.
Regarding Patch 4:
I will split it into two separate patches and provide a detailed explanation for each.
Regarding Patch 5:
The support for RTL9151 and RTL8125K is introduced in the patches following Patch 5. Therefore, the modifications for their max_rx_pktlen are included in the specific patches that add support for those chips.
Regarding Patch 9:
I am not sure how the AI arrived at the conclusion stating: "Warning — Missing CFG_METHOD_60 in several locations in r8169_hw.c...". This conclusion is completely incorrect and baseless.
Best regards,
Howard
-----邮件原件-----
发件人: Stephen Hemminger <stephen@networkplumber.org>
发送时间: 2026年2月13日 2:18
收件人: 王颢 <howard_wang@realsil.com.cn>
抄送: dev@dpdk.org; pro_nic_dpdk@realtek.com
主题: Re: [PATCH v3 00/12] net/r8169: update driver with new HW support and fixes
External mail : This email originated from outside the organization. Do not reply, click links, or open attachments unless you recognize the sender and know the content is safe.
On Thu, 12 Feb 2026 13:58:50 +0800
Howard Wang <howard_wang@realsil.com.cn> wrote:
> This patch set updates the r8169 pmd driver to include support for new
> Realtek hardware revisions and provides several bug fixes and improvements.
>
> The main changes include:
>
> 1. New Hardware Support:
> - Add support for RTL8125K, RTL9151 and RTL8168KD.
>
> 2. Bug Fixes:
> - Fix a bug related to RTL8168KB.
> - Fix a potential NULL pointer dereference in rtl8168fp_ops.
> - Fix the incorrect link status reported when binding the PMD after
> the NIC has been initialized by the vendor driver.
>
> 3. Configuration & Optimization:
> - Update hardware configurations for 8125, 8126, and 8127 series.
> - Adjust jumbo frame size limits for non-1G cards.
> - Tune RX descriptor fetch number for 8126 and 8127 to improve performance.
> - Remove support for legacy CFG_METHOD_69.
>
> Howard Wang (12):
> net/r8169: fix crash in RTL8168FP init
> net/r8169: optimize Rx descriptor fetch number
> net/r8169: add support for RTL8168KD
> net/r8169: update hardware configurations for 8127
> net/r8169: adjust jumbo frame size limit for non-1G cards
> net/r8169: remove support for CFG_METHOD_69
> net/r8169: update hardware configurations for 8126
> net/r8169: update hardware configurations for 8125
> net/r8169: add support for RTL9151
> net/r8169: add support for RTL8125K
> net/r8169: fix one bug about RTL8168KB
> net/r8169: ensure the old mapping is used
>
> drivers/net/r8169/base/rtl8125a_mcu.c | 128 +--
> drivers/net/r8169/base/rtl8125b_mcu.c | 56 +-
> drivers/net/r8169/base/rtl8125bp_mcu.c | 17 +-
> drivers/net/r8169/base/rtl8125cp.c | 36 +
> drivers/net/r8169/base/rtl8125cp_mcu.c | 87 +-
> drivers/net/r8169/base/rtl8125cp_mcu.h | 1 +
> drivers/net/r8169/base/rtl8125d.c | 31 +-
> drivers/net/r8169/base/rtl8125d_mcu.c | 605 +++++++----
> drivers/net/r8169/base/rtl8125d_mcu.h | 1 +
> drivers/net/r8169/base/rtl8126a.c | 32 +-
> drivers/net/r8169/base/rtl8126a_mcu.c | 689 +-----------
> drivers/net/r8169/base/rtl8126a_mcu.h | 2 -
> drivers/net/r8169/base/rtl8127.c | 15 +-
> drivers/net/r8169/base/rtl8127_mcu.c | 1332 +++++++++++++++++-------
> drivers/net/r8169/base/rtl8168fp.c | 1 +
> drivers/net/r8169/base/rtl8168fp.h | 1 +
> drivers/net/r8169/base/rtl8168fp_mcu.c | 6 +
> drivers/net/r8169/base/rtl9151a.c | 87 ++
> drivers/net/r8169/base/rtl9151a.h | 10 +
> drivers/net/r8169/base/rtl9151a_mcu.c | 53 +
> drivers/net/r8169/meson.build | 2 +
> drivers/net/r8169/r8169_compat.h | 10 +-
> drivers/net/r8169/r8169_ethdev.c | 36 +-
> drivers/net/r8169/r8169_ethdev.h | 3 +
> drivers/net/r8169/r8169_fiber.c | 15 +-
> drivers/net/r8169/r8169_hw.c | 239 +++--
> drivers/net/r8169/r8169_hw.h | 11 +-
> drivers/net/r8169/r8169_phy.c | 54 +-
> drivers/net/r8169/r8169_rxtx.c | 1 -
> 29 files changed, 2058 insertions(+), 1503 deletions(-) create mode
> 100644 drivers/net/r8169/base/rtl9151a.c create mode 100644
> drivers/net/r8169/base/rtl9151a.h create mode 100644
> drivers/net/r8169/base/rtl9151a_mcu.c
>
Better but AI review flagged some issues:
Most significant: Patch 4 has what looks like a real mask inversion bug fix (&= (bits) → &= ~(bits)) in two places in r8169_fiber.c for RTL8127 SerDes configuration. The original code was AND'ing to keep only those bits when it should have been clearing them before OR'ing in new values. This fix is buried in a large hardware update patch with no Fixes tag — it should really be split out as a standalone bugfix.
Process: Patches 1, 11, and 12 all have Fixes: tags but are missing Cc: stable@dpdk.org.
Minor: Patches 11 and 12 have vague commit subjects, and patch 5's jumbo frame size switch may be missing some newer CFG_METHODs that the commit message implies should get 16K. The bulk of the series (MCU firmware blobs, PHY register programming, new chip enablement) is typical vendor driver code that looks structurally sound — the patterns match existing chip support code consistently.
Full details:
# DPDK net/r8169 v3 Patch Series Review
**Series**: [PATCH v3 01/12] through [PATCH v3 12/12]
**Author**: Howard Wang <howard_wang@realsil.com.cn>
**Delegate**: stephen@networkplumber.org
---
## Series Overview
This 12-patch series for the Realtek r8169 PMD includes:
- **Bug fixes** (patches 1, 11, 12): NULL pointer crash fix for RTL8168FP, incorrect 2.5G classification of RTL8168KB, and stale interrupt mapping after vendor driver initialization.
- **New chip support** (patches 3, 9, 10): RTL8168KD (1G), RTL9151 (2.5G), RTL8125K (2.5G).
- **Hardware configuration updates** (patches 4, 7, 8): Updated MCU firmware, PHY config, and tuning for RTL8127, RTL8126, and RTL8125 family chips.
- **Optimization** (patch 2): Rx descriptor fetch number tuning for RTL8126/RTL8127.
- **Cleanup** (patches 5, 6): Remove test chip CFG_METHOD_69 and adjust jumbo frame size limits.
The series is largely vendor firmware/register programming updates — the kind of code that's difficult to review for logical correctness without hardware documentation, but can be reviewed for structural issues, error handling, and process compliance.
---
## Findings
### Patch 1: net/r8169: fix crash in RTL8168FP init
**Error — Missing `Cc: stable@dpdk.org`**: This patch has a `Fixes:` tag indicating it corrects a regression (NULL pointer dereference during init). It should include `Cc: stable@dpdk.org` for stable release backport consideration.
### Patch 4: net/r8169: update hardware configurations for 8127
**Warning — Bug fix embedded in a feature patch without Fixes tag**: This patch changes two mask operations from `val &= (BIT_13 | BIT_12 | BIT_1 | BIT_0)` to `val &= ~(BIT_13 | BIT_12 | BIT_1 | BIT_0)`. The original code *keeps* only those bits (AND without NOT), while the new code *clears* those bits (AND with NOT). This is a significant behavioral change — it looks like a bug fix (the original almost certainly should have been clearing those bits before OR'ing in new values). This fix is buried inside a large hardware config update patch with no `Fixes:` tag. It should either be split into a separate fix patch with a proper `Fixes:` tag and `Cc: stable@dpdk.org`, or at least called out in the commit message.
The same `&= (bits)` to `&= ~(bits)` change appears at two sites in `r8169_fiber.c`:
- `rtl8127_set_sds_phy_caps_5g_8127()` (line 2364)
- `rtl8127_set_sds_phy_caps_10g_8127()` (line 2381)
### Patch 5: net/r8169: adjust jumbo frame size limit for non-1G cards
**Warning — Missing CFG_METHOD_59, CFG_METHOD_60, CFG_METHOD_61 in jumbo frame switch**: The switch statement for `max_rx_pktlen` lists specific CFG_METHODs for 16K frames but omits CFG_METHOD_52, CFG_METHOD_53, CFG_METHOD_59 (RTL8168KD, added in patch 3), CFG_METHOD_60 (RTL9151, added in patch 9), and CFG_METHOD_61 (RTL8125K, added in patch 10). These later chips fall into the `default` case and get 9K. This may be intentional (perhaps these chips only support 9K jumbo frames), but the commit message says "For other non-1G cards, set the max size to 16K" which contradicts the code — several 2.5G+ chips would still get the 9K default. Worth verifying intent.
### Patch 6: net/r8169: remove support for CFG_METHOD_69
**Warning — Removal of CFG_METHOD_69 from `hw_init_rxcfg_8126a` leaves an empty switch case fall-through**: After removing the `CFG_METHOD_69` case, `CFG_METHOD_70` and `CFG_METHOD_71` still exist but the switch now starts with `CFG_METHOD_70`. Not a bug, just noting the cleanup is consistent.
No issues with this patch.
### Patch 9: net/r8169: add support for RTL9151
**Warning — Missing CFG_METHOD_60 in several locations in r8169_hw.c**: When patch 10 (RTL8125K, CFG_METHOD_61) is reviewed, it adds CFG_METHOD_61 alongside CFG_METHOD_60 in multiple switch/if blocks (`rtl_stop_all_request`, `rtl_wait_txrx_fifo_empty`, `rtl8125_set_rx_desc_type`, etc.). Checking patch 9, CFG_METHOD_60 is *not* added to these same locations — it appears that patch 10 handles adding CFG_METHOD_60 to those locations retroactively. Per review guidelines, I'm assuming the author ordered patches correctly and these compile in sequence, but it's worth confirming that CFG_METHOD_60 is handled in `rtl_stop_all_request`, `rtl_wait_txrx_fifo_empty`, and `rtl8125_set_rx_desc_type` after the full series is applied.
### Patch 10: net/r8169: add support for RTL8125K
**Info — HwSuppCheckPhyDisableModeVer simplification**: The switch converting many explicit `CFG_METHOD_*` cases to a `default` for `HwSuppCheckPhyDisableModeVer = 3` is a welcome simplification. However, this means any future unrecognized CFG_METHOD will get version 3. This seems intentional and reasonable as a catch-all.
### Patch 11: net/r8169: fix one bug about RTL8168KB
**Error — Missing `Cc: stable@dpdk.org`**: This patch has a `Fixes:` tag. The RTL8168KB was being incorrectly treated as a 2.5G device which could cause link negotiation issues. Should have `Cc: stable@dpdk.org`.
**Warning — Commit subject**: "fix one bug about RTL8168KB" is vague. A more descriptive subject like `net/r8169: fix RTL8168KB speed classification` would be clearer.
### Patch 12: net/r8169: ensure the old mapping is used
**Error — Missing `Cc: stable@dpdk.org`**: This patch has a `Fixes:` tag correcting incorrect link status when taking over from the vendor kernel driver. Should have `Cc: stable@dpdk.org`.
**Warning — Commit message could be more descriptive**: "ensure the old mapping is used" is somewhat opaque. The body explains it fixes incorrect link status when binding after the vendor driver, but the subject line doesn't convey what "mapping" refers to (interrupt register mapping). Consider something like `net/r8169: fix link status after vendor driver unbind`.
---
## Patches With No Issues Found
Patches 2, 3, 6, 7, 8 — no issues identified.
---
## Summary
| Severity | Count | Details |
|----------|-------|---------|
| Error | 3 | Missing `Cc: stable@dpdk.org` on patches 1, 11, 12 (all
| have Fixes tags) | Warning | 4 | Bug fix buried in feature patch
| (patch 4); missing CFG_METHODs in jumbo size (patch 5); vague commit
| subjects (patches 11, 12) | Info | 1 | Default case simplification in
| patch 10 |
The most technically significant finding is the `&= (bits)` → `&= ~(bits)` fix in patch 4, which corrects what appears to be a real mask inversion bug in the fiber/SerDes configuration for RTL8127. This should ideally be a standalone fix with a Fixes tag rather than buried in a large hardware update.
^ permalink raw reply [flat|nested] 15+ messages in thread