aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGuo-Fu Tseng <cooldavid@cooldavid.org>2011-06-27 21:38:30 -0400
committerDavid S. Miller <davem@davemloft.net>2011-07-01 01:13:16 -0400
commitbc057e0366cad58e55038a2cb69572d51c40cdf3 (patch)
tree741298ce8b3b4031a8a10933c1261825ad1e53f3
parentaab6fb82b1912a312f7547c92ac8d4ecb072e807 (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.c23
-rw-r--r--drivers/net/jme.h2
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)
271static inline void 271static inline void
272jme_clear_pm(struct jme_adapter *jme) 272jme_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
279static int 277static 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
3139static int jme_suspend(struct device *dev) 3137static int
3138jme_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
3178static int jme_resume(struct device *dev) 3177static int
3178jme_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 */
854enum jme_pmcs_bit_masks { 854enum 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,