]> git.ipfire.org Git - thirdparty/openwrt.git/commitdiff
realtek: mdio: provide for_each_port helper
authorMarkus Stockhausen <markus.stockhausen@gmx.de>
Fri, 13 Feb 2026 19:25:15 +0000 (20:25 +0100)
committerRobert Marko <robimarko@gmail.com>
Mon, 16 Feb 2026 14:44:20 +0000 (15:44 +0100)
For better readability provide a macro to loop over all
active ports od the mdio bus.

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/22008
Signed-off-by: Robert Marko <robimarko@gmail.com>
target/linux/realtek/files-6.12/drivers/net/mdio/mdio-realtek-otto.c

index cf4ca57bf32a1c895eb1387c85dd6fde15e99204..fac116e76b5bff0056d69df888b79e282a027d7a 100644 (file)
 #define RTMDIO_931X_SMI_10GPHY_POLLING_SEL3    (0x0CFC)
 #define RTMDIO_931X_SMI_10GPHY_POLLING_SEL4    (0x0D00)
 
+#define for_each_port(ctrl, addr) \
+       for (int addr = 0; addr < (ctrl)->cfg->cpu_port; addr++) \
+               if ((ctrl)->smi_bus[addr] >= 0)
+
 /*
  * On all Realtek switch platforms the hardware periodically reads the link status of all
  * PHYs. This is to some degree programmable, so that one can tell the hardware to read
@@ -566,10 +570,7 @@ static void rtmdio_setup_smi_topology(struct mii_bus *bus)
        struct rtmdio_ctrl *ctrl = bus->priv;
        u32 reg, mask, val;
 
-       for (int addr = 0; addr < ctrl->cfg->cpu_port; addr++) {
-               if (ctrl->smi_bus[addr] < 0)
-                       continue;
-
+       for_each_port(ctrl, addr) {
                if (ctrl->cfg->bus_map_base) {
                        reg = (addr / 16) * 4;
                        mask = 0x3 << ((addr % 16) * 2);
@@ -719,10 +720,7 @@ static void rtmdio_930x_setup_polling(struct mii_bus *bus)
        regmap_write(ctrl->map, RTMDIO_930X_SMI_MAC_TYPE_CTRL, 0);
 
        /* Define PHY specific polling parameters */
-       for (int addr = 0; addr < ctrl->cfg->cpu_port; addr++) {
-               if (ctrl->smi_bus[addr] < 0)
-                       continue;
-
+       for_each_port(ctrl, addr) {
                rtmdio_get_phy_info(bus, addr, &phyinfo);
                if (phyinfo.phy_unknown) {
                        pr_warn("skip polling setup for unknown PHY %08x on port %d\n",
@@ -804,13 +802,10 @@ static void rtmdio_931x_setup_polling(struct mii_bus *bus)
         * the existing hardware designs (i.e. only equally polled PHYs on
         * the same SMI bus or kind of PHYs).
         */
-       for (int addr = 0; addr < ctrl->cfg->cpu_port; addr++) {
-               unsigned int mask, val;
+       for_each_port(ctrl, addr) {
                int smi = ctrl->smi_bus[addr];
+               unsigned int mask, val;
                
-               if (smi < 0)
-                       continue;
-
                rtmdio_get_phy_info(bus, addr, &phyinfo);
                if (phyinfo.phy_unknown) {
                        pr_warn("skip polling setup for unknown PHY %08x on port %d\n",