diff options
Diffstat (limited to 'drivers/net/dsa/lan9303_mdio.c')
| -rw-r--r-- | drivers/net/dsa/lan9303_mdio.c | 15 | 
1 files changed, 15 insertions, 0 deletions
| diff --git a/drivers/net/dsa/lan9303_mdio.c b/drivers/net/dsa/lan9303_mdio.c index 9cbe80460b53..bbb7032409ba 100644 --- a/drivers/net/dsa/lan9303_mdio.c +++ b/drivers/net/dsa/lan9303_mdio.c @@ -138,6 +138,20 @@ static void lan9303_mdio_remove(struct mdio_device *mdiodev)  		return;  	lan9303_remove(&sw_dev->chip); + +	dev_set_drvdata(&mdiodev->dev, NULL); +} + +static void lan9303_mdio_shutdown(struct mdio_device *mdiodev) +{ +	struct lan9303_mdio *sw_dev = dev_get_drvdata(&mdiodev->dev); + +	if (!sw_dev) +		return; + +	lan9303_shutdown(&sw_dev->chip); + +	dev_set_drvdata(&mdiodev->dev, NULL);  }  /*-------------------------------------------------------------------------*/ @@ -155,6 +169,7 @@ static struct mdio_driver lan9303_mdio_driver = {  	},  	.probe  = lan9303_mdio_probe,  	.remove = lan9303_mdio_remove, +	.shutdown = lan9303_mdio_shutdown,  };  mdio_module_driver(lan9303_mdio_driver); |