[openwrt/openwrt] realtek: pcs: use per-variant SerDes count

LEDE Commits lede-commits at lists.infradead.org
Tue Dec 16 04:38:20 PST 2025


robimarko pushed a commit to openwrt/openwrt.git, branch openwrt-25.12:
https://git.openwrt.org/b9e5803d046cbc92bbd758debcc13b055c0def26

commit b9e5803d046cbc92bbd758debcc13b055c0def26
Author: Jonas Jelonek <jelonek.jonas at gmail.com>
AuthorDate: Sat Dec 13 09:10:55 2025 +0000

    realtek: pcs: use per-variant SerDes count
    
    Use a separate configuration field for the number of SerDes for each
    variant of the Realtek Otto family. Add this field to the config
    structure, assign it and use it during driver probe. This narrows
    possible error cases and is needed for upcoming extensions.
    
    Signed-off-by: Jonas Jelonek <jelonek.jonas at gmail.com>
    Link: https://github.com/openwrt/openwrt/pull/21146
    Signed-off-by: Robert Marko <robimarko at gmail.com>
    (cherry picked from commit 6cf33aacfe9d01903f1662795a28c5a7fc6e2fb7)
---
 .../linux/realtek/files-6.12/drivers/net/pcs/pcs-rtl-otto.c  | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

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 1a87d0d112..7cc5bb1730 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
@@ -22,6 +22,7 @@
 #define RTPCS_SPEED_5000			6
 
 #define RTPCS_838X_CPU_PORT			28
+#define RTPCS_838X_SERDES_CNT			6
 #define RTPCS_838X_MAC_LINK_DUP_STS		0xa19c
 #define RTPCS_838X_MAC_LINK_SPD_STS		0xa190
 #define RTPCS_838X_MAC_LINK_STS			0xa188
@@ -29,6 +30,7 @@
 #define RTPCS_838X_MAC_TX_PAUSE_STS		0xa1a0
 
 #define RTPCS_839X_CPU_PORT			52
+#define RTPCS_839X_SERDES_CNT			14
 #define RTPCS_839X_MAC_LINK_DUP_STS		0x03b0
 #define RTPCS_839X_MAC_LINK_SPD_STS		0x03a0
 #define RTPCS_839X_MAC_LINK_STS			0x0390
@@ -38,6 +40,7 @@
 #define RTPCS_83XX_MAC_LINK_SPD_BITS		2
 
 #define RTPCS_930X_CPU_PORT			28
+#define RTPCS_930X_SERDES_CNT			12
 #define RTPCS_930X_MAC_LINK_DUP_STS		0xcb28
 #define RTPCS_930X_MAC_LINK_SPD_STS		0xcb18
 #define RTPCS_930X_MAC_LINK_STS			0xcb10
@@ -45,6 +48,7 @@
 #define RTPCS_930X_MAC_TX_PAUSE_STS		0xcb2c
 
 #define RTPCS_931X_CPU_PORT			56
+#define RTPCS_931X_SERDES_CNT			14
 #define RTPCS_931X_MAC_LINK_DUP_STS		0x0ef0
 #define RTPCS_931X_MAC_LINK_SPD_STS		0x0ed0
 #define RTPCS_931X_MAC_LINK_STS			0x0ec0
@@ -151,6 +155,8 @@ struct rtpcs_config {
 	int mac_link_sts;
 	int mac_rx_pause_sts;
 	int mac_tx_pause_sts;
+	u8 serdes_count;
+
 	const struct phylink_pcs_ops *pcs_ops;
 	int (*init_serdes_common)(struct rtpcs_ctrl *ctrl);
 	int (*set_autoneg)(struct rtpcs_ctrl *ctrl, int sds, unsigned int neg_mode);
@@ -3043,7 +3049,7 @@ static int rtpcs_probe(struct platform_device *pdev)
 		ret = of_property_read_u32(child, "reg", &sds);
 		if (ret)
 			return ret;
-		if (sds >= RTPCS_SDS_CNT)
+		if (sds >= ctrl->cfg->serdes_count)
 			return -EINVAL;
 
 		ctrl->rx_pol_inv[sds] = of_property_read_bool(child, "realtek,pnswap-rx");
@@ -3089,6 +3095,7 @@ static const struct rtpcs_config rtpcs_838x_cfg = {
 	.mac_link_sts		= RTPCS_838X_MAC_LINK_STS,
 	.mac_rx_pause_sts	= RTPCS_838X_MAC_RX_PAUSE_STS,
 	.mac_tx_pause_sts	= RTPCS_838X_MAC_TX_PAUSE_STS,
+	.serdes_count		= RTPCS_838X_SERDES_CNT,
 	.pcs_ops		= &rtpcs_838x_pcs_ops,
 	.init_serdes_common	= rtpcs_838x_init_serdes_common,
 	.setup_serdes		= rtpcs_838x_setup_serdes,
@@ -3108,6 +3115,7 @@ static const struct rtpcs_config rtpcs_839x_cfg = {
 	.mac_link_sts		= RTPCS_839X_MAC_LINK_STS,
 	.mac_rx_pause_sts	= RTPCS_839X_MAC_RX_PAUSE_STS,
 	.mac_tx_pause_sts	= RTPCS_839X_MAC_TX_PAUSE_STS,
+	.serdes_count		= RTPCS_839X_SERDES_CNT,
 	.pcs_ops		= &rtpcs_839x_pcs_ops,
 };
 
@@ -3125,6 +3133,7 @@ static const struct rtpcs_config rtpcs_930x_cfg = {
 	.mac_link_sts		= RTPCS_930X_MAC_LINK_STS,
 	.mac_rx_pause_sts	= RTPCS_930X_MAC_RX_PAUSE_STS,
 	.mac_tx_pause_sts	= RTPCS_930X_MAC_TX_PAUSE_STS,
+	.serdes_count		= RTPCS_930X_SERDES_CNT,
 	.pcs_ops		= &rtpcs_930x_pcs_ops,
 	.set_autoneg		= rtpcs_93xx_set_autoneg,
 	.setup_serdes		= rtpcs_930x_setup_serdes,
@@ -3144,6 +3153,7 @@ static const struct rtpcs_config rtpcs_931x_cfg = {
 	.mac_link_sts		= RTPCS_931X_MAC_LINK_STS,
 	.mac_rx_pause_sts	= RTPCS_931X_MAC_RX_PAUSE_STS,
 	.mac_tx_pause_sts	= RTPCS_931X_MAC_TX_PAUSE_STS,
+	.serdes_count		= RTPCS_931X_SERDES_CNT,
 	.pcs_ops		= &rtpcs_931x_pcs_ops,
 	.set_autoneg		= rtpcs_93xx_set_autoneg,
 	.setup_serdes		= rtpcs_931x_setup_serdes,




More information about the lede-commits mailing list