Commit 4a107a0e authored by Heiner Kallweit's avatar Heiner Kallweit Committed by Jakub Kicinski
Browse files

net: stmmac: mdio: use phy_find_first to simplify stmmac_mdio_register



Simplify the code by using phy_find_first().

Signed-off-by: default avatarHeiner Kallweit <hkallweit1@gmail.com>
Reviewed-by: default avatarAndrew Lunn <andrew@lunn.ch>
Link: https://patch.msgid.link/20ca4962-9588-40b8-b021-fb349a92e9e5@gmail.com


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent 1471a274
Loading
Loading
Loading
Loading
+22 −31
Original line number Diff line number Diff line
@@ -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,40 +669,30 @@ 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;
	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[addr] = mdio_bus_data->probed_phy_irq;
	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 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;
		priv->plat->phy_addr = phydev->mdio.addr;

	phy_attached_info(phydev);
		found = 1;
	}

	if (!found && !mdio_node) {
		dev_warn(dev, "No PHY found\n");
		err = -ENODEV;
		goto no_phy_found;
	}

bus_register_done:
	priv->mii = new_bus;