rtlwifi: Change PCI drivers to use the new PM framework
authorLarry Finger <Larry.Finger@lwfinger.net>
Wed, 12 Oct 2011 02:28:47 +0000 (21:28 -0500)
committerJohn W. Linville <linville@tuxdriver.com>
Fri, 14 Oct 2011 18:48:14 +0000 (14:48 -0400)
Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/rtlwifi/pci.c
drivers/net/wireless/rtlwifi/pci.h
drivers/net/wireless/rtlwifi/rtl8192ce/sw.c
drivers/net/wireless/rtlwifi/rtl8192de/sw.c
drivers/net/wireless/rtlwifi/rtl8192se/sw.c

index 9983fa18065a679f3550031e8ee13d671fdbfcb1..5380f3b040ac3a66eff53859771e458f78690b1f 100644 (file)
@@ -1993,36 +1993,25 @@ call rtl_mac_stop() from the mac80211
 suspend function first, So there is
 no need to call hw_disable here.
 ****************************************/
-int rtl_pci_suspend(struct pci_dev *pdev, pm_message_t state)
+int rtl_pci_suspend(struct device *dev)
 {
+       struct pci_dev *pdev = to_pci_dev(dev);
        struct ieee80211_hw *hw = pci_get_drvdata(pdev);
        struct rtl_priv *rtlpriv = rtl_priv(hw);
 
        rtlpriv->cfg->ops->hw_suspend(hw);
        rtl_deinit_rfkill(hw);
 
-       pci_save_state(pdev);
-       pci_disable_device(pdev);
-       pci_set_power_state(pdev, PCI_D3hot);
        return 0;
 }
 EXPORT_SYMBOL(rtl_pci_suspend);
 
-int rtl_pci_resume(struct pci_dev *pdev)
+int rtl_pci_resume(struct device *dev)
 {
-       int ret;
+       struct pci_dev *pdev = to_pci_dev(dev);
        struct ieee80211_hw *hw = pci_get_drvdata(pdev);
        struct rtl_priv *rtlpriv = rtl_priv(hw);
 
-       pci_set_power_state(pdev, PCI_D0);
-       ret = pci_enable_device(pdev);
-       if (ret) {
-               RT_ASSERT(false, ("ERR: <======\n"));
-               return ret;
-       }
-
-       pci_restore_state(pdev);
-
        rtlpriv->cfg->ops->hw_resume(hw);
        rtl_init_rfkill(hw);
        return 0;
index a24e505b202bb0f5a4fb61d6db622e9e7aa92ae8..ebe0b42c0518624bb7fcd9d6c4b881c714f39732 100644 (file)
@@ -237,8 +237,8 @@ extern struct rtl_intf_ops rtl_pci_ops;
 int __devinit rtl_pci_probe(struct pci_dev *pdev,
                            const struct pci_device_id *id);
 void rtl_pci_disconnect(struct pci_dev *pdev);
-int rtl_pci_suspend(struct pci_dev *pdev, pm_message_t state);
-int rtl_pci_resume(struct pci_dev *pdev);
+int rtl_pci_suspend(struct device *dev);
+int rtl_pci_resume(struct device *dev);
 
 static inline u8 pci_read8_sync(struct rtl_priv *rtlpriv, u32 addr)
 {
index 869f0725fd5ab87a0b80cbfeca522e02d73a28fa..141302f2b0443a03ea0ae9ee094ae3eb2dc0d1aa 100644 (file)
@@ -370,17 +370,21 @@ MODULE_PARM_DESC(swlps, "Set to 1 to use SW control power save (default 0)\n");
 MODULE_PARM_DESC(fwlps, "Set to 1 to use FW control power save (default 1)\n");
 MODULE_PARM_DESC(debug, "Set debug level (0-5) (default 0)");
 
+static const struct dev_pm_ops rtlwifi_pm_ops = {
+       .suspend = rtl_pci_suspend,
+       .resume = rtl_pci_resume,
+       .freeze = rtl_pci_suspend,
+       .thaw = rtl_pci_resume,
+       .poweroff = rtl_pci_suspend,
+       .restore = rtl_pci_resume,
+};
+
 static struct pci_driver rtl92ce_driver = {
        .name = KBUILD_MODNAME,
        .id_table = rtl92ce_pci_ids,
        .probe = rtl_pci_probe,
        .remove = rtl_pci_disconnect,
-
-#ifdef CONFIG_PM
-       .suspend = rtl_pci_suspend,
-       .resume = rtl_pci_resume,
-#endif
-
+       .driver.pm = &rtlwifi_pm_ops,
 };
 
 static int __init rtl92ce_module_init(void)
index 4fe8b15aca0b6fc8f3863bb0fecac151b5c0c770..691f800921852ce439b66ee84535ef6b6276e53c 100644 (file)
@@ -390,17 +390,21 @@ MODULE_PARM_DESC(swlps, "Set to 1 to use SW control power save (default 0)\n");
 MODULE_PARM_DESC(fwlps, "Set to 1 to use FW control power save (default 1)\n");
 MODULE_PARM_DESC(debug, "Set debug level (0-5) (default 0)");
 
+static const struct dev_pm_ops rtlwifi_pm_ops = {
+       .suspend = rtl_pci_suspend,
+       .resume = rtl_pci_resume,
+       .freeze = rtl_pci_suspend,
+       .thaw = rtl_pci_resume,
+       .poweroff = rtl_pci_suspend,
+       .restore = rtl_pci_resume,
+};
+
 static struct pci_driver rtl92de_driver = {
        .name = KBUILD_MODNAME,
        .id_table = rtl92de_pci_ids,
        .probe = rtl_pci_probe,
        .remove = rtl_pci_disconnect,
-
-#ifdef CONFIG_PM
-       .suspend = rtl_pci_suspend,
-       .resume = rtl_pci_resume,
-#endif
-
+       .driver.pm = &rtlwifi_pm_ops,
 };
 
 /* add global spin lock to solve the problem that
index cdaded0fbb8f00013eb737e17e664f638b792a02..d2dad538bb266e8ea18dce31ce67cf7ef0c4c246 100644 (file)
@@ -401,17 +401,21 @@ MODULE_PARM_DESC(swlps, "Set to 1 to use SW control power save (default 0)\n");
 MODULE_PARM_DESC(fwlps, "Set to 1 to use FW control power save (default 1)\n");
 MODULE_PARM_DESC(debug, "Set debug level (0-5) (default 0)");
 
+static const struct dev_pm_ops rtlwifi_pm_ops = {
+       .suspend = rtl_pci_suspend,
+       .resume = rtl_pci_resume,
+       .freeze = rtl_pci_suspend,
+       .thaw = rtl_pci_resume,
+       .poweroff = rtl_pci_suspend,
+       .restore = rtl_pci_resume,
+};
+
 static struct pci_driver rtl92se_driver = {
        .name = KBUILD_MODNAME,
        .id_table = rtl92se_pci_ids,
        .probe = rtl_pci_probe,
        .remove = rtl_pci_disconnect,
-
-#ifdef CONFIG_PM
-       .suspend = rtl_pci_suspend,
-       .resume = rtl_pci_resume,
-#endif
-
+       .driver.pm = &rtlwifi_pm_ops,
 };
 
 static int __init rtl92se_module_init(void)