Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 95f566de authored by Madalin Bucur's avatar Madalin Bucur Committed by David S. Miller
Browse files

of_mdio: avoid MDIO bus removal when a PHY is missing



If one of the child devices is missing the of_mdiobus_register_phy()
call will return -ENODEV. When a missing device is encountered the
registration of the remaining PHYs is stopped and the MDIO bus will
fail to register. Propagate all errors except ENODEV to avoid it.

Signed-off-by: default avatarMadalin Bucur <madalin.bucur@nxp.com>
Reviewed-by: default avatarAndrew Lunn <andrew@lunn.ch>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent b0d55b5b
Loading
Loading
Loading
Loading
+7 −2
Original line number Diff line number Diff line
@@ -231,7 +231,12 @@ int of_mdiobus_register(struct mii_bus *mdio, struct device_node *np)
			rc = of_mdiobus_register_phy(mdio, child, addr);
		else
			rc = of_mdiobus_register_device(mdio, child, addr);
		if (rc)

		if (rc == -ENODEV)
			dev_err(&mdio->dev,
				"MDIO device at address %d is missing.\n",
				addr);
		else if (rc)
			goto unregister;
	}

@@ -255,7 +260,7 @@ int of_mdiobus_register(struct mii_bus *mdio, struct device_node *np)

			if (of_mdiobus_child_is_phy(child)) {
				rc = of_mdiobus_register_phy(mdio, child, addr);
				if (rc)
				if (rc && rc != -ENODEV)
					goto unregister;
			}
		}