]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
net: stmmac: mdio: use phy_find_first to simplify stmmac_mdio_register
authorHeiner Kallweit <hkallweit1@gmail.com>
Sat, 18 Oct 2025 18:48:07 +0000 (20:48 +0200)
committerJakub Kicinski <kuba@kernel.org>
Wed, 22 Oct 2025 01:35:51 +0000 (18:35 -0700)
Simplify the code by using phy_find_first().

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Link: https://patch.msgid.link/20ca4962-9588-40b8-b021-fb349a92e9e5@gmail.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c

index d62b2870899d5d277b9e30787805bb81e86b1cd3..65db43e9c85e2d7246ce730312722e656c6a2e40 100644 (file)
@@ -584,7 +584,8 @@ int stmmac_mdio_register(struct net_device *ndev)
        struct device *dev = ndev->dev.parent;
        struct fwnode_handle *fixed_node;
        struct fwnode_handle *fwnode;
-       int addr, found, max_addr;
+       struct phy_device *phydev;
+       int max_addr;
 
        if (!mdio_bus_data)
                return 0;
@@ -668,41 +669,31 @@ int stmmac_mdio_register(struct net_device *ndev)
        if (priv->plat->phy_node || mdio_node)
                goto bus_register_done;
 
-       found = 0;
-       for (addr = 0; addr < max_addr; addr++) {
-               struct phy_device *phydev = mdiobus_get_phy(new_bus, addr);
-
-               if (!phydev)
-                       continue;
-
-               /*
-                * If an IRQ was provided to be assigned after
-                * the bus probe, do it here.
-                */
-               if (!mdio_bus_data->irqs &&
-                   (mdio_bus_data->probed_phy_irq > 0)) {
-                       new_bus->irq[addr] = mdio_bus_data->probed_phy_irq;
-                       phydev->irq = mdio_bus_data->probed_phy_irq;
-               }
-
-               /*
-                * If we're going to bind the MAC to this PHY bus,
-                * and no PHY number was provided to the MAC,
-                * use the one probed here.
-                */
-               if (priv->plat->phy_addr == -1)
-                       priv->plat->phy_addr = addr;
-
-               phy_attached_info(phydev);
-               found = 1;
-       }
-
-       if (!found && !mdio_node) {
+       phydev = phy_find_first(new_bus);
+       if (!phydev || phydev->mdio.addr > max_addr) {
                dev_warn(dev, "No PHY found\n");
                err = -ENODEV;
                goto no_phy_found;
        }
 
+       /*
+        * If an IRQ was provided to be assigned after
+        * the bus probe, do it here.
+        */
+       if (!mdio_bus_data->irqs && mdio_bus_data->probed_phy_irq > 0) {
+               new_bus->irq[phydev->mdio.addr] = mdio_bus_data->probed_phy_irq;
+               phydev->irq = mdio_bus_data->probed_phy_irq;
+       }
+
+       /*
+        * If we're going to bind the MAC to this PHY bus, and no PHY number
+        * was provided to the MAC, use the one probed here.
+        */
+       if (priv->plat->phy_addr == -1)
+               priv->plat->phy_addr = phydev->mdio.addr;
+
+       phy_attached_info(phydev);
+
 bus_register_done:
        priv->mii = new_bus;