[openwrt/openwrt] realtek: drop usage of proprietary HSGMII mode

LEDE Commits lede-commits at lists.infradead.org
Fri Sep 12 12:00:56 PDT 2025


hauke pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/61b72cb736b8df5bb0008d8af3cd0dba19d1ebf0

commit 61b72cb736b8df5bb0008d8af3cd0dba19d1ebf0
Author: Markus Stockhausen <markus.stockhausen at gmx.de>
AuthorDate: Wed Sep 10 01:37:08 2025 -0400

    realtek: drop usage of proprietary HSGMII mode
    
    The only consumers of the Realtek HSGMII (2.5G SGMII) mode were
    the RTL8226/RTL8221B PHYs. These have been converted to dynamic
    SGMII/2500base-x mode switching. Drop the leftovers of the mode
    implementation.
    
    Signed-off-by: Markus Stockhausen <markus.stockhausen at gmx.de>
    Link: https://github.com/openwrt/openwrt/pull/20002
    Signed-off-by: Hauke Mehrtens <hauke at hauke-m.de>
---
 .../files-6.12/drivers/net/dsa/rtl83xx/common.c    |  2 --
 .../files-6.12/drivers/net/dsa/rtl83xx/dsa.c       |  6 ------
 .../drivers/net/mdio/mdio-realtek-otto.c           |  3 ---
 .../files-6.12/drivers/net/phy/rtl83xx-phy.c       | 22 +---------------------
 4 files changed, 1 insertion(+), 32 deletions(-)

diff --git a/target/linux/realtek/files-6.12/drivers/net/dsa/rtl83xx/common.c b/target/linux/realtek/files-6.12/drivers/net/dsa/rtl83xx/common.c
index 8829180585..144ed01c88 100644
--- a/target/linux/realtek/files-6.12/drivers/net/dsa/rtl83xx/common.c
+++ b/target/linux/realtek/files-6.12/drivers/net/dsa/rtl83xx/common.c
@@ -348,8 +348,6 @@ static int __init rtl83xx_mdio_probe(struct rtl838x_switch_priv *priv)
 
 		if (of_get_phy_mode(dn, &interface))
 			interface = PHY_INTERFACE_MODE_NA;
-		if (interface == PHY_INTERFACE_MODE_HSGMII)
-			priv->ports[pn].is2G5 = true;
 		if (interface == PHY_INTERFACE_MODE_USXGMII)
 			priv->ports[pn].is2G5 = priv->ports[pn].is10G = true;
 		if (interface == PHY_INTERFACE_MODE_10GBASER)
