diff options
Diffstat (limited to 'drivers/net/ethernet/socionext/netsec.c')
| -rw-r--r-- | drivers/net/ethernet/socionext/netsec.c | 9 | 
1 files changed, 6 insertions, 3 deletions
diff --git a/drivers/net/ethernet/socionext/netsec.c b/drivers/net/ethernet/socionext/netsec.c index 3c53051bdacf..200785e703c8 100644 --- a/drivers/net/ethernet/socionext/netsec.c +++ b/drivers/net/ethernet/socionext/netsec.c @@ -1715,14 +1715,17 @@ static int netsec_netdev_init(struct net_device *ndev)  		goto err1;  	/* set phy power down */ -	data = netsec_phy_read(priv->mii_bus, priv->phy_addr, MII_BMCR) | -		BMCR_PDOWN; -	netsec_phy_write(priv->mii_bus, priv->phy_addr, MII_BMCR, data); +	data = netsec_phy_read(priv->mii_bus, priv->phy_addr, MII_BMCR); +	netsec_phy_write(priv->mii_bus, priv->phy_addr, MII_BMCR, +			 data | BMCR_PDOWN);  	ret = netsec_reset_hardware(priv, true);  	if (ret)  		goto err2; +	/* Restore phy power state */ +	netsec_phy_write(priv->mii_bus, priv->phy_addr, MII_BMCR, data); +  	spin_lock_init(&priv->desc_ring[NETSEC_RING_TX].lock);  	spin_lock_init(&priv->desc_ring[NETSEC_RING_RX].lock);  |