[openwrt/openwrt] realtek: pcs: rtl931x: reorder functions

LEDE Commits lede-commits at lists.infradead.org
Mon Dec 29 08:06:25 PST 2025


robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/90cddeb75e69b06d5930a13a8a1254fcf683fe2f

commit 90cddeb75e69b06d5930a13a8a1254fcf683fe2f
Author: Jonas Jelonek <jelonek.jonas at gmail.com>
AuthorDate: Sat Dec 20 18:57:35 2025 +0000

    realtek: pcs: rtl931x: reorder functions
    
    Bring the RTL931X functions into a proper order for two purposes:
    - be able to reuse code
    - have blocks of logically connected functions
    
    This just moves code, no functional changes.
    
    Signed-off-by: Jonas Jelonek <jelonek.jonas at gmail.com>
    Link: https://github.com/openwrt/openwrt/pull/20736
    Signed-off-by: Robert Marko <robimarko at gmail.com>
---
 .../files-6.12/drivers/net/pcs/pcs-rtl-otto.c      | 178 ++++++++++-----------
 1 file changed, 89 insertions(+), 89 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 768952b472..bf2110ef53 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
@@ -2305,41 +2305,6 @@ static int rtpcs_930x_setup_serdes(struct rtpcs_serdes *sds,
 
 /* RTL931X */
 
-static int rtpcs_931x_sds_power(struct rtpcs_serdes *sds, bool power_on)
-{
-	u32 en_val = power_on ? 0 : BIT(sds->id);
-
-	return regmap_write_bits(sds->ctrl->map,
-				 RTL931X_PS_SERDES_OFF_MODE_CTRL_ADDR,
-				 BIT(sds->id), en_val);
-}
-
-static void rtpcs_931x_sds_reset(struct rtpcs_serdes *sds)
-{
-	struct rtpcs_ctrl *ctrl = sds->ctrl;
-	u32 sds_id = sds->id;
-	u32 v, o_mode;
-	int shift = ((sds_id & 0x3) << 3);
-
-	/* TODO: We need to lock this! */
-
-	rtpcs_931x_sds_power(sds, false);
-
-	regmap_read(ctrl->map, RTL931X_SERDES_MODE_CTRL + 4 * (sds_id >> 2), &o_mode);
-	v = BIT(7) | 0x1F;
-	regmap_write_bits(ctrl->map, RTL931X_SERDES_MODE_CTRL + 4 * (sds_id >> 2),
-			  0xff << shift, v << shift);
-	regmap_write(ctrl->map, RTL931X_SERDES_MODE_CTRL + 4 * (sds_id >> 2), o_mode);
-
-	rtpcs_931x_sds_power(sds, true);
-}
-
-static void rtpcs_931x_sds_disable(struct rtpcs_serdes *sds)
-{
-	regmap_write(sds->ctrl->map,
-		     RTL931X_SERDES_MODE_CTRL + (sds->id >> 2) * 4, 0x9f);
-}
-
 __maybe_unused
 static int rtpcs_931x_sds_fiber_get_symerr(struct rtpcs_serdes *sds,
 					   phy_interface_t mode)
@@ -2403,12 +2368,48 @@ static void rtpcs_931x_sds_clear_symerr(struct rtpcs_serdes *sds,
 	}
 }
 
