diff options
Diffstat (limited to 'drivers/net/ethernet/jme.c')
| -rw-r--r-- | drivers/net/ethernet/jme.c | 23 |
1 files changed, 10 insertions, 13 deletions
diff --git a/drivers/net/ethernet/jme.c b/drivers/net/ethernet/jme.c index 1257b18e6b90..973dade2d07f 100644 --- a/drivers/net/ethernet/jme.c +++ b/drivers/net/ethernet/jme.c @@ -270,17 +270,11 @@ jme_reset_mac_processor(struct jme_adapter *jme) } static inline void -jme_clear_pm_enable_wol(struct jme_adapter *jme) +jme_clear_pm(struct jme_adapter *jme) { jwrite32(jme, JME_PMCS, PMCS_STMASK | jme->reg_pmcs); } -static inline void -jme_clear_pm_disable_wol(struct jme_adapter *jme) -{ - jwrite32(jme, JME_PMCS, PMCS_STMASK); -} - static int jme_reload_eeprom(struct jme_adapter *jme) { @@ -1859,7 +1853,7 @@ jme_open(struct net_device *netdev) struct jme_adapter *jme = netdev_priv(netdev); int rc; - jme_clear_pm_disable_wol(jme); + jme_clear_pm(jme); JME_NAPI_ENABLE(jme); tasklet_init(&jme->linkch_task, jme_link_change_tasklet, @@ -1931,11 +1925,11 @@ jme_wait_link(struct jme_adapter *jme) static void jme_powersave_phy(struct jme_adapter *jme) { - if (jme->reg_pmcs && device_may_wakeup(&jme->pdev->dev)) { + if (jme->reg_pmcs) { jme_set_100m_half(jme); if (jme->reg_pmcs & (PMCS_LFEN | PMCS_LREN)) jme_wait_link(jme); - jme_clear_pm_enable_wol(jme); + jme_clear_pm(jme); } else { jme_phy_off(jme); } @@ -2652,6 +2646,9 @@ jme_set_wol(struct net_device *netdev, if (wol->wolopts & WAKE_MAGIC) jme->reg_pmcs |= PMCS_MFEN; + jwrite32(jme, JME_PMCS, jme->reg_pmcs); + device_set_wakeup_enable(&jme->pdev->dev, !!(jme->reg_pmcs)); + return 0; } @@ -3175,8 +3172,8 @@ jme_init_one(struct pci_dev *pdev, jme->mii_if.mdio_read = jme_mdio_read; jme->mii_if.mdio_write = jme_mdio_write; - jme_clear_pm_disable_wol(jme); - device_init_wakeup(&pdev->dev, true); + jme_clear_pm(jme); + device_set_wakeup_enable(&pdev->dev, true); jme_set_phyfifo_5level(jme); jme->pcirev = pdev->revision; @@ -3307,7 +3304,7 @@ jme_resume(struct device *dev) if (!netif_running(netdev)) return 0; - jme_clear_pm_disable_wol(jme); + jme_clear_pm(jme); jme_phy_on(jme); if (test_bit(JME_FLAG_SSET, &jme->flags)) jme_set_settings(netdev, &jme->old_ecmd); |
