[openwrt/openwrt] realtek: mdio: move read/write functions to config structure

LEDE Commits lede-commits at lists.infradead.org
Mon Dec 29 03:57:12 PST 2025


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

commit b7f519ff3db0449ba7cde29f8f7c623332048ef8
Author: Markus Stockhausen <markus.stockhausen at gmx.de>
AuthorDate: Wed Dec 24 12:32:34 2025 +0100

    realtek: mdio: move read/write functions to config structure
    
    Move the read/write functions to where they belong.
    
    Signed-off-by: Markus Stockhausen <markus.stockhausen at gmx.de>
    Link: https://github.com/openwrt/openwrt/pull/21274
    Signed-off-by: Robert Marko <robimarko at gmail.com>
---
 .../drivers/net/mdio/mdio-realtek-otto.c           | 72 +++++++++++-----------
 1 file changed, 36 insertions(+), 36 deletions(-)

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 97f8ae1a70..14f3e1668e 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
@@ -163,17 +163,17 @@ struct rtmdio_bus_priv {
 	bool smi_bus_isc45[RTMDIO_MAX_SMI_BUS];
 	bool phy_is_internal[RTMDIO_MAX_PORT];
 	phy_interface_t interfaces[RTMDIO_MAX_PORT];
-	int (*read_mmd_phy)(u32 port, u32 addr, u32 reg, u32 *val);
-	int (*write_mmd_phy)(u32 port, u32 addr, u32 reg, u32 val);
-	int (*read_phy)(u32 port, u32 page, u32 reg, u32 *val);
-	int (*write_phy)(u32 port, u32 page, u32 reg, u32 val);
-	int (*read_sds_phy)(int sds, int page, int regnum);
-	int (*write_sds_phy)(int sds, int page, int regnum, u16 val);
 };
 
 struct rtmdio_config {
 	int cpu_port;
 	int raw_page;
+	int (*read_mmd_phy)(u32 port, u32 addr, u32 reg, u32 *val);
+	int (*read_phy)(u32 port, u32 page, u32 reg, u32 *val);
+	int (*read_sds_phy)(int sds, int page, int regnum);
+	int (*write_mmd_phy)(u32 port, u32 addr, u32 reg, u32 val);
+	int (*write_phy)(u32 port, u32 page, u32 reg, u32 val);
+	int (*write_sds_phy)(int sds, int page, int regnum, u16 val);
 };
 
 /* SerDes reader/writer functions for the ports without external phy. */
