diff options
| -rw-r--r-- | drivers/net/ethernet/ibm/emac/core.c | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/drivers/net/ethernet/ibm/emac/core.c b/drivers/net/ethernet/ibm/emac/core.c index 372664686309..129f4e9f38da 100644 --- a/drivers/net/ethernet/ibm/emac/core.c +++ b/drivers/net/ethernet/ibm/emac/core.c | |||
| @@ -2677,12 +2677,17 @@ static int emac_init_phy(struct emac_instance *dev) | |||
| 2677 | if (of_phy_is_fixed_link(np)) { | 2677 | if (of_phy_is_fixed_link(np)) { |
| 2678 | int res = emac_dt_mdio_probe(dev); | 2678 | int res = emac_dt_mdio_probe(dev); |
| 2679 | 2679 | ||
| 2680 | if (!res) { | 2680 | if (res) |
| 2681 | res = of_phy_register_fixed_link(np); | 2681 | return res; |
| 2682 | if (res) | 2682 | |
| 2683 | mdiobus_unregister(dev->mii_bus); | 2683 | res = of_phy_register_fixed_link(np); |
| 2684 | dev->phy_dev = of_phy_find_device(np); | ||
| 2685 | if (res || !dev->phy_dev) { | ||
| 2686 | mdiobus_unregister(dev->mii_bus); | ||
| 2687 | return res ? res : -EINVAL; | ||
| 2684 | } | 2688 | } |
| 2685 | return res; | 2689 | emac_adjust_link(dev->ndev); |
| 2690 | put_device(&dev->phy_dev->mdio.dev); | ||
| 2686 | } | 2691 | } |
| 2687 | return 0; | 2692 | return 0; |
| 2688 | } | 2693 | } |
