aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/freescale/gianfar.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/ethernet/freescale/gianfar.c')
-rw-r--r--drivers/net/ethernet/freescale/gianfar.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/drivers/net/ethernet/freescale/gianfar.c b/drivers/net/ethernet/freescale/gianfar.c
index 409210413f5d..756f7e763d5f 100644
--- a/drivers/net/ethernet/freescale/gianfar.c
+++ b/drivers/net/ethernet/freescale/gianfar.c
@@ -1312,6 +1312,7 @@ static void gfar_init_addr_hash_table(struct gfar_private *priv)
1312 */ 1312 */
1313static int gfar_probe(struct platform_device *ofdev) 1313static int gfar_probe(struct platform_device *ofdev)
1314{ 1314{
1315 struct device_node *np = ofdev->dev.of_node;
1315 struct net_device *dev = NULL; 1316 struct net_device *dev = NULL;
1316 struct gfar_private *priv = NULL; 1317 struct gfar_private *priv = NULL;
1317 int err = 0, i; 1318 int err = 0, i;
@@ -1465,6 +1466,8 @@ static int gfar_probe(struct platform_device *ofdev)
1465 return 0; 1466 return 0;
1466 1467
1467register_fail: 1468register_fail:
1469 if (of_phy_is_fixed_link(np))
1470 of_phy_deregister_fixed_link(np);
1468 unmap_group_regs(priv); 1471 unmap_group_regs(priv);
1469 gfar_free_rx_queues(priv); 1472 gfar_free_rx_queues(priv);
1470 gfar_free_tx_queues(priv); 1473 gfar_free_tx_queues(priv);
@@ -1477,11 +1480,16 @@ register_fail:
1477static int gfar_remove(struct platform_device *ofdev) 1480static int gfar_remove(struct platform_device *ofdev)
1478{ 1481{
1479 struct gfar_private *priv = platform_get_drvdata(ofdev); 1482 struct gfar_private *priv = platform_get_drvdata(ofdev);
1483 struct device_node *np = ofdev->dev.of_node;
1480 1484
1481 of_node_put(priv->phy_node); 1485 of_node_put(priv->phy_node);
1482 of_node_put(priv->tbi_node); 1486 of_node_put(priv->tbi_node);
1483 1487
1484 unregister_netdev(priv->ndev); 1488 unregister_netdev(priv->ndev);
1489
1490 if (of_phy_is_fixed_link(np))
1491 of_phy_deregister_fixed_link(np);
1492
1485 unmap_group_regs(priv); 1493 unmap_group_regs(priv);
1486 gfar_free_rx_queues(priv); 1494 gfar_free_rx_queues(priv);
1487 gfar_free_tx_queues(priv); 1495 gfar_free_tx_queues(priv);