diff --git a/target/linux/realtek/files-6.12/drivers/net/dsa/rtl83xx/dsa.c b/target/linux/realtek/files-6.12/drivers/net/dsa/rtl83xx/dsa.c
index a30c681c9a..57be6ffa54 100644
--- a/target/linux/realtek/files-6.12/drivers/net/dsa/rtl83xx/dsa.c
+++ b/target/linux/realtek/files-6.12/drivers/net/dsa/rtl83xx/dsa.c
@@ -823,12 +823,6 @@ static void rtl931x_phylink_mac_config(struct dsa_switch *ds, int port,
 	pr_info("%s: speed %d sds_num %d\n", __func__, state->speed, sds_num);
 
 	switch (state->interface) {
-	case PHY_INTERFACE_MODE_HSGMII:
-		pr_info("%s setting mode PHY_INTERFACE_MODE_HSGMII\n", __func__);
-		band = rtl931x_sds_cmu_band_get(sds_num, PHY_INTERFACE_MODE_HSGMII);
-		rtl931x_sds_init(sds_num, PHY_INTERFACE_MODE_HSGMII);
-		band = rtl931x_sds_cmu_band_set(sds_num, true, 62, PHY_INTERFACE_MODE_HSGMII);
-		break;
 	case PHY_INTERFACE_MODE_1000BASEX:
 		band = rtl931x_sds_cmu_band_get(sds_num, PHY_INTERFACE_MODE_1000BASEX);
 		rtl931x_sds_init(sds_num, PHY_INTERFACE_MODE_1000BASEX);
diff --git a/target/linux/realtek/files-6.12/drivers/net/mdio/mdio-realtek-otto.c b/target/linux/realtek/files-6.12/drivers/net/mdio/mdio-realtek-otto.c
index 6f3533cbbb..a1f5d2bf2c 100644
--- a/target/linux/realtek/files-6.12/drivers/net/mdio/mdio-realtek-otto.c
+++ b/target/linux/realtek/files-6.12/drivers/net/mdio/mdio-realtek-otto.c
@@ -1265,9 +1265,6 @@ static int rtmdio_930x_reset(struct mii_bus *bus)
 		switch (priv->interfaces[i]) {
 		case PHY_INTERFACE_MODE_10GBASER:
 			break;			/* Serdes: Value = 0 */
-		case PHY_INTERFACE_MODE_HSGMII:
-			private_poll_mask |= BIT(i);
-			fallthrough;
 		case PHY_INTERFACE_MODE_USXGMII:
 			v |= BIT(mac_type_bit[i]);
 			uses_usxgmii = true;
diff --git a/target/linux/realtek/files-6.12/drivers/net/phy/rtl83xx-phy.c b/target/linux/realtek/files-6.12/drivers/net/phy/rtl83xx-phy.c
index 8e1abef20e..ec1e24d749 100644
--- a/target/linux/realtek/files-6.12/drivers/net/phy/rtl83xx-phy.c
+++ b/target/linux/realtek/files-6.12/drivers/net/phy/rtl83xx-phy.c
@@ -75,7 +75,6 @@ extern int rtmdio_931x_write_sds_phy_new(int sds, int page, int regnum, u16 val)
 #define RTL930X_SDS_MODE_1000BASEX	0x04
 #define RTL930X_SDS_MODE_USXGMII	0x0d
 #define RTL930X_SDS_MODE_XGMII		0x10
-#define RTL930X_SDS_MODE_HSGMII		0x12
 #define RTL930X_SDS_MODE_2500BASEX	0x16
 #define RTL930X_SDS_MODE_10GBASER	0x1a
 #define RTL930X_SDS_OFF			0x1f
@@ -1268,8 +1267,7 @@ static int rtsds_930x_config_pll(int sds, phy_interface_t interface)
 	if ((interface == PHY_INTERFACE_MODE_1000BASEX) ||
 	    (interface == PHY_INTERFACE_MODE_SGMII))
 		speed = RTSDS_930X_PLL_1000;
-	else if ((interface == PHY_INTERFACE_MODE_2500BASEX) ||
-		 (interface == PHY_INTERFACE_MODE_HSGMII))
+	else if (interface == PHY_INTERFACE_MODE_2500BASEX)
 		speed = RTSDS_930X_PLL_2500;
 	else if (interface == PHY_INTERFACE_MODE_10GBASER)
 		speed = RTSDS_930X_PLL_10000;
@@ -1350,9 +1348,6 @@ static void rtsds_930x_force_mode(int sds, phy_interface_t interface)
 	case PHY_INTERFACE_MODE_SGMII:
 		mode = RTL930X_SDS_MODE_SGMII;
 		break;
-	case PHY_INTERFACE_MODE_HSGMII:
-		mode = RTL930X_SDS_MODE_HSGMII;
-		break;
 	case PHY_INTERFACE_MODE_1000BASEX:
 		mode = RTL930X_SDS_MODE_1000BASEX;
 		break;
@@ -1409,7 +1404,6 @@ static void rtl9300_sds_tx_config(int sds, phy_interface_t phy_if)
 		post_amp = 0x1;
 		page = 0x25;
 		break;
-	case PHY_INTERFACE_MODE_HSGMII:
 	case PHY_INTERFACE_MODE_2500BASEX:
 		pre_amp = 0;
 		post_amp = 0x8;
@@ -2772,7 +2766,6 @@ static int rtl931x_sds_cmu_page_get(phy_interface_t mode)
 	case PHY_INTERFACE_MODE_SGMII:
 	case PHY_INTERFACE_MODE_1000BASEX:	/* MII_1000BX_FIBER / 100BX_FIBER / 1000BX100BX_AUTO */
 		return 0x24;
-	case PHY_INTERFACE_MODE_HSGMII:
 	case PHY_INTERFACE_MODE_2500BASEX:	/* MII_2500Base_X: */
 		return 0x28;
 /*	case MII_HISGMII_5G: */
@@ -2818,11 +2811,6 @@ static void rtl931x_cmu_type_set(u32 sds, phy_interface_t mode, int chiptype)
 		frc_cmu_spd = 0;
 		break;
 
-	case PHY_INTERFACE_MODE_HSGMII:
-		cmu_type = 1;
-		frc_cmu_spd = 1;
-		break;
-
 	case PHY_INTERFACE_MODE_1000BASEX:
 		cmu_type = 1;
 		frc_cmu_spd = 0;
@@ -2927,9 +2915,6 @@ static void rtl931x_sds_mii_mode_set(u32 sds, phy_interface_t mode)
 	case PHY_INTERFACE_MODE_2500BASEX:
 		val = 0xD;
 		break;
-	case PHY_INTERFACE_MODE_HSGMII:
-		val = 0x12;
-		break;
 	case PHY_INTERFACE_MODE_SGMII:
 		val = 0x2;
 		break;
@@ -3096,10 +3081,6 @@ void rtl931x_sds_init(u32 sds, phy_interface_t mode)
 		rtl9310_sds_field_w_new(sds, 0x1f, 0x7, 10, 4, 0x7f);
 		break;
 
-	case PHY_INTERFACE_MODE_HSGMII:
-		rtl9310_sds_field_w_new(sds, 0x101, 0x14, 8, 8, 1);
-		break;
-
 	case PHY_INTERFACE_MODE_1000BASEX: /* MII_1000BX_FIBER */
 		rtl9310_sds_field_w_new(sds, 0x103, 0x13, 15, 14, 0);
 
@@ -3149,7 +3130,6 @@ void rtl931x_sds_init(u32 sds, phy_interface_t mode)
 
 	if (mode == PHY_INTERFACE_MODE_XGMII ||
 	    mode == PHY_INTERFACE_MODE_QSGMII ||
-	    mode == PHY_INTERFACE_MODE_HSGMII ||
 	    mode == PHY_INTERFACE_MODE_SGMII ||
 	    mode == PHY_INTERFACE_MODE_USXGMII) {
 		if (mode == PHY_INTERFACE_MODE_XGMII)




More information about the lede-commits mailing list