Commit 32faa3f0 authored by Ryan Hsu's avatar Ryan Hsu Committed by Kalle Valo

ath10k: add the PCI PM core suspend/resume ops

The actual PCI suspend/resume in ath10k has been handled in wow.c,
but in the case of the device doesn't support remote wakeup,
the .hif_suspend() and .hif_resume() will never be handled.

  ath10k_wow_op_suspend()
  {
	if (WARN_ON(!test_bit(ATH10K_FW_FEATURE_WOWLAN_SUPPORT,
		    ar->running_fw->fw_file.fw_features))) {
		ret = 1;
		goto exit;
	}

	....

	ret = ath10k_hif_suspend(ar);
  }

So register the PCI PM core to support the suspend/resume if the device
doesn't support remote wakeup.
Signed-off-by: default avatarRyan Hsu <ryanhsu@qti.qualcomm.com>
Signed-off-by: default avatarKalle Valo <kvalo@qca.qualcomm.com>
parent 69fecf59
...@@ -3396,11 +3396,53 @@ static void ath10k_pci_remove(struct pci_dev *pdev) ...@@ -3396,11 +3396,53 @@ static void ath10k_pci_remove(struct pci_dev *pdev)
MODULE_DEVICE_TABLE(pci, ath10k_pci_id_table); MODULE_DEVICE_TABLE(pci, ath10k_pci_id_table);
#ifdef CONFIG_PM
static int ath10k_pci_pm_suspend(struct device *dev)
{
struct ath10k *ar = dev_get_drvdata(dev);
int ret;
if (test_bit(ATH10K_FW_FEATURE_WOWLAN_SUPPORT,
ar->running_fw->fw_file.fw_features))
return 0;
ret = ath10k_hif_suspend(ar);
if (ret)
ath10k_warn(ar, "failed to suspend hif: %d\n", ret);
return ret;
}
static int ath10k_pci_pm_resume(struct device *dev)
{
struct ath10k *ar = dev_get_drvdata(dev);
int ret;
if (test_bit(ATH10K_FW_FEATURE_WOWLAN_SUPPORT,
ar->running_fw->fw_file.fw_features))
return 0;
ret = ath10k_hif_resume(ar);
if (ret)
ath10k_warn(ar, "failed to resume hif: %d\n", ret);
return ret;
}
static SIMPLE_DEV_PM_OPS(ath10k_pci_pm_ops,
ath10k_pci_pm_suspend,
ath10k_pci_pm_resume);
#endif
static struct pci_driver ath10k_pci_driver = { static struct pci_driver ath10k_pci_driver = {
.name = "ath10k_pci", .name = "ath10k_pci",
.id_table = ath10k_pci_id_table, .id_table = ath10k_pci_id_table,
.probe = ath10k_pci_probe, .probe = ath10k_pci_probe,
.remove = ath10k_pci_remove, .remove = ath10k_pci_remove,
#ifdef CONFIG_PM
.driver.pm = &ath10k_pci_pm_ops,
#endif
}; };
static int __init ath10k_pci_init(void) static int __init ath10k_pci_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