diff options
Diffstat (limited to 'drivers/net/dsa/mt7530.c')
| -rw-r--r-- | drivers/net/dsa/mt7530.c | 26 | 
1 files changed, 19 insertions, 7 deletions
diff --git a/drivers/net/dsa/mt7530.c b/drivers/net/dsa/mt7530.c index d0cba2d1cd68..9890672a206d 100644 --- a/drivers/net/dsa/mt7530.c +++ b/drivers/net/dsa/mt7530.c @@ -1035,9 +1035,6 @@ mt7530_port_enable(struct dsa_switch *ds, int port,  {  	struct mt7530_priv *priv = ds->priv; -	if (!dsa_is_user_port(ds, port)) -		return 0; -  	mutex_lock(&priv->reg_mutex);  	/* Allow the user port gets connected to the cpu port and also @@ -1060,9 +1057,6 @@ mt7530_port_disable(struct dsa_switch *ds, int port)  {  	struct mt7530_priv *priv = ds->priv; -	if (!dsa_is_user_port(ds, port)) -		return; -  	mutex_lock(&priv->reg_mutex);  	/* Clear up all port matrix which could be restored in the next @@ -3211,7 +3205,7 @@ mt7530_probe(struct mdio_device *mdiodev)  		return -ENOMEM;  	priv->ds->dev = &mdiodev->dev; -	priv->ds->num_ports = DSA_MAX_PORTS; +	priv->ds->num_ports = MT7530_NUM_PORTS;  	/* Use medatek,mcm property to distinguish hardware type that would  	 * casues a little bit differences on power-on sequence. @@ -3286,6 +3280,9 @@ mt7530_remove(struct mdio_device *mdiodev)  	struct mt7530_priv *priv = dev_get_drvdata(&mdiodev->dev);  	int ret = 0; +	if (!priv) +		return; +  	ret = regulator_disable(priv->core_pwr);  	if (ret < 0)  		dev_err(priv->dev, @@ -3301,11 +3298,26 @@ mt7530_remove(struct mdio_device *mdiodev)  	dsa_unregister_switch(priv->ds);  	mutex_destroy(&priv->reg_mutex); + +	dev_set_drvdata(&mdiodev->dev, NULL); +} + +static void mt7530_shutdown(struct mdio_device *mdiodev) +{ +	struct mt7530_priv *priv = dev_get_drvdata(&mdiodev->dev); + +	if (!priv) +		return; + +	dsa_switch_shutdown(priv->ds); + +	dev_set_drvdata(&mdiodev->dev, NULL);  }  static struct mdio_driver mt7530_mdio_driver = {  	.probe  = mt7530_probe,  	.remove = mt7530_remove, +	.shutdown = mt7530_shutdown,  	.mdiodrv.driver = {  		.name = "mt7530",  		.of_match_table = mt7530_of_match,  | 
