[openwrt/openwrt] realtek: dsa,pcs: rtl930x: Disable SerDes patching for 10G-QXGMII

LEDE Commits lede-commits at lists.infradead.org
Sun Nov 2 07:31:34 PST 2025


robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/87c76704d263048d6c146ed0137d79f9ce008074

commit 87c76704d263048d6c146ed0137d79f9ce008074
Author: Sven Eckelmann <se at simonwunderlich.de>
AuthorDate: Wed Oct 29 16:00:03 2025 +0100

    realtek: dsa,pcs: rtl930x: Disable SerDes patching for 10G-QXGMII
    
    The code to add bootstrapping for 10G-QXGMII on RTL930X broke the only
    devices which are using 10G-QXGMII on RTL930X (Plasma Cloud PSX8+PSX10) in
    OpenWrt. It is currently unknown what other changes are pending to get this
    correctly working. But both the `rtpcs_930x_sds_usxgmii_config()` call and
    the write of the "magic" SerDes values in the patching process break the
    SerDes connected to the RTL8224 PHYs.
    
    The Plasma Cloud PSX8+PSX10 devices get their RTL8224 and the 10G-QXGMII
    SerDes bootstrapped directly by u-boot.
    
    Fixes: dca20f91ea12 ("realtek: add serdes patch for 10G_QXGMII")
    Signed-off-by: Sven Eckelmann <se at simonwunderlich.de>
    Link: https://github.com/openwrt/openwrt/pull/20588
    Signed-off-by: Robert Marko <robimarko at gmail.com>
---
 .../files-6.12/drivers/net/pcs/pcs-rtl-otto.c      | 49 +---------------------
 1 file changed, 1 insertion(+), 48 deletions(-)

diff --git a/target/linux/realtek/files-6.12/drivers/net/pcs/pcs-rtl-otto.c b/target/linux/realtek/files-6.12/drivers/net/pcs/pcs-rtl-otto.c
index f3490c48f6..bbc0167153 100644
--- a/target/linux/realtek/files-6.12/drivers/net/pcs/pcs-rtl-otto.c
+++ b/target/linux/realtek/files-6.12/drivers/net/pcs/pcs-rtl-otto.c
@@ -1756,46 +1756,6 @@ static const sds_config rtpcs_930x_sds_cfg_10g_2500bx_odd[] =
 	{0x2D, 0x13, 0x3C87}, {0x2D, 0x14, 0x1808},
 };
 
