|
@@ -1160,8 +1160,6 @@ static int __wlan_hdd_bus_suspend(struct wow_enable_params wow_params,
|
|
|
if (err)
|
|
|
return err;
|
|
|
|
|
|
- /* Wait for the stop module if already in progress */
|
|
|
- hdd_psoc_idle_timer_stop(hdd_ctx);
|
|
|
|
|
|
/* If Wifi is off, return success for system suspend */
|
|
|
if (hdd_ctx->driver_status != DRIVER_MODULES_ENABLED) {
|
|
@@ -1839,6 +1837,20 @@ static int wlan_hdd_pld_suspend(struct device *dev,
|
|
|
{
|
|
|
struct osif_psoc_sync *psoc_sync;
|
|
|
int errno;
|
|
|
+ struct hdd_context *hdd_ctx;
|
|
|
+
|
|
|
+ hdd_ctx = cds_get_context(QDF_MODULE_ID_HDD);
|
|
|
+
|
|
|
+ errno = wlan_hdd_validate_context(hdd_ctx);
|
|
|
+ if (errno)
|
|
|
+ return errno;
|
|
|
+ /*
|
|
|
+ * Flush the idle shutdown before ops start.This is done here to avoid
|
|
|
+ * the deadlock as idle shutdown waits for the dsc ops
|
|
|
+ * to complete.
|
|
|
+ */
|
|
|
+ hdd_psoc_idle_timer_stop(hdd_ctx);
|
|
|
+
|
|
|
|
|
|
errno = osif_psoc_sync_op_start(dev, &psoc_sync);
|
|
|
if (errno)
|