fixed-links are currently not handled by of_mdiobus_register,
skip them with a warning instead of trying pointlessly to find their PHY
address:
libphy: MACB_mii_bus: probed
mdio_bus f0028000.ethernet-ffffffff: fixed-link has invalid PHY address
mdio_bus f0028000.ethernet-ffffffff: scan phy fixed-link at address 0
[snip]
mdio_bus f0028000.ethernet-ffffffff: scan phy fixed-link at address 31
macb f0028000.ethernet: broken fixed-link specification
Signed-off-by: Ahmad Fatoum <[email protected]>
---
drivers/of/of_mdio.c | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/drivers/of/of_mdio.c b/drivers/of/of_mdio.c
index e92391d6d1bd..9a7ccd299daf 100644
--- a/drivers/of/of_mdio.c
+++ b/drivers/of/of_mdio.c
@@ -229,6 +229,13 @@ int of_mdiobus_register(struct mii_bus *mdio, struct
device_node *np)
/* Loop over the child nodes and register a phy_device for each phy */
for_each_available_child_of_node(np, child) {
+ if (of_phy_is_fixed_link(np)) {
+ /* fixed-links are handled in the MAC drivers */
+ dev_warn(&mdio->dev, FW_BUG
+ "Skipping unexpected fixed-link in device
tree");
+ continue;
+ }
+
addr = of_mdio_parse_addr(&mdio->dev, child);
if (addr < 0) {
scanphys = true;
--
2.18.0