summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYue Ma <yuem@codeaurora.org>2017-06-08 15:24:20 -0700
committerGerrit - the friendly Code Review server <code-review@localhost>2017-07-20 17:40:59 -0700
commit0c5297200acc5199eced640867ffcda1e18e8a32 (patch)
treede3bc66648df4b6d99854cecc08a058bdccf0576
parent7aa065cbc4f86125895f6c7c6a5ac1fdda231505 (diff)
cnss2: Deinit MHI before device power on during SSR
This can make sure MHI driver can safely free the memory which is used by WLAN firmware since device is powered off. Change-Id: If9d891eaf1ca7c28869448b3a0a42be713e16c2e Signed-off-by: Yue Ma <yuem@codeaurora.org>
-rw-r--r--drivers/net/wireless/cnss2/main.c3
-rw-r--r--drivers/net/wireless/cnss2/pci.c8
2 files changed, 8 insertions, 3 deletions
diff --git a/drivers/net/wireless/cnss2/main.c b/drivers/net/wireless/cnss2/main.c
index 432960afe09a..e114d0c51a07 100644
--- a/drivers/net/wireless/cnss2/main.c
+++ b/drivers/net/wireless/cnss2/main.c
@@ -1100,7 +1100,8 @@ static int cnss_qca6290_powerup(struct cnss_plat_data *plat_priv)
return -ENODEV;
}
- if (plat_priv->ramdump_info_v2.dump_data_valid) {
+ if (plat_priv->ramdump_info_v2.dump_data_valid ||
+ test_bit(CNSS_DRIVER_RECOVERY, &plat_priv->driver_state)) {
cnss_pci_set_mhi_state(pci_priv, CNSS_MHI_DEINIT);
cnss_pci_clear_dump_info(pci_priv);
}
diff --git a/drivers/net/wireless/cnss2/pci.c b/drivers/net/wireless/cnss2/pci.c
index a17b72ce03ba..236654285db7 100644
--- a/drivers/net/wireless/cnss2/pci.c
+++ b/drivers/net/wireless/cnss2/pci.c
@@ -1392,8 +1392,12 @@ void cnss_pci_stop_mhi(struct cnss_pci_data *pci_priv)
cnss_pci_set_mhi_state_bit(pci_priv, CNSS_MHI_RESUME);
cnss_pci_set_mhi_state(pci_priv, CNSS_MHI_POWER_OFF);
- if (!plat_priv->ramdump_info_v2.dump_data_valid)
- cnss_pci_set_mhi_state(pci_priv, CNSS_MHI_DEINIT);
+
+ if (plat_priv->ramdump_info_v2.dump_data_valid ||
+ test_bit(CNSS_DRIVER_RECOVERY, &plat_priv->driver_state))
+ return;
+
+ cnss_pci_set_mhi_state(pci_priv, CNSS_MHI_DEINIT);
}
static int cnss_pci_probe(struct pci_dev *pci_dev,