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>
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;