qcacld-3.0: Add a wakelock and prevent suspend during idle shutdown

System suspend is occurring a few seconds before idle shutdown while
it was set to deinit state. Add a wakelock and prevent suspend during
idle shutdown.

Change-Id: I976bdece04857045e272c5c3e26db51fb63c51cf
CRs-Fixed: 2706275
This commit is contained in:
Alan Chen 2020-06-09 12:42:28 -07:00 • committed by nshrivas
commit 6ead5beaab

View file

@ -1523,6 +1523,18 @@ static void wlan_hdd_pld_remove(struct device *dev, enum pld_bus_type bus_type)
hdd_exit();
}
static void hdd_soc_idle_shutdown_lock(struct device *dev)
{
hdd_prevent_suspend(WIFI_POWER_EVENT_WAKELOCK_DRIVER_IDLE_SHUTDOWN);
hdd_abort_system_suspend(dev);
}
static void hdd_soc_idle_shutdown_unlock(void)
{
hdd_allow_suspend(WIFI_POWER_EVENT_WAKELOCK_DRIVER_IDLE_SHUTDOWN);
}
/**
* wlan_hdd_pld_idle_shutdown() - wifi module idle shutdown after interface
* inactivity timeout has trigerred idle shutdown
@ -1534,7 +1546,15 @@ static void wlan_hdd_pld_remove(struct device *dev, enum pld_bus_type bus_type)
static int wlan_hdd_pld_idle_shutdown(struct device *dev,
enum pld_bus_type bus_type)
{
return hdd_psoc_idle_shutdown(dev);
int ret;
hdd_soc_idle_shutdown_lock(dev);
ret = hdd_psoc_idle_shutdown(dev);
hdd_soc_idle_shutdown_unlock();
return ret;
}
/**