diff --git a/hif/src/hif_main.c b/hif/src/hif_main.c index dbdda54eafce..8a13b69a0e14 100644 --- a/hif/src/hif_main.c +++ b/hif/src/hif_main.c @@ -1283,6 +1283,8 @@ irqreturn_t hif_wake_interrupt_handler(int irq, void *context) if (hif_is_ut_suspended(scn)) hif_ut_fw_resume(scn); + qdf_pm_system_wakeup(); + return IRQ_HANDLED; } diff --git a/qdf/inc/qdf_lock.h b/qdf/inc/qdf_lock.h index 8b3516836316..3950c564c317 100644 --- a/qdf/inc/qdf_lock.h +++ b/qdf/inc/qdf_lock.h @@ -494,6 +494,8 @@ QDF_STATUS qdf_wake_lock_release(qdf_wake_lock_t *lock, uint32_t reason); QDF_STATUS qdf_wake_lock_destroy(qdf_wake_lock_t *lock); +void qdf_pm_system_wakeup(void); + QDF_STATUS qdf_runtime_pm_get(void); QDF_STATUS qdf_runtime_pm_put(void); QDF_STATUS qdf_runtime_pm_prevent_suspend(qdf_runtime_lock_t *lock); diff --git a/qdf/linux/src/qdf_lock.c b/qdf/linux/src/qdf_lock.c index f07e7acc23cd..0c1b19c22d7c 100644 --- a/qdf/linux/src/qdf_lock.c +++ b/qdf/linux/src/qdf_lock.c @@ -28,6 +28,7 @@ #include #endif #include +#include /** * qdf_mutex_create() - Initialize a mutex @@ -386,6 +387,18 @@ QDF_STATUS qdf_wake_lock_destroy(qdf_wake_lock_t *lock) #endif qdf_export_symbol(qdf_wake_lock_destroy); +/** + * qdf_pm_system_wakeup() - wakeup system + * + * Return: None + */ +void qdf_pm_system_wakeup(void) +{ + pm_system_wakeup(); +} + +qdf_export_symbol(qdf_pm_system_wakeup); + #ifdef FEATURE_RUNTIME_PM /** * qdf_runtime_pm_get() - do a get opperation on the device