net: macb: Use mdio child node for MDIO bus if it exists
authorSean Anderson <sean.anderson@seco.com>
Fri, 22 Oct 2021 16:35:48 +0000 (12:35 -0400)
committerDavid S. Miller <davem@davemloft.net>
Sun, 24 Oct 2021 12:44:39 +0000 (13:44 +0100)
This allows explicitly specifying which children are present on the mdio
bus. Additionally, it allows for non-phy MDIO devices on the bus.

Signed-off-by: Sean Anderson <sean.anderson@seco.com>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/cadence/macb_main.c

index 029dea2..30a65ca 100644 (file)
@@ -898,6 +898,17 @@ static int macb_mdiobus_register(struct macb *bp)
 {
        struct device_node *child, *np = bp->pdev->dev.of_node;
 
+       /* If we have a child named mdio, probe it instead of looking for PHYs
+        * directly under the MAC node
+        */
+       child = of_get_child_by_name(np, "mdio");
+       if (np) {
+               int ret = of_mdiobus_register(bp->mii_bus, child);
+
+               of_node_put(child);
+               return ret;
+       }
+
        if (of_phy_is_fixed_link(np))
                return mdiobus_register(bp->mii_bus);