diff options
Diffstat (limited to 'drivers/net/forcedeth.c')
-rw-r--r-- | drivers/net/forcedeth.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/drivers/net/forcedeth.c b/drivers/net/forcedeth.c index 0d7e5750245a..12384df8cb2b 100644 --- a/drivers/net/forcedeth.c +++ b/drivers/net/forcedeth.c | |||
@@ -1446,9 +1446,9 @@ static int phy_init(struct net_device *dev) | |||
1446 | /* some phys clear out pause advertisment on reset, set it back */ | 1446 | /* some phys clear out pause advertisment on reset, set it back */ |
1447 | mii_rw(dev, np->phyaddr, MII_ADVERTISE, reg); | 1447 | mii_rw(dev, np->phyaddr, MII_ADVERTISE, reg); |
1448 | 1448 | ||
1449 | /* restart auto negotiation */ | 1449 | /* restart auto negotiation, power down phy */ |
1450 | mii_control = mii_rw(dev, np->phyaddr, MII_BMCR, MII_READ); | 1450 | mii_control = mii_rw(dev, np->phyaddr, MII_BMCR, MII_READ); |
1451 | mii_control |= (BMCR_ANRESTART | BMCR_ANENABLE); | 1451 | mii_control |= (BMCR_ANRESTART | BMCR_ANENABLE | BMCR_PDOWN); |
1452 | if (mii_rw(dev, np->phyaddr, MII_BMCR, mii_control)) { | 1452 | if (mii_rw(dev, np->phyaddr, MII_BMCR, mii_control)) { |
1453 | return PHY_ERROR; | 1453 | return PHY_ERROR; |
1454 | } | 1454 | } |
@@ -5208,6 +5208,10 @@ static int nv_open(struct net_device *dev) | |||
5208 | 5208 | ||
5209 | dprintk(KERN_DEBUG "nv_open: begin\n"); | 5209 | dprintk(KERN_DEBUG "nv_open: begin\n"); |
5210 | 5210 | ||
5211 | /* power up phy */ | ||
5212 | mii_rw(dev, np->phyaddr, MII_BMCR, | ||
5213 | mii_rw(dev, np->phyaddr, MII_BMCR, MII_READ) & ~BMCR_PDOWN); | ||
5214 | |||
5211 | /* erase previous misconfiguration */ | 5215 | /* erase previous misconfiguration */ |
5212 | if (np->driver_data & DEV_HAS_POWER_CNTRL) | 5216 | if (np->driver_data & DEV_HAS_POWER_CNTRL) |
5213 | nv_mac_reset(dev); | 5217 | nv_mac_reset(dev); |
@@ -5401,6 +5405,10 @@ static int nv_close(struct net_device *dev) | |||
5401 | if (np->wolenabled) { | 5405 | if (np->wolenabled) { |
5402 | writel(NVREG_PFF_ALWAYS|NVREG_PFF_MYADDR, base + NvRegPacketFilterFlags); | 5406 | writel(NVREG_PFF_ALWAYS|NVREG_PFF_MYADDR, base + NvRegPacketFilterFlags); |
5403 | nv_start_rx(dev); | 5407 | nv_start_rx(dev); |
5408 | } else { | ||
5409 | /* power down phy */ | ||
5410 | mii_rw(dev, np->phyaddr, MII_BMCR, | ||
5411 | mii_rw(dev, np->phyaddr, MII_BMCR, MII_READ)|BMCR_PDOWN); | ||
5404 | } | 5412 | } |
5405 | 5413 | ||
5406 | /* FIXME: power down nic */ | 5414 | /* FIXME: power down nic */ |