Commit f5058a27 authored by Russell King's avatar Russell King Committed by Jakub Kicinski

net: phylink: propagate phy_attach_direct() return code

of_phy_attach() hides the return value of phy_attach_direct(), forcing
us to return a "generic" ENODEV error code that is indistinguishable
from the lack-of-phy-property case.

Switch to using of_phy_find_device() to find the PHY device, and then
propagating any phy_attach_direct() error back to the caller.

Link: https://lore.kernel.org/lkml/20191210113829.GT25745@shell.armlinux.org.ukSigned-off-by: default avatarRussell King <rmk+kernel@armlinux.org.uk>
Signed-off-by: default avatarJakub Kicinski <jakub.kicinski@netronome.com>
parent de179966
...@@ -860,14 +860,17 @@ int phylink_of_phy_connect(struct phylink *pl, struct device_node *dn, ...@@ -860,14 +860,17 @@ int phylink_of_phy_connect(struct phylink *pl, struct device_node *dn,
return 0; return 0;
} }
phy_dev = of_phy_attach(pl->netdev, phy_node, flags, phy_dev = of_phy_find_device(phy_node);
pl->link_interface);
/* We're done with the phy_node handle */ /* We're done with the phy_node handle */
of_node_put(phy_node); of_node_put(phy_node);
if (!phy_dev) if (!phy_dev)
return -ENODEV; return -ENODEV;
ret = phy_attach_direct(pl->netdev, phy_dev, flags,
pl->link_interface);
if (ret)
return ret;
ret = phylink_bringup_phy(pl, phy_dev, pl->link_config.interface); ret = phylink_bringup_phy(pl, phy_dev, pl->link_config.interface);
if (ret) if (ret)
phy_detach(phy_dev); phy_detach(phy_dev);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment