diff options
| author | Yue Ma <yuem@codeaurora.org> | 2017-06-08 15:24:20 -0700 |
|---|---|---|
| committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2017-07-20 17:40:59 -0700 |
| commit | 0c5297200acc5199eced640867ffcda1e18e8a32 (patch) | |
| tree | de3bc66648df4b6d99854cecc08a058bdccf0576 | |
| parent | 7aa065cbc4f86125895f6c7c6a5ac1fdda231505 (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.c | 3 | ||||
| -rw-r--r-- | drivers/net/wireless/cnss2/pci.c | 8 |
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, |
