mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-29 07:04:10 +08:00
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: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
7b0c5f21f3
commit
058112c7ef
@ -84,13 +84,10 @@ int of_mdiobus_register(struct mii_bus *mdio, struct device_node *np)
|
||||
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",
|
||||
addr);
|
||||
continue;
|
||||
}
|
||||
dev_err(&mdio->dev,
|
||||
"cannot get PHY at address %i\n",
|
||||
addr);
|
||||
continue;
|
||||
}
|
||||
|
||||
/* Associate the OF node with the device structure so it
|
||||
|
Loading…
Reference in New Issue
Block a user