summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSundar Subramaniyan <subrams@qti.qualcomm.com>2013-11-07 14:24:39 +0530
committerMadan Mohan Koyyalamudi <mkoyyala@qca.qualcomm.com>2013-11-19 16:23:15 -0800
commit8526c0b30f1280c271b8d52d1bee60dcc8dddd81 (patch)
tree270542465bf2cd8c6584d4aad9420d18eb90276c
parent38c25c9ad41f6a6bf1ec087d1fcde4d5aaaa30b3 (diff)
qcacld-2.0: Do not wake up the target during suspend/resume
With CONFIG_ATH_PCIE_MAX_PERF enabled, no need to wake up target Change-Id: I27a628b99822d6a808221d2bcd7192bdd56805a9 CRs-Fixed: 571547
-rw-r--r--CORE/SERVICES/HIF/PCIe/if_pci.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/CORE/SERVICES/HIF/PCIe/if_pci.c b/CORE/SERVICES/HIF/PCIe/if_pci.c
index 5a63f151b500..ce1b91c43c00 100644
--- a/CORE/SERVICES/HIF/PCIe/if_pci.c
+++ b/CORE/SERVICES/HIF/PCIe/if_pci.c
@@ -911,6 +911,11 @@ hif_pci_suspend(struct pci_dev *pdev, pm_message_t state)
/* TODO: Wait until tx queue drains. Remove this hard coded delay */
msleep(3*1000); /* 3 sec */
#endif
+
+#if CONFIG_ATH_PCIE_MAX_PERF
+ /* Max performance path so no need to wake/poll target */
+ A_PCI_WRITE32(sc->mem + FW_INDICATOR_ADDRESS, (state.event << 16));
+#else
/* Make sure to wake Target before accessing Target memory */
A_PCI_WRITE32(sc->mem + PCIE_LOCAL_BASE_ADDRESS + PCIE_SOC_WAKE_ADDRESS, PCIE_SOC_WAKE_V_MASK);
while (!hif_pci_targ_is_awake(sc, sc->mem)) {
@@ -918,6 +923,7 @@ hif_pci_suspend(struct pci_dev *pdev, pm_message_t state)
}
A_PCI_WRITE32(sc->mem + FW_INDICATOR_ADDRESS, (state.event << 16));
A_PCI_WRITE32(sc->mem + PCIE_LOCAL_BASE_ADDRESS + PCIE_SOC_WAKE_ADDRESS, PCIE_SOC_WAKE_RESET);
+#endif
/* No need to send WMI_PDEV_SUSPEND_CMDID to FW if WOW is enabled */
if (!wma_is_wow_enabled(vos_get_context(VOS_MODULE_ID_WDA, vos)) &&
@@ -968,6 +974,10 @@ hif_pci_resume(struct pci_dev *pdev)
pci_write_config_dword(pdev, 0x40, val & 0xffff00ff);
}
+#if CONFIG_ATH_PCIE_MAX_PERF
+ /* Max performance patch so no need to wake/poll target */
+ val = A_PCI_READ32(sc->mem + FW_INDICATOR_ADDRESS) >> 16;
+#else
/* Make sure to wake Target before accessing Target memory */
A_PCI_WRITE32(sc->mem + PCIE_LOCAL_BASE_ADDRESS + PCIE_SOC_WAKE_ADDRESS, PCIE_SOC_WAKE_V_MASK);
while (!hif_pci_targ_is_awake(sc, sc->mem)) {
@@ -975,6 +985,7 @@ hif_pci_resume(struct pci_dev *pdev)
}
val = A_PCI_READ32(sc->mem + FW_INDICATOR_ADDRESS) >> 16;
A_PCI_WRITE32(sc->mem + PCIE_LOCAL_BASE_ADDRESS + PCIE_SOC_WAKE_ADDRESS, PCIE_SOC_WAKE_RESET);
+#endif
/* No need to send WMI_PDEV_RESUME_CMDID to FW if WOW is enabled */
if (!wma_is_wow_enabled(vos_get_context(VOS_MODULE_ID_WDA, vos_context)) &&