qcacmn: Remove logic to enable/disable wake msi for drv systems

Remove logic to enable/disable wake msi for drv systems. Today, during
WoW suspend sequence, between hif pci bus suspend and hif pci bus
suspend no irq, wake msi is getting disable temporarily. In case
fw toggles wake msi during this period, then the wake msi is lost,
which can lead to device not waking up for fw triggered wakeup.
Add the fix to remove enable/disable wake msi from suspend/resume
path and keep wake msi always enabled.

Change-Id: Idad0805f66ead4079d67577fa1151f73567511a3
CRs-Fixed: 3042261
此提交包含在:
Alan Chen
2021-09-28 14:31:41 -07:00
提交者 Madan Koyyalamudi
父節點 29fe92fbd7
當前提交 c180315712
共有 3 個檔案被更改,包括 2 行新增11 行删除

查看文件

@@ -480,7 +480,6 @@ int hif_apps_irqs_disable(struct hif_opaque_softc *hif_ctx)
return -EINVAL;
/* if the wake_irq is shared, don't disable it twice */
disable_irq(scn->wake_irq);
for (i = 0; i < scn->ce_count; ++i) {
int irq = scn->bus_ops.hif_map_ce_to_irq(scn, i);
@@ -502,7 +501,6 @@ int hif_apps_irqs_enable(struct hif_opaque_softc *hif_ctx)
return -EINVAL;
/* if the wake_irq is shared, don't enable it twice */
enable_irq(scn->wake_irq);
for (i = 0; i < scn->ce_count; ++i) {
int irq = scn->bus_ops.hif_map_ce_to_irq(scn, i);

查看文件

@@ -2109,11 +2109,8 @@ irqreturn_t hif_wake_interrupt_handler(int irq, void *context)
hif_info("wake interrupt received on irq %d", irq);
if (hif_pm_runtime_get_monitor_wake_intr(hif_ctx)) {
hif_pm_runtime_set_monitor_wake_intr(hif_ctx, 0);
hif_pm_runtime_request_resume(hif_ctx,
RTPM_ID_WAKE_INTR_HANDLER);
}
hif_pm_runtime_set_monitor_wake_intr(hif_ctx, 0);
hif_pm_runtime_request_resume(hif_ctx, RTPM_ID_WAKE_INTR_HANDLER);
if (scn->initial_wakeup_cb)
scn->initial_wakeup_cb(scn->initial_wakeup_priv);

查看文件

@@ -2345,8 +2345,6 @@ int hif_pci_bus_suspend_noirq(struct hif_softc *scn)
if (hif_can_suspend_link(GET_HIF_OPAQUE_HDL(scn)))
qdf_atomic_set(&scn->link_suspended, 1);
hif_apps_wake_irq_enable(GET_HIF_OPAQUE_HDL(scn));
return 0;
}
@@ -2361,8 +2359,6 @@ int hif_pci_bus_suspend_noirq(struct hif_softc *scn)
*/
int hif_pci_bus_resume_noirq(struct hif_softc *scn)
{
hif_apps_wake_irq_disable(GET_HIF_OPAQUE_HDL(scn));
/* a vote for link up can come in the middle of the ongoing resume
* process. hence, clear the link suspend flag once
* hif_bus_resume_noirq() succeeds since PCIe link is already resumed