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 <a.fat...@pengutronix.de>
---
 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

Reply via email to