diff --git a/hif/src/hif_main.c b/hif/src/hif_main.c index d8f55d6af4c7..c6ad31c20dc4 100644 --- a/hif/src/hif_main.c +++ b/hif/src/hif_main.c @@ -1256,8 +1256,7 @@ 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_is_suspended(hif_ctx)) { + 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); } diff --git a/hif/src/pcie/if_pci.c b/hif/src/pcie/if_pci.c index 63fbc3a97b24..3919bd13767a 100644 --- a/hif/src/pcie/if_pci.c +++ b/hif/src/pcie/if_pci.c @@ -2807,7 +2807,6 @@ void hif_process_runtime_suspend_success(struct hif_opaque_softc *hif_ctx) struct hif_softc *scn = HIF_GET_SOFTC(hif_ctx); hif_runtime_pm_set_state_suspended(scn); - hif_pm_runtime_set_monitor_wake_intr(hif_ctx, 1); hif_log_runtime_suspend_success(scn); } @@ -2854,9 +2853,12 @@ int hif_runtime_suspend(struct hif_opaque_softc *hif_ctx) return errno; } + hif_pm_runtime_set_monitor_wake_intr(hif_ctx, 1); + errno = hif_bus_suspend_noirq(hif_ctx); if (errno) { HIF_ERROR("%s: failed bus suspend noirq: %d", __func__, errno); + hif_pm_runtime_set_monitor_wake_intr(hif_ctx, 0); goto bus_resume; }