|
@@ -32,7 +32,7 @@
|
|
|
#include "ce.h"
|
|
|
#include "pci.h"
|
|
|
|
|
|
-unsigned int ath10k_target_ps;
|
|
|
+static unsigned int ath10k_target_ps;
|
|
|
module_param(ath10k_target_ps, uint, 0644);
|
|
|
MODULE_PARM_DESC(ath10k_target_ps, "Enable ath10k Target (SoC) PS option");
|
|
|
|
|
@@ -1759,6 +1759,7 @@ static void ath10k_pci_fw_interrupt_handler(struct ath10k *ar)
|
|
|
|
|
|
static int ath10k_pci_hif_power_up(struct ath10k *ar)
|
|
|
{
|
|
|
+ struct ath10k_pci *ar_pci = ath10k_pci_priv(ar);
|
|
|
int ret;
|
|
|
|
|
|
ret = ath10k_pci_start_intr(ar);
|
|
@@ -1783,13 +1784,9 @@ static int ath10k_pci_hif_power_up(struct ath10k *ar)
|
|
|
if (ret)
|
|
|
goto err_irq;
|
|
|
|
|
|
- if (ath10k_target_ps) {
|
|
|
- ath10k_dbg(ATH10K_DBG_PCI, "on-chip power save enabled\n");
|
|
|
- } else {
|
|
|
+ if (!test_bit(ATH10K_PCI_FEATURE_SOC_POWER_SAVE, ar_pci->features))
|
|
|
/* Force AWAKE forever */
|
|
|
- ath10k_dbg(ATH10K_DBG_PCI, "on-chip power save disabled\n");
|
|
|
ath10k_do_pci_wake(ar);
|
|
|
- }
|
|
|
|
|
|
ret = ath10k_pci_ce_init(ar);
|
|
|
if (ret)
|
|
@@ -1810,7 +1807,7 @@ static int ath10k_pci_hif_power_up(struct ath10k *ar)
|
|
|
err_ce:
|
|
|
ath10k_pci_ce_deinit(ar);
|
|
|
err_ps:
|
|
|
- if (!ath10k_target_ps)
|
|
|
+ if (!test_bit(ATH10K_PCI_FEATURE_SOC_POWER_SAVE, ar_pci->features))
|
|
|
ath10k_do_pci_sleep(ar);
|
|
|
err_irq:
|
|
|
ath10k_pci_stop_intr(ar);
|
|
@@ -1820,9 +1817,12 @@ err:
|
|
|
|
|
|
static void ath10k_pci_hif_power_down(struct ath10k *ar)
|
|
|
{
|
|
|
+ struct ath10k_pci *ar_pci = ath10k_pci_priv(ar);
|
|
|
+
|
|
|
ath10k_pci_stop_intr(ar);
|
|
|
+
|
|
|
ath10k_pci_ce_deinit(ar);
|
|
|
- if (!ath10k_target_ps)
|
|
|
+ if (!test_bit(ATH10K_PCI_FEATURE_SOC_POWER_SAVE, ar_pci->features))
|
|
|
ath10k_do_pci_sleep(ar);
|
|
|
}
|
|
|
|
|
@@ -2272,6 +2272,9 @@ static void ath10k_pci_dump_features(struct ath10k_pci *ar_pci)
|
|
|
case ATH10K_PCI_FEATURE_HW_1_0_WORKAROUND:
|
|
|
ath10k_dbg(ATH10K_DBG_PCI, "QCA988X_1.0 workaround enabled\n");
|
|
|
break;
|
|
|
+ case ATH10K_PCI_FEATURE_SOC_POWER_SAVE:
|
|
|
+ ath10k_dbg(ATH10K_DBG_PCI, "QCA98XX SoC power save enabled\n");
|
|
|
+ break;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -2307,6 +2310,9 @@ static int ath10k_pci_probe(struct pci_dev *pdev,
|
|
|
goto err_ar_pci;
|
|
|
}
|
|
|
|
|
|
+ if (ath10k_target_ps)
|
|
|
+ set_bit(ATH10K_PCI_FEATURE_SOC_POWER_SAVE, ar_pci->features);
|
|
|
+
|
|
|
ath10k_pci_dump_features(ar_pci);
|
|
|
|
|
|
ar = ath10k_core_create(ar_pci, ar_pci->dev, &ath10k_pci_hif_ops);
|