static int macb_mii_init(struct macb *bp)
{
struct macb_platform_data *pdata;
- struct device_node *np;
+ struct device_node *np, *mdio_np;
int err = -ENXIO, i;
/* Enable management port */
dev_set_drvdata(&bp->dev->dev, bp->mii_bus);
np = bp->pdev->dev.of_node;
- if (np) {
+ mdio_np = of_get_child_by_name(np, "mdio");
+ if (mdio_np) {
+ of_node_put(mdio_np);
+ err = of_mdiobus_register(bp->mii_bus, mdio_np);
+ if (err)
+ goto err_out_unregister_bus;
+ } else if (np) {
/* try dt phy registration */
err = of_mdiobus_register(bp->mii_bus, np);