From: Jonas Jelonek Date: Tue, 10 Feb 2026 13:52:20 +0000 (+0000) Subject: realtek: pcs: rtl931x: add 2500Base-X mode X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=cf1f06817ce2c2f518a11ca3d0a89aa1cf2bcb91;p=thirdparty%2Fopenwrt.git 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 Link: https://github.com/openwrt/openwrt/pull/22014 Signed-off-by: Hauke Mehrtens --- 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 713abf68b9c..d72477ab0b1 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;