-__always_unused
-static void rtpcs_931x_sds_fiber_disable(struct rtpcs_serdes *sds)
+static int rtpcs_931x_sds_power(struct rtpcs_serdes *sds, bool power_on)
 {
-	u32 v = 0x3F;
+	u32 en_val = power_on ? 0 : BIT(sds->id);
 
-	rtpcs_sds_write_bits(sds, 0x1F, 0x9, 11, 6, v);
+	return regmap_write_bits(sds->ctrl->map,
+				 RTL931X_PS_SERDES_OFF_MODE_CTRL_ADDR,
+				 BIT(sds->id), en_val);
+}
+
+static void rtpcs_931x_sds_mii_mode_set(struct rtpcs_serdes *sds,
+					phy_interface_t mode)
+{
+	u32 val;
+
+	switch (mode) {
+	case PHY_INTERFACE_MODE_QSGMII:
+		val = 0x6;
+		break;
+	case PHY_INTERFACE_MODE_XGMII:
+		val = 0x10; /* serdes mode XSGMII */
+		break;
+	case PHY_INTERFACE_MODE_USXGMII:
+	case PHY_INTERFACE_MODE_2500BASEX:
+		val = 0xD;
+		break;
+	case PHY_INTERFACE_MODE_SGMII:
+		val = 0x2;
+		break;
+	default:
+		return;
+	}
+
+	val |= (1 << 7);
+
+	regmap_write(sds->ctrl->map,
+		     RTL931X_SERDES_MODE_CTRL + 4 * (sds->id >> 2), val);
+}
+
+static void rtpcs_931x_sds_disable(struct rtpcs_serdes *sds)
+{
+	regmap_write(sds->ctrl->map,
+		     RTL931X_SERDES_MODE_CTRL + (sds->id >> 2) * 4, 0x9f);
 }
 
 static void rtpcs_931x_sds_fiber_mode_set(struct rtpcs_serdes *sds,
@@ -2435,9 +2436,9 @@ static void rtpcs_931x_sds_fiber_mode_set(struct rtpcs_serdes *sds,
 	case PHY_INTERFACE_MODE_10GKR:
 		val = 0x35;
 		break;
-/*	case MII_10GR1000BX_AUTO:
-		val = 0x39;
-		break; */
+/*      case MII_10GR1000BX_AUTO:
+                val = 0x39;
+                break; */
 
 	case PHY_INTERFACE_MODE_USXGMII:
 		val = 0x1B;
@@ -2450,6 +2451,52 @@ static void rtpcs_931x_sds_fiber_mode_set(struct rtpcs_serdes *sds,
 	rtpcs_sds_write_bits(sds, 0x1F, 0x9, 11, 6, val);
 }
 
+static void rtpcs_931x_sds_reset(struct rtpcs_serdes *sds)
+{
+	struct rtpcs_ctrl *ctrl = sds->ctrl;
+	u32 sds_id = sds->id;
+	u32 v, o_mode;
+	int shift = ((sds_id & 0x3) << 3);
+
+	/* TODO: We need to lock this! */
+
+	rtpcs_931x_sds_power(sds, false);
+
+	regmap_read(ctrl->map, RTL931X_SERDES_MODE_CTRL + 4 * (sds_id >> 2), &o_mode);
+	v = BIT(7) | 0x1F;
+	regmap_write_bits(ctrl->map, RTL931X_SERDES_MODE_CTRL + 4 * (sds_id >> 2),
+			  0xff << shift, v << shift);
+	regmap_write(ctrl->map, RTL931X_SERDES_MODE_CTRL + 4 * (sds_id >> 2), o_mode);
+
+	rtpcs_931x_sds_power(sds, true);
+}
+
+static void rtpcs_931x_sds_rx_reset(struct rtpcs_serdes *sds)
+{
+	if (sds->id < 2)
+		return;
+
+	rtpcs_sds_write(sds, 0x2e, 0x12, 0x2740);
+	rtpcs_sds_write(sds, 0x2f, 0x0, 0x0);
+	rtpcs_sds_write(sds, 0x2f, 0x2, 0x2010);
+	rtpcs_sds_write(sds, 0x20, 0x0, 0xc10);
+
+	rtpcs_sds_write(sds, 0x2e, 0x12, 0x27c0);
+	rtpcs_sds_write(sds, 0x2f, 0x0, 0xc000);
+	rtpcs_sds_write(sds, 0x2f, 0x2, 0x6010);
+	rtpcs_sds_write(sds, 0x20, 0x0, 0xc30);
+
+	mdelay(50);
+}
+
+__always_unused
+static void rtpcs_931x_sds_fiber_disable(struct rtpcs_serdes *sds)
+{
+	u32 v = 0x3F;
+
+	rtpcs_sds_write_bits(sds, 0x1F, 0x9, 11, 6, v);
+}
+
 static int rtpcs_931x_sds_cmu_page_get(phy_interface_t mode)
 {
 	switch (mode) {
@@ -2559,53 +2606,6 @@ static void rtpcs_931x_sds_cmu_type_set(struct rtpcs_serdes *sds,
 	pr_info("%s CMU page 0x28 0x7 %08x\n", __func__, rtpcs_sds_read(sds, 0x28, 0x7));
 }
 
-static void rtpcs_931x_sds_rx_reset(struct rtpcs_serdes *sds)
-{
-	if (sds->id < 2)
-		return;
-
-	rtpcs_sds_write(sds, 0x2e, 0x12, 0x2740);
-	rtpcs_sds_write(sds, 0x2f, 0x0, 0x0);
-	rtpcs_sds_write(sds, 0x2f, 0x2, 0x2010);
-	rtpcs_sds_write(sds, 0x20, 0x0, 0xc10);
-
-	rtpcs_sds_write(sds, 0x2e, 0x12, 0x27c0);
-	rtpcs_sds_write(sds, 0x2f, 0x0, 0xc000);
-	rtpcs_sds_write(sds, 0x2f, 0x2, 0x6010);
-	rtpcs_sds_write(sds, 0x20, 0x0, 0xc30);
-
-	mdelay(50);
-}
-
-static void rtpcs_931x_sds_mii_mode_set(struct rtpcs_serdes *sds,
-					phy_interface_t mode)
-{
-	u32 val;
-
-	switch (mode) {
-	case PHY_INTERFACE_MODE_QSGMII:
-		val = 0x6;
-		break;
-	case PHY_INTERFACE_MODE_XGMII:
-		val = 0x10; /* serdes mode XSGMII */
-		break;
-	case PHY_INTERFACE_MODE_USXGMII:
-	case PHY_INTERFACE_MODE_2500BASEX:
-		val = 0xD;
-		break;
-	case PHY_INTERFACE_MODE_SGMII:
-		val = 0x2;
-		break;
-	default:
-		return;
-	}
-
-	val |= (1 << 7);
-
-	regmap_write(sds->ctrl->map,
-		     RTL931X_SERDES_MODE_CTRL + 4 * (sds->id >> 2), val);
-}
-
 static int rtpcs_931x_sds_cmu_band_set(struct rtpcs_serdes *sds,
 				       bool enable, u32 band,
 				       phy_interface_t mode)




More information about the lede-commits mailing list