diff options
author | David S. Miller <davem@davemloft.net> | 2017-11-11 15:27:45 +0900 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2017-11-11 15:27:45 +0900 |
commit | 141f575f76db5a973b119146844de357b88ad36d (patch) | |
tree | c1a111dfd98801469ff4bc7ce75b1bc96fa178b3 | |
parent | e5c500eb298a9f5ef9b80d16fcea9662c89467b7 (diff) | |
parent | 66ee6a06e620740b706b8dbde161492f6a405b26 (diff) | |
download | op-kernel-dev-141f575f76db5a973b119146844de357b88ad36d.zip op-kernel-dev-141f575f76db5a973b119146844de357b88ad36d.tar.gz |
Merge branch 'macb-next'
Michael Grzeschik says:
====================
net: macb: add error handling on probe and
This series adds more error handling to the macb driver.
====================
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | drivers/net/ethernet/cadence/macb_main.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/drivers/net/ethernet/cadence/macb_main.c b/drivers/net/ethernet/cadence/macb_main.c index 5dafcde..72a67f7 100644 --- a/drivers/net/ethernet/cadence/macb_main.c +++ b/drivers/net/ethernet/cadence/macb_main.c @@ -611,6 +611,9 @@ static int macb_mii_init(struct macb *bp) err_out_unregister_bus: mdiobus_unregister(bp->mii_bus); err_out_free_mdiobus: + of_node_put(bp->phy_node); + if (np && of_phy_is_fixed_link(np)) + of_phy_deregister_fixed_link(np); mdiobus_free(bp->mii_bus); err_out: return err; @@ -3550,6 +3553,9 @@ static int macb_probe(struct platform_device *pdev) err_out_unregister_mdio: phy_disconnect(dev->phydev); mdiobus_unregister(bp->mii_bus); + of_node_put(bp->phy_node); + if (np && of_phy_is_fixed_link(np)) + of_phy_deregister_fixed_link(np); mdiobus_free(bp->mii_bus); /* Shutdown the PHY if there is a GPIO reset */ @@ -3572,6 +3578,7 @@ static int macb_remove(struct platform_device *pdev) { struct net_device *dev; struct macb *bp; + struct device_node *np = pdev->dev.of_node; dev = platform_get_drvdata(pdev); @@ -3580,6 +3587,8 @@ static int macb_remove(struct platform_device *pdev) if (dev->phydev) phy_disconnect(dev->phydev); mdiobus_unregister(bp->mii_bus); + if (np && of_phy_is_fixed_link(np)) + of_phy_deregister_fixed_link(np); dev->phydev = NULL; mdiobus_free(bp->mii_bus); |