-static sds_config rtpcs_930x_sds_cfg_usxgmii_qx_even[] =
-{
-    {0x06, 0x00, 0x0000}, {0x06, 0x0D, 0x0F00}, {0x06, 0x0E, 0x055A}, {0x06, 0x1D, 0x0600},
-    {0x07, 0x10, 0x6003}, {0x06, 0x13, 0x68C1}, {0x06, 0x14, 0xF021}, {0x07, 0x06, 0x1401},
-    {0x21, 0x03, 0x8206}, {0x21, 0x05, 0x40B0}, {0x21, 0x06, 0x0010}, {0x21, 0x07, 0xF09F},
-    {0x21, 0x0C, 0x0007}, {0x21, 0x0D, 0x6009}, {0x21, 0x0E, 0x0000}, {0x21, 0x0F, 0x0008},
-    {0x2E, 0x00, 0xA668}, {0x2E, 0x01, 0x2088}, {0x2E, 0x02, 0xD020}, {0x2E, 0x06, 0xC000},
-    {0x2E, 0x0B, 0x1892}, {0x2E, 0x0F, 0xFFDF}, {0x2E, 0x11, 0x8280}, {0x2E, 0x12, 0x0484},
-    {0x2E, 0x13, 0x027F}, {0x2E, 0x14, 0x1311}, {0x2E, 0x17, 0xA100}, {0x2E, 0x1A, 0x0001},
-    {0x2E, 0x1C, 0x0400}, {0x2F, 0x01, 0x0300}, {0x2F, 0x02, 0x1017}, {0x2F, 0x03, 0xFFDF},
-    {0x2F, 0x05, 0x7F7C}, {0x2F, 0x07, 0x8104}, {0x2F, 0x08, 0x0001}, {0x2F, 0x09, 0xFFD4},
-    {0x2F, 0x0A, 0x7C2F}, {0x2F, 0x0E, 0x003F}, {0x2F, 0x0F, 0x0121}, {0x2F, 0x10, 0x0020},
-    {0x2F, 0x11, 0x8840},
-    {0x2B, 0x13, 0x0050}, {0x2B, 0x18, 0x8E88}, {0x2B, 0x19, 0x4902}, {0x2B, 0x1D, 0x2501},
-    {0x2D, 0x13, 0x0050}, {0x2D, 0x18, 0x8E88}, {0x2D, 0x19, 0x4902}, {0x2D, 0x1D, 0x2641},
-    {0x2F, 0x13, 0x0050}, {0x2F, 0x18, 0x8E88}, {0x2F, 0x19, 0x4902}, {0x2F, 0x1D, 0x66E1},
-    /* enable IEEE 802.3az EEE */
-    {0x06, 0x03, 0xc45c},
-};
-
-static sds_config rtpcs_930x_sds_cfg_usxgmii_qx_odd[] =
-{
-    {0x06, 0x00, 0x0000}, {0x06, 0x0D, 0x0F00}, {0x06, 0x0E, 0x055A}, {0x06, 0x1D, 0x0600},
-    {0x07, 0x10, 0x6003}, {0x06, 0x13, 0x68C1}, {0x06, 0x14, 0xF021}, {0x07, 0x06, 0x1401},
-    {0x21, 0x03, 0x8206}, {0x21, 0x05, 0x40B0}, {0x21, 0x06, 0x0010}, {0x21, 0x07, 0xF09F},
-    {0x21, 0x0A, 0x0003}, {0x21, 0x0B, 0x0005}, {0x21, 0x0C, 0x0007}, {0x21, 0x0D, 0x6009},
-    {0x21, 0x0E, 0x0000}, {0x21, 0x0F, 0x0008},
-    {0x2E, 0x00, 0xA668}, {0x2E, 0x02, 0xD020}, {0x2E, 0x06, 0xC000}, {0x2E, 0x0B, 0x1892},
-    {0x2E, 0x0F, 0xFFDF}, {0x2E, 0x11, 0x8280}, {0x2E, 0x12, 0x0484}, {0x2E, 0x13, 0x027F},
-    {0x2E, 0x14, 0x1311}, {0x2E, 0x17, 0xA100}, {0x2E, 0x1A, 0x0001}, {0x2E, 0x1C, 0x0400},
-    {0x2F, 0x00, 0x820F}, {0x2F, 0x01, 0x0300}, {0x2F, 0x02, 0x1017}, {0x2F, 0x03, 0xFFDF},
-    {0x2F, 0x05, 0x7F7C}, {0x2F, 0x07, 0x8104}, {0x2F, 0x08, 0x0001}, {0x2F, 0x09, 0xFFD4},
-    {0x2F, 0x0A, 0x7C2F}, {0x2F, 0x0E, 0x003F}, {0x2F, 0x0F, 0x0121}, {0x2F, 0x10, 0x0020},
-    {0x2F, 0x11, 0x8840},
-    {0x2B, 0x13, 0x3D87}, {0x2B, 0x14, 0x3108},
-    {0x2D, 0x13, 0x3C87}, {0x2D, 0x14, 0x1808},
-    /* enable IEEE 802.3az EEE */
-    {0x06, 0x03, 0xc45c},
-};
-
 static void rtpcs_930x_sds_usxgmii_config(struct rtpcs_ctrl *ctrl, int sds,
 					  int nway_en, u32 opcode, u32 am_period,
 					  u32 all_am_markers, u32 an_table,
@@ -1853,14 +1813,7 @@ static void rtpcs_930x_sds_patch(struct rtpcs_ctrl *ctrl, int sds, phy_interface
 		break;
 
 	case PHY_INTERFACE_MODE_10G_QXGMII:
-		if (even_sds) {
-			config = rtpcs_930x_sds_cfg_usxgmii_qx_even;
-			count = ARRAY_SIZE(rtpcs_930x_sds_cfg_usxgmii_qx_even);
-		} else {
-			config = rtpcs_930x_sds_cfg_usxgmii_qx_odd;
-			count = ARRAY_SIZE(rtpcs_930x_sds_cfg_usxgmii_qx_odd);
-		}
-		break;
+		return;
 
 	default:
 		pr_warn("%s: unsupported mode %s on serdes %d\n", __func__, phy_modes(mode), sds);




More information about the lede-commits mailing list