Commit 603be388 authored by Larry Finger's avatar Larry Finger Committed by John W. Linville

rtlwifi: Change PCI drivers to use the new PM framework

Signed-off-by: default avatarLarry Finger <Larry.Finger@lwfinger.net>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 7f2a5e21
...@@ -1993,36 +1993,25 @@ call rtl_mac_stop() from the mac80211 ...@@ -1993,36 +1993,25 @@ call rtl_mac_stop() from the mac80211
suspend function first, So there is suspend function first, So there is
no need to call hw_disable here. 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 ieee80211_hw *hw = pci_get_drvdata(pdev);
struct rtl_priv *rtlpriv = rtl_priv(hw); struct rtl_priv *rtlpriv = rtl_priv(hw);
rtlpriv->cfg->ops->hw_suspend(hw); rtlpriv->cfg->ops->hw_suspend(hw);
rtl_deinit_rfkill(hw); rtl_deinit_rfkill(hw);
pci_save_state(pdev);
pci_disable_device(pdev);
pci_set_power_state(pdev, PCI_D3hot);
return 0; return 0;
} }
EXPORT_SYMBOL(rtl_pci_suspend); 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 ieee80211_hw *hw = pci_get_drvdata(pdev);
struct rtl_priv *rtlpriv = rtl_priv(hw); 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); rtlpriv->cfg->ops->hw_resume(hw);
rtl_init_rfkill(hw); rtl_init_rfkill(hw);
return 0; return 0;
......
...@@ -237,8 +237,8 @@ extern struct rtl_intf_ops rtl_pci_ops; ...@@ -237,8 +237,8 @@ extern struct rtl_intf_ops rtl_pci_ops;
int __devinit rtl_pci_probe(struct pci_dev *pdev, int __devinit rtl_pci_probe(struct pci_dev *pdev,
const struct pci_device_id *id); const struct pci_device_id *id);
void rtl_pci_disconnect(struct pci_dev *pdev); void rtl_pci_disconnect(struct pci_dev *pdev);
int rtl_pci_suspend(struct pci_dev *pdev, pm_message_t state); int rtl_pci_suspend(struct device *dev);
int rtl_pci_resume(struct pci_dev *pdev); int rtl_pci_resume(struct device *dev);
static inline u8 pci_read8_sync(struct rtl_priv *rtlpriv, u32 addr) static inline u8 pci_read8_sync(struct rtl_priv *rtlpriv, u32 addr)
{ {
......
...@@ -370,17 +370,21 @@ MODULE_PARM_DESC(swlps, "Set to 1 to use SW control power save (default 0)\n"); ...@@ -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(fwlps, "Set to 1 to use FW control power save (default 1)\n");
MODULE_PARM_DESC(debug, "Set debug level (0-5) (default 0)"); 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 = { static struct pci_driver rtl92ce_driver = {
.name = KBUILD_MODNAME, .name = KBUILD_MODNAME,
.id_table = rtl92ce_pci_ids, .id_table = rtl92ce_pci_ids,
.probe = rtl_pci_probe, .probe = rtl_pci_probe,
.remove = rtl_pci_disconnect, .remove = rtl_pci_disconnect,
.driver.pm = &rtlwifi_pm_ops,
#ifdef CONFIG_PM
.suspend = rtl_pci_suspend,
.resume = rtl_pci_resume,
#endif
}; };
static int __init rtl92ce_module_init(void) static int __init rtl92ce_module_init(void)
......
...@@ -390,17 +390,21 @@ MODULE_PARM_DESC(swlps, "Set to 1 to use SW control power save (default 0)\n"); ...@@ -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(fwlps, "Set to 1 to use FW control power save (default 1)\n");
MODULE_PARM_DESC(debug, "Set debug level (0-5) (default 0)"); 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 = { static struct pci_driver rtl92de_driver = {
.name = KBUILD_MODNAME, .name = KBUILD_MODNAME,
.id_table = rtl92de_pci_ids, .id_table = rtl92de_pci_ids,
.probe = rtl_pci_probe, .probe = rtl_pci_probe,
.remove = rtl_pci_disconnect, .remove = rtl_pci_disconnect,
.driver.pm = &rtlwifi_pm_ops,
#ifdef CONFIG_PM
.suspend = rtl_pci_suspend,
.resume = rtl_pci_resume,
#endif
}; };
/* add global spin lock to solve the problem that /* add global spin lock to solve the problem that
......
...@@ -401,17 +401,21 @@ MODULE_PARM_DESC(swlps, "Set to 1 to use SW control power save (default 0)\n"); ...@@ -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(fwlps, "Set to 1 to use FW control power save (default 1)\n");
MODULE_PARM_DESC(debug, "Set debug level (0-5) (default 0)"); 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 = { static struct pci_driver rtl92se_driver = {
.name = KBUILD_MODNAME, .name = KBUILD_MODNAME,
.id_table = rtl92se_pci_ids, .id_table = rtl92se_pci_ids,
.probe = rtl_pci_probe, .probe = rtl_pci_probe,
.remove = rtl_pci_disconnect, .remove = rtl_pci_disconnect,
.driver.pm = &rtlwifi_pm_ops,
#ifdef CONFIG_PM
.suspend = rtl_pci_suspend,
.resume = rtl_pci_resume,
#endif
}; };
static int __init rtl92se_module_init(void) static int __init rtl92se_module_init(void)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment