summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarkus Stockhausen2024-08-25 08:11:39 +0000
committerSander Vanheule2024-09-14 17:59:48 +0000
commita5420c22b7a407bb8a4255cdfdbbe7da899ade33 (patch)
tree764502b5f08feaed6befdb5fcf1567084d014bed
parent3f04b8d5d5dbf85d2c12efb89f51aa6f2418da93 (diff)
downloadopenwrt-a5420c22b7a407bb8a4255cdfdbbe7da899ade33.tar.gz
realtek: 6.6: rework mdio bus driver
This is not a surprise. Before upgrade to 6.6 we refactored the mdio part of the ethernet driver and knew that changes will come. Drop all unnecessary stuff from the old world and adapt to the new kernel. - remove legacy functions - directly link new functions - adapt to new shared base address - remove references to old MDIO bus capabilities Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
-rw-r--r--target/linux/realtek/files-6.6/drivers/net/ethernet/rtl838x_eth.c60
1 files changed, 11 insertions, 49 deletions
diff --git a/target/linux/realtek/files-6.6/drivers/net/ethernet/rtl838x_eth.c b/target/linux/realtek/files-6.6/drivers/net/ethernet/rtl838x_eth.c
index 1cfe5e44db..29651c0aec 100644
--- a/target/linux/realtek/files-6.6/drivers/net/ethernet/rtl838x_eth.c
+++ b/target/linux/realtek/files-6.6/drivers/net/ethernet/rtl838x_eth.c
@@ -1740,7 +1740,7 @@ static int rtmdio_package_rw(struct phy_device *phydev, int op, int port,
/* lock and inform bus about non default addressing */
phy_lock_mdio_bus(phydev);
__mdiobus_write(phydev->mdio.bus, phydev->mdio.addr,
- RTL821X_PORT_SELECT, shared->addr + port);
+ RTL821X_PORT_SELECT, shared->base_addr + port);
oldpage = ret = rtmdio_read_page(phydev);
if (oldpage >= 0 && oldpage != page) {
@@ -1945,44 +1945,6 @@ static int rtmdio_93xx_write(struct mii_bus *bus, int addr, int regnum, u16 val)
return 0;
}
-/* These wrappers can be dropped after switch to kernel 6.6 */
-
-static int rtmdio_83xx_read_legacy(struct mii_bus *bus, int addr, int regnum)
-{
- if (regnum & MII_ADDR_C45)
- return rtmdio_read_c45(bus, addr, mdiobus_c45_devad(regnum),
- mdiobus_c45_regad(regnum));
- else
- return rtmdio_83xx_read(bus, addr, regnum);
-}
-
-static int rtmdio_93xx_read_legacy(struct mii_bus *bus, int addr, int regnum)
-{
- if (regnum & MII_ADDR_C45)
- return rtmdio_read_c45(bus, addr, mdiobus_c45_devad(regnum),
- mdiobus_c45_regad(regnum));
- else
- return rtmdio_93xx_read(bus, addr, regnum);
-}
-
-static int rtmdio_83xx_write_legacy(struct mii_bus *bus, int addr, int regnum, u16 val)
-{
- if (regnum & MII_ADDR_C45)
- return rtmdio_write_c45(bus, addr, mdiobus_c45_devad(regnum),
- mdiobus_c45_regad(regnum), val);
- else
- return rtmdio_83xx_write(bus, addr, regnum, val);
-}
-
-static int rtmdio_93xx_write_legacy(struct mii_bus *bus, int addr, int regnum, u16 val)
-{
- if (regnum & MII_ADDR_C45)
- return rtmdio_write_c45(bus, addr, mdiobus_c45_devad(regnum),
- mdiobus_c45_regad(regnum), val);
- else
- return rtmdio_93xx_write(bus, addr, regnum, val);
-}
-
static int rtmdio_838x_reset(struct mii_bus *bus)
{
pr_debug("%s called\n", __func__);
@@ -2253,8 +2215,8 @@ static int rtl838x_mdio_init(struct rtl838x_eth_priv *priv)
switch(priv->family_id) {
case RTL8380_FAMILY_ID:
priv->mii_bus->name = "rtl838x-eth-mdio";
- priv->mii_bus->read = rtmdio_83xx_read_legacy;
- priv->mii_bus->write = rtmdio_83xx_write_legacy;
+ priv->mii_bus->read = rtmdio_83xx_read;
+ priv->mii_bus->write = rtmdio_83xx_write;
priv->mii_bus->reset = rtmdio_838x_reset;
bus_priv->read_mmd_phy = rtl838x_read_mmd_phy;
bus_priv->write_mmd_phy = rtl838x_write_mmd_phy;
@@ -2263,8 +2225,8 @@ static int rtl838x_mdio_init(struct rtl838x_eth_priv *priv)
break;
case RTL8390_FAMILY_ID:
priv->mii_bus->name = "rtl839x-eth-mdio";
- priv->mii_bus->read = rtmdio_83xx_read_legacy;
- priv->mii_bus->write = rtmdio_83xx_write_legacy;
+ priv->mii_bus->read = rtmdio_83xx_read;
+ priv->mii_bus->write = rtmdio_83xx_write;
priv->mii_bus->reset = rtmdio_839x_reset;
bus_priv->read_mmd_phy = rtl839x_read_mmd_phy;
bus_priv->write_mmd_phy = rtl839x_write_mmd_phy;
@@ -2273,27 +2235,27 @@ static int rtl838x_mdio_init(struct rtl838x_eth_priv *priv)
break;
case RTL9300_FAMILY_ID:
priv->mii_bus->name = "rtl930x-eth-mdio";
- priv->mii_bus->read = rtmdio_93xx_read_legacy;
- priv->mii_bus->write = rtmdio_93xx_write_legacy;
+ priv->mii_bus->read = rtmdio_93xx_read;
+ priv->mii_bus->write = rtmdio_93xx_write;
priv->mii_bus->reset = rtmdio_930x_reset;
bus_priv->read_mmd_phy = rtl930x_read_mmd_phy;
bus_priv->write_mmd_phy = rtl930x_write_mmd_phy;
bus_priv->read_phy = rtl930x_read_phy;
bus_priv->write_phy = rtl930x_write_phy;
- priv->mii_bus->probe_capabilities = MDIOBUS_C22_C45;
break;
case RTL9310_FAMILY_ID:
priv->mii_bus->name = "rtl931x-eth-mdio";
- priv->mii_bus->read = rtmdio_93xx_read_legacy;
- priv->mii_bus->write = rtmdio_93xx_write_legacy;
+ priv->mii_bus->read = rtmdio_93xx_read;
+ priv->mii_bus->write = rtmdio_93xx_write;
priv->mii_bus->reset = rtmdio_931x_reset;
bus_priv->read_mmd_phy = rtl931x_read_mmd_phy;
bus_priv->write_mmd_phy = rtl931x_write_mmd_phy;
bus_priv->read_phy = rtl931x_read_phy;
bus_priv->write_phy = rtl931x_write_phy;
- priv->mii_bus->probe_capabilities = MDIOBUS_C22_C45;
break;
}
+ priv->mii_bus->read_c45 = rtmdio_read_c45;
+ priv->mii_bus->write_c45 = rtmdio_write_c45;
priv->mii_bus->parent = &priv->pdev->dev;
for_each_node_by_name(dn, "ethernet-phy") {