diff options
| author | Sundar Subramaniyan <subrams@qti.qualcomm.com> | 2013-11-07 14:24:39 +0530 |
|---|---|---|
| committer | Madan Mohan Koyyalamudi <mkoyyala@qca.qualcomm.com> | 2013-11-19 16:23:15 -0800 |
| commit | 8526c0b30f1280c271b8d52d1bee60dcc8dddd81 (patch) | |
| tree | 270542465bf2cd8c6584d4aad9420d18eb90276c | |
| parent | 38c25c9ad41f6a6bf1ec087d1fcde4d5aaaa30b3 (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.c | 11 |
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)) && |
