summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJonas Jelonek2026-02-10 13:52:20 +0000
committerHauke Mehrtens2026-02-14 19:40:40 +0000
commitcf1f06817ce2c2f518a11ca3d0a89aa1cf2bcb91 (patch)
treecb343c70f1c92572386598794352fa5557b7eb8d
parentca9e38963f23a71d42bd2542b42a9db96f88903d (diff)
downloadopenwrt-cf1f06817ce2c2f518a11ca3d0a89aa1cf2bcb91.tar.gz
realtek: pcs: rtl931x: add 2500Base-X mode
Add 2500Base-X handling to mode setting which was rejected with -ENOTSUPP before. SDK code available to us doesn't have the proper mode value. Though by brute-forcing different mode values, 0x2d was found to make a 2500Base-X link work. This was tested with an otherwise correctly configured RTL8221B PHY which is automatically switched between 2500Base-X and SGMII in the upstream driver. Though, since there was a previous U-Boot setup for the PHY in HISGMII mode, it may not be standalone yet. Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com> Link: https://github.com/openwrt/openwrt/pull/22014 Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
-rw-r--r--target/linux/realtek/files-6.12/drivers/net/pcs/pcs-rtl-otto.c7
1 files changed, 7 insertions, 0 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 713abf68b9..d72477ab0b 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
@@ -3148,6 +3148,13 @@ static int rtpcs_931x_sds_set_ip_mode(struct rtpcs_serdes *sds,
mode_val = 0x9;
break;
+ case RTPCS_SDS_MODE_2500BASEX:
+ /* available SDK code doesn't have this value. based on brute-forcing
+ * the SerDes mode register field until the link is working
+ */
+ mode_val = 0x2d;
+ break;
+
case RTPCS_SDS_MODE_10GBASER:
mode_val = 0x35;
break;