The current SerDes implementation for RTL931x handles 10G-QXGMII via the
"usxgmii" PHY mode. This is not 100% correct because it is not a single
port with 10G (max) but 4 ports with 2.5G each.
To allow setting of the "10g-qxgmii" phy mode, just change the code for now
to use the same codepaths as USXGMII. This has to be cleaned up further
during the SerDes driver rewrites.
Suggested-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Signed-off-by: Sven Eckelmann <se@simonwunderlich.de>
Link: https://github.com/openwrt/openwrt/pull/20239
Signed-off-by: Robert Marko <robimarko@gmail.com>
if (of_get_phy_mode(dn, &interface))
interface = PHY_INTERFACE_MODE_NA;
+
+ if (interface == PHY_INTERFACE_MODE_10G_QXGMII) {
+ interface = PHY_INTERFACE_MODE_USXGMII;
+ dev_warn(priv->dev, "handle mode 10g-qsxgmii internally as usxgmii for now\n");
+ }
+
if (interface == PHY_INTERFACE_MODE_USXGMII)
priv->ports[pn].is2G5 = priv->ports[pn].is10G = true;
if (interface == PHY_INTERFACE_MODE_10GBASER)
priv->interfaces[pn] = PHY_INTERFACE_MODE_NA;
dev_dbg(dev, "phy mode of port %d is %s\n", pn, phy_modes(priv->interfaces[pn]));
+ if (priv->interfaces[pn] == PHY_INTERFACE_MODE_10G_QXGMII) {
+ priv->interfaces[pn] = PHY_INTERFACE_MODE_USXGMII;
+ dev_warn(dev, "handle mode 10g-qsxgmii internally as usxgmii for now\n");
+ }
+
/*
* TODO: The MDIO driver does not need any info about the SerDes. As long as
* the PCS driver cannot completely control the SerDes, look up the information