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

Commit 058112c7 authored by Sebastian Hesselbarth's avatar Sebastian Hesselbarth Committed by David S. Miller
Browse files

net: of_mdio: fix behavior on missing phy device



of_mdiobus_register creates a phy_device even if get_phy_device failed
to create it previously. This causes indefinite polling on non-existent
PHYs. This fix makes of_mdio_register rely on get_phy_device to
properly create the device or fail otherwise.

Signed-off-by: default avatarSebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 7b0c5f21
Loading
Loading
Loading
Loading
+4 −7
Original line number Diff line number Diff line
@@ -83,15 +83,12 @@ int of_mdiobus_register(struct mii_bus *mdio, struct device_node *np)
						 "ethernet-phy-ieee802.3-c45");
		phy = get_phy_device(mdio, addr, is_c45);

		if (!phy || IS_ERR(phy)) {
			phy = phy_device_create(mdio, addr, 0, false, NULL);
		if (!phy || IS_ERR(phy)) {
			dev_err(&mdio->dev,
					"error creating PHY at address %i\n",
				"cannot get PHY at address %i\n",
				addr);
			continue;
		}
		}

		/* Associate the OF node with the device structure so it
		 * can be looked up later */