@@ -1073,7 +1073,7 @@ static int rtmdio_read_c45(struct mii_bus *bus, int addr, int devnum, int regnum
 	if (addr >= priv->cfg->cpu_port)
 		return -ENODEV;
 
-	err = (*priv->read_mmd_phy)(addr, devnum, regnum, &val);
+	err = (*priv->cfg->read_mmd_phy)(addr, devnum, regnum, &val);
 	pr_debug("rd_MMD(adr=%d, dev=%d, reg=%d) = %d, err = %d\n",
 		 addr, devnum, regnum, val, err);
 	return err ? err : val;
@@ -1113,7 +1113,7 @@ static int rtmdio_read_sds_phy(struct rtmdio_bus_priv *priv, int sds, int page,
 
 	ret = rtmdio_map_sds_register(page, regnum, &sds_page, &sds_regnum);
 	if (ret)
-		ret = priv->read_sds_phy(sds, sds_page, sds_regnum);
+		ret = priv->cfg->read_sds_phy(sds, sds_page, sds_regnum);
 	pr_debug("rd_SDS(sds=%d, pag=%d, reg=%d) = %d\n", sds, page, regnum, ret);
 
 	return ret;
@@ -1125,7 +1125,7 @@ static int rtmdio_write_sds_phy(struct rtmdio_bus_priv *priv, int sds, int page,
 
 	ret = rtmdio_map_sds_register(page, regnum, &sds_page, &sds_regnum);
 	if (ret)
-		ret = priv->write_sds_phy(sds, sds_page, sds_regnum, val);
+		ret = priv->cfg->write_sds_phy(sds, sds_page, sds_regnum, val);
 	pr_debug("wr_SDS(sds=%d, pag=%d, reg=%d, val=%d) err = %d\n", sds, page, regnum, val, ret);
 
 	return ret;
@@ -1147,7 +1147,7 @@ static int rtmdio_read(struct mii_bus *bus, int addr, int regnum)
 		return rtmdio_read_sds_phy(priv, priv->sds_id[addr],
 					   priv->page[addr], regnum);
 
-	err = (*priv->read_phy)(addr, priv->page[addr], regnum, &val);
+	err = (*priv->cfg->read_phy)(addr, priv->page[addr], regnum, &val);
 	pr_debug("rd_PHY(adr=%d, pag=%d, reg=%d) = %d, err = %d\n",
 		 addr, priv->page[addr], regnum, val, err);
 	return err ? err : val;
@@ -1161,7 +1161,7 @@ static int rtmdio_write_c45(struct mii_bus *bus, int addr, int devnum, int regnu
 	if (addr >= priv->cfg->cpu_port)
 		return -ENODEV;
 
-	err = (*priv->write_mmd_phy)(addr, devnum, regnum, val);
+	err = (*priv->cfg->write_mmd_phy)(addr, devnum, regnum, val);
 	pr_debug("wr_MMD(adr=%d, dev=%d, reg=%d, val=%d) err = %d\n",
 		 addr, devnum, regnum, val, err);
 	return err;
@@ -1186,7 +1186,7 @@ static int rtmdio_write(struct mii_bus *bus, int addr, int regnum, u16 val)
 			return rtmdio_write_sds_phy(priv, priv->sds_id[addr],
 						    priv->page[addr], regnum, val);
 
-		err = (*priv->write_phy)(addr, page, regnum, val);
+		err = (*priv->cfg->write_phy)(addr, page, regnum, val);
 		pr_debug("wr_PHY(adr=%d, pag=%d, reg=%d, val=%d) err = %d\n",
 			 addr, page, regnum, val, err);
 		return err;
@@ -1441,42 +1441,18 @@ static int rtmdio_probe(struct platform_device *pdev)
 	case RTMDIO_838X_FAMILY_ID:
 		bus->name = "rtl838x-eth-mdio";
 		bus->reset = rtmdio_838x_reset;
-		priv->read_sds_phy = rtmdio_838x_read_sds_phy;
-		priv->write_sds_phy = rtmdio_838x_write_sds_phy;
-		priv->read_mmd_phy = rtmdio_838x_read_mmd_phy;
-		priv->write_mmd_phy = rtmdio_838x_write_mmd_phy;
-		priv->read_phy = rtmdio_838x_read_phy;
-		priv->write_phy = rtmdio_838x_write_phy;
 		break;
 	case RTMDIO_839X_FAMILY_ID:
 		bus->name = "rtl839x-eth-mdio";
 		bus->reset = rtmdio_839x_reset;
-		priv->read_sds_phy = rtmdio_839x_read_sds_phy;
-		priv->write_sds_phy = rtmdio_839x_write_sds_phy;
-		priv->read_mmd_phy = rtmdio_839x_read_mmd_phy;
-		priv->write_mmd_phy = rtmdio_839x_write_mmd_phy;
-		priv->read_phy = rtmdio_839x_read_phy;
-		priv->write_phy = rtmdio_839x_write_phy;
 		break;
 	case RTMDIO_930X_FAMILY_ID:
 		bus->name = "rtl930x-eth-mdio";
 		bus->reset = rtmdio_930x_reset;
-		priv->read_sds_phy = rtmdio_930x_read_sds_phy;
-		priv->write_sds_phy = rtmdio_930x_write_sds_phy;
-		priv->read_mmd_phy = rtmdio_930x_read_mmd_phy;
-		priv->write_mmd_phy = rtmdio_930x_write_mmd_phy;
-		priv->read_phy = rtmdio_930x_read_phy;
-		priv->write_phy = rtmdio_930x_write_phy;
 		break;
 	case RTMDIO_931X_FAMILY_ID:
 		bus->name = "rtl931x-eth-mdio";
 		bus->reset = rtmdio_931x_reset;
-		priv->read_sds_phy = rtsds_931x_read;
-		priv->write_sds_phy = rtsds_931x_write;
-		priv->read_mmd_phy = rtmdio_931x_read_mmd_phy;
-		priv->write_mmd_phy = rtmdio_931x_write_mmd_phy;
-		priv->read_phy = rtmdio_931x_read_phy;
-		priv->write_phy = rtmdio_931x_write_phy;
 		break;
 	}
 
@@ -1557,21 +1533,45 @@ static int rtmdio_probe(struct platform_device *pdev)
 static const struct rtmdio_config rtmdio_838x_cfg = {
 	.cpu_port	= 28,
 	.raw_page	= 4095,
+	.read_mmd_phy	= rtmdio_838x_read_mmd_phy,
+	.read_phy	= rtmdio_838x_read_phy,
+	.read_sds_phy	= rtmdio_838x_read_sds_phy,
+	.write_mmd_phy	= rtmdio_838x_write_mmd_phy,
+	.write_phy	= rtmdio_838x_write_phy,
+	.write_sds_phy	= rtmdio_838x_write_sds_phy,
 };
 
 static const struct rtmdio_config rtmdio_839x_cfg = {
 	.cpu_port	= 52,
 	.raw_page	= 8191,
+	.read_mmd_phy	= rtmdio_839x_read_mmd_phy,
+	.read_phy	= rtmdio_839x_read_phy,
+	.read_sds_phy	= rtmdio_839x_read_sds_phy,
+	.write_mmd_phy	= rtmdio_839x_write_mmd_phy,
+	.write_phy	= rtmdio_839x_write_phy,
+	.write_sds_phy	= rtmdio_839x_write_sds_phy,
 };
 
 static const struct rtmdio_config rtmdio_930x_cfg = {
 	.cpu_port	= 28,
 	.raw_page	= 4095,
+	.read_mmd_phy	= rtmdio_930x_read_mmd_phy,
+	.read_phy	= rtmdio_930x_read_phy,
+	.read_sds_phy	= rtmdio_930x_read_sds_phy,
+	.write_mmd_phy	= rtmdio_930x_write_mmd_phy,
+	.write_phy	= rtmdio_930x_write_phy,
+	.write_sds_phy	= rtmdio_930x_write_sds_phy,
 };
 
 static const struct rtmdio_config rtmdio_931x_cfg = {
 	.cpu_port	= 56,
 	.raw_page	= 8191,
+	.read_mmd_phy	= rtmdio_931x_read_mmd_phy,
+	.read_phy	= rtmdio_931x_read_phy,
+	.read_sds_phy	= rtsds_931x_read,
+	.write_mmd_phy	= rtmdio_931x_write_mmd_phy,
+	.write_phy	= rtmdio_931x_write_phy,
+	.write_sds_phy	= rtsds_931x_write,
 };
 
 static const struct of_device_id rtmdio_ids[] = {




More information about the lede-commits mailing list