diff options
Diffstat (limited to 'drivers/net/ethernet/cadence/macb_main.c')
| -rw-r--r-- | drivers/net/ethernet/cadence/macb_main.c | 14 | 
1 files changed, 11 insertions, 3 deletions
| diff --git a/drivers/net/ethernet/cadence/macb_main.c b/drivers/net/ethernet/cadence/macb_main.c index f06babec04a0..56901280ba04 100644 --- a/drivers/net/ethernet/cadence/macb_main.c +++ b/drivers/net/ethernet/cadence/macb_main.c @@ -930,9 +930,6 @@ static int macb_mdiobus_register(struct macb *bp)  		return ret;  	} -	if (of_phy_is_fixed_link(np)) -		return mdiobus_register(bp->mii_bus); -  	/* Only create the PHY from the device tree if at least one PHY is  	 * described. Otherwise scan the entire MDIO bus. We do this to support  	 * old device tree that did not follow the best practices and did not @@ -953,8 +950,19 @@ static int macb_mdiobus_register(struct macb *bp)  static int macb_mii_init(struct macb *bp)  { +	struct device_node *child, *np = bp->pdev->dev.of_node;  	int err = -ENXIO; +	/* With fixed-link, we don't need to register the MDIO bus, +	 * except if we have a child named "mdio" in the device tree. +	 * In that case, some devices may be attached to the MACB's MDIO bus. +	 */ +	child = of_get_child_by_name(np, "mdio"); +	if (child) +		of_node_put(child); +	else if (of_phy_is_fixed_link(np)) +		return macb_mii_probe(bp->dev); +  	/* Enable management port */  	macb_writel(bp, NCR, MACB_BIT(MPE)); | 
