ath10k: suspend hardware before reset

In case of warm reset target need to be suspended.
Suspend function is extented to handle both cases
with disabling interrupts and without disabling interrupts.
Warm target reset requires suspend with all interrupts
disabled.

This patch depends on
ath10k: fix device initialization routine

Signed-off-by: Marek Puzyniak <marek.puzyniak@tieto.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
This commit is contained in:
Marek Puzyniak
2014-02-10 17:14:24 +01:00
committed by Kalle Valo
parent 9042e17df8
commit 00f5482bcd
5 changed files with 31 additions and 14 deletions

View File

@@ -3442,22 +3442,14 @@ static int ath10k_suspend(struct ieee80211_hw *hw,
mutex_lock(&ar->conf_mutex);
reinit_completion(&ar->target_suspend);
ret = ath10k_wmi_pdev_suspend_target(ar);
ret = ath10k_wait_for_suspend(ar, WMI_PDEV_SUSPEND);
if (ret) {
ath10k_warn("could not suspend target (%d)\n", ret);
if (ret == -ETIMEDOUT)
goto resume;
ret = 1;
goto exit;
}
ret = wait_for_completion_timeout(&ar->target_suspend, 1 * HZ);
if (ret == 0) {
ath10k_warn("suspend timed out - target pause event never came\n");
goto resume;
}
ret = ath10k_hif_suspend(ar);
if (ret) {
ath10k_warn("could not suspend hif (%d)\n", ret);