diff options
author | Guo-Fu Tseng <cooldavid@cooldavid.org> | 2011-06-27 21:38:30 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2011-07-01 01:13:16 -0400 |
commit | bc057e0366cad58e55038a2cb69572d51c40cdf3 (patch) | |
tree | 741298ce8b3b4031a8a10933c1261825ad1e53f3 | |
parent | aab6fb82b1912a312f7547c92ac8d4ecb072e807 (diff) |
jme: Cleanup PM operations after using new PM API
1. Using enum name instead of numeric value.
2. device_set_wakeup_enable expect bool argument
adding !!() to the argument to be passed.
3. Remove non-jme-hardware related operations from
jme_clear_pm()
4. Reuse jme_clear_pm() in jme_resume() and jme_powersave_phy()
Signed-off-by: Guo-Fu Tseng <cooldavid@cooldavid.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | drivers/net/jme.c | 23 | ||||
-rw-r--r-- | drivers/net/jme.h | 2 |
2 files changed, 13 insertions, 12 deletions
diff --git a/drivers/net/jme.c b/drivers/net/jme.c index 2ce93393320c..6b2a5e744255 100644 --- a/drivers/net/jme.c +++ b/drivers/net/jme.c | |||
@@ -271,9 +271,7 @@ jme_reset_mac_processor(struct jme_adapter *jme) | |||
271 | static inline void | 271 | static inline void |
272 | jme_clear_pm(struct jme_adapter *jme) | 272 | jme_clear_pm(struct jme_adapter *jme) |
273 | { | 273 | { |
274 | jwrite32(jme, JME_PMCS, 0xFFFF0000 | jme->reg_pmcs); | 274 | jwrite32(jme, JME_PMCS, PMCS_STMASK | jme->reg_pmcs); |
275 | pci_set_power_state(jme->pdev, PCI_D0); | ||
276 | device_set_wakeup_enable(&jme->pdev->dev, false); | ||
277 | } | 275 | } |
278 | 276 | ||
279 | static int | 277 | static int |
@@ -1817,11 +1815,9 @@ jme_powersave_phy(struct jme_adapter *jme) | |||
1817 | { | 1815 | { |
1818 | if (jme->reg_pmcs) { | 1816 | if (jme->reg_pmcs) { |
1819 | jme_set_100m_half(jme); | 1817 | jme_set_100m_half(jme); |
1820 | |||
1821 | if (jme->reg_pmcs & (PMCS_LFEN | PMCS_LREN)) | 1818 | if (jme->reg_pmcs & (PMCS_LFEN | PMCS_LREN)) |
1822 | jme_wait_link(jme); | 1819 | jme_wait_link(jme); |
1823 | 1820 | jme_clear_pm(jme); | |
1824 | jwrite32(jme, JME_PMCS, jme->reg_pmcs); | ||
1825 | } else { | 1821 | } else { |
1826 | jme_phy_off(jme); | 1822 | jme_phy_off(jme); |
1827 | } | 1823 | } |
@@ -2529,8 +2525,7 @@ jme_set_wol(struct net_device *netdev, | |||
2529 | jme->reg_pmcs |= PMCS_MFEN; | 2525 | jme->reg_pmcs |= PMCS_MFEN; |
2530 | 2526 | ||
2531 | jwrite32(jme, JME_PMCS, jme->reg_pmcs); | 2527 | jwrite32(jme, JME_PMCS, jme->reg_pmcs); |
2532 | 2528 | device_set_wakeup_enable(&jme->pdev->dev, !!(jme->reg_pmcs)); | |
2533 | device_set_wakeup_enable(&jme->pdev->dev, jme->reg_pmcs); | ||
2534 | 2529 | ||
2535 | return 0; | 2530 | return 0; |
2536 | } | 2531 | } |
@@ -3058,6 +3053,9 @@ jme_init_one(struct pci_dev *pdev, | |||
3058 | jme->mii_if.mdio_write = jme_mdio_write; | 3053 | jme->mii_if.mdio_write = jme_mdio_write; |
3059 | 3054 | ||
3060 | jme_clear_pm(jme); | 3055 | jme_clear_pm(jme); |
3056 | pci_set_power_state(jme->pdev, PCI_D0); | ||
3057 | device_set_wakeup_enable(&pdev->dev, true); | ||
3058 | |||
3061 | jme_set_phyfifo_5level(jme); | 3059 | jme_set_phyfifo_5level(jme); |
3062 | jme->pcirev = pdev->revision; | 3060 | jme->pcirev = pdev->revision; |
3063 | if (!jme->fpgaver) | 3061 | if (!jme->fpgaver) |
@@ -3136,7 +3134,8 @@ jme_shutdown(struct pci_dev *pdev) | |||
3136 | } | 3134 | } |
3137 | 3135 | ||
3138 | #ifdef CONFIG_PM_SLEEP | 3136 | #ifdef CONFIG_PM_SLEEP |
3139 | static int jme_suspend(struct device *dev) | 3137 | static int |
3138 | jme_suspend(struct device *dev) | ||
3140 | { | 3139 | { |
3141 | struct pci_dev *pdev = to_pci_dev(dev); | 3140 | struct pci_dev *pdev = to_pci_dev(dev); |
3142 | struct net_device *netdev = pci_get_drvdata(pdev); | 3141 | struct net_device *netdev = pci_get_drvdata(pdev); |
@@ -3175,14 +3174,14 @@ static int jme_suspend(struct device *dev) | |||
3175 | return 0; | 3174 | return 0; |
3176 | } | 3175 | } |
3177 | 3176 | ||
3178 | static int jme_resume(struct device *dev) | 3177 | static int |
3178 | jme_resume(struct device *dev) | ||
3179 | { | 3179 | { |
3180 | struct pci_dev *pdev = to_pci_dev(dev); | 3180 | struct pci_dev *pdev = to_pci_dev(dev); |
3181 | struct net_device *netdev = pci_get_drvdata(pdev); | 3181 | struct net_device *netdev = pci_get_drvdata(pdev); |
3182 | struct jme_adapter *jme = netdev_priv(netdev); | 3182 | struct jme_adapter *jme = netdev_priv(netdev); |
3183 | 3183 | ||
3184 | jwrite32(jme, JME_PMCS, 0xFFFF0000 | jme->reg_pmcs); | 3184 | jme_clear_pm(jme); |
3185 | |||
3186 | jme_phy_on(jme); | 3185 | jme_phy_on(jme); |
3187 | if (test_bit(JME_FLAG_SSET, &jme->flags)) | 3186 | if (test_bit(JME_FLAG_SSET, &jme->flags)) |
3188 | jme_set_settings(netdev, &jme->old_ecmd); | 3187 | jme_set_settings(netdev, &jme->old_ecmd); |
diff --git a/drivers/net/jme.h b/drivers/net/jme.h index 0d5da06489d8..1481a62a1f36 100644 --- a/drivers/net/jme.h +++ b/drivers/net/jme.h | |||
@@ -852,6 +852,7 @@ enum jme_ghc_txmac_clk { | |||
852 | * Power management control and status register | 852 | * Power management control and status register |
853 | */ | 853 | */ |
854 | enum jme_pmcs_bit_masks { | 854 | enum jme_pmcs_bit_masks { |
855 | PMCS_STMASK = 0xFFFF0000, | ||
855 | PMCS_WF7DET = 0x80000000, | 856 | PMCS_WF7DET = 0x80000000, |
856 | PMCS_WF6DET = 0x40000000, | 857 | PMCS_WF6DET = 0x40000000, |
857 | PMCS_WF5DET = 0x20000000, | 858 | PMCS_WF5DET = 0x20000000, |
@@ -863,6 +864,7 @@ enum jme_pmcs_bit_masks { | |||
863 | PMCS_LFDET = 0x00040000, | 864 | PMCS_LFDET = 0x00040000, |
864 | PMCS_LRDET = 0x00020000, | 865 | PMCS_LRDET = 0x00020000, |
865 | PMCS_MFDET = 0x00010000, | 866 | PMCS_MFDET = 0x00010000, |
867 | PMCS_ENMASK = 0x0000FFFF, | ||
866 | PMCS_WF7EN = 0x00008000, | 868 | PMCS_WF7EN = 0x00008000, |
867 | PMCS_WF6EN = 0x00004000, | 869 | PMCS_WF6EN = 0x00004000, |
868 | PMCS_WF5EN = 0x00002000, | 870 | PMCS_WF5EN = 0x00002000, |