diff options
-rw-r--r-- | drivers/net/mv643xx_eth.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/drivers/net/mv643xx_eth.c b/drivers/net/mv643xx_eth.c index 1ee27c360a4b..c9f55bc57edb 100644 --- a/drivers/net/mv643xx_eth.c +++ b/drivers/net/mv643xx_eth.c | |||
@@ -1516,9 +1516,23 @@ static int mv643xx_eth_shared_remove(struct platform_device *pdev) | |||
1516 | return 0; | 1516 | return 0; |
1517 | } | 1517 | } |
1518 | 1518 | ||
1519 | static void mv643xx_eth_shutdown(struct platform_device *pdev) | ||
1520 | { | ||
1521 | struct net_device *dev = platform_get_drvdata(pdev); | ||
1522 | struct mv643xx_private *mp = netdev_priv(dev); | ||
1523 | unsigned int port_num = mp->port_num; | ||
1524 | |||
1525 | /* Mask all interrupts on ethernet port */ | ||
1526 | mv_write(MV643XX_ETH_INTERRUPT_MASK_REG(port_num), 0); | ||
1527 | mv_read (MV643XX_ETH_INTERRUPT_MASK_REG(port_num)); | ||
1528 | |||
1529 | eth_port_reset(port_num); | ||
1530 | } | ||
1531 | |||
1519 | static struct platform_driver mv643xx_eth_driver = { | 1532 | static struct platform_driver mv643xx_eth_driver = { |
1520 | .probe = mv643xx_eth_probe, | 1533 | .probe = mv643xx_eth_probe, |
1521 | .remove = mv643xx_eth_remove, | 1534 | .remove = mv643xx_eth_remove, |
1535 | .shutdown = mv643xx_eth_shutdown, | ||
1522 | .driver = { | 1536 | .driver = { |
1523 | .name = MV643XX_ETH_NAME, | 1537 | .name = MV643XX_ETH_NAME, |
1524 | }, | 1538 | }, |