Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

rtlwifi: Change PCI drivers to use the new PM framework

parent 7f2a5e21
Loading
Loading
Loading
Loading
+4 −15
Original line number Original line Diff line number Diff line
@@ -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;
+2 −2
Original line number Original line Diff line number Diff line
@@ -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)
{
{
+10 −6
Original line number Original line Diff line number Diff line
@@ -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)
+10 −6
Original line number Original line Diff line number Diff line
@@ -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
+10 −6
Original line number Original line Diff line number Diff line
@@ -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)