cnss: Reset QCA Card during WLAN SubSystem Recovery
During SSR, we observe cases where card enter bad state and does not responding to any I/O commands. Fix it by powering off and on the card. Change-Id: Ia3ab2781c93d1cfe7427e2b1c2644f6628f6465f CRs-Fixed: 1058794 Signed-off-by: Komal Seelam <kseelam@codeaurora.org>
This commit is contained in:
parent
9bb7d6728f
commit
fcf844fbdd
1 changed files with 29 additions and 7 deletions
|
@ -296,15 +296,25 @@ static int cnss_sdio_shutdown(const struct subsys_desc *subsys, bool force_stop)
|
|||
{
|
||||
struct cnss_sdio_info *cnss_info;
|
||||
struct cnss_sdio_wlan_driver *wdrv;
|
||||
int ret = 0;
|
||||
|
||||
if (!cnss_pdata)
|
||||
return -ENODEV;
|
||||
|
||||
cnss_info = &cnss_pdata->cnss_sdio_info;
|
||||
wdrv = cnss_info->wdrv;
|
||||
if (wdrv && wdrv->shutdown)
|
||||
wdrv->shutdown(cnss_info->func);
|
||||
return 0;
|
||||
if (!wdrv)
|
||||
return 0;
|
||||
if (!wdrv->shutdown)
|
||||
return 0;
|
||||
|
||||
wdrv->shutdown(cnss_info->func);
|
||||
ret = cnss_put_hw_resources(cnss_info->dev);
|
||||
|
||||
if (ret)
|
||||
pr_err("%s: Failed to put hw resources\n", __func__);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int cnss_sdio_powerup(const struct subsys_desc *subsys)
|
||||
|
@ -318,11 +328,23 @@ static int cnss_sdio_powerup(const struct subsys_desc *subsys)
|
|||
|
||||
cnss_info = &cnss_pdata->cnss_sdio_info;
|
||||
wdrv = cnss_info->wdrv;
|
||||
if (wdrv && wdrv->reinit) {
|
||||
ret = wdrv->reinit(cnss_info->func, cnss_info->id);
|
||||
if (ret)
|
||||
pr_err("%s: wlan reinit error=%d\n", __func__, ret);
|
||||
|
||||
if (!wdrv)
|
||||
return 0;
|
||||
|
||||
if (!wdrv->reinit)
|
||||
return 0;
|
||||
|
||||
ret = cnss_get_hw_resources(cnss_info->dev);
|
||||
if (ret) {
|
||||
pr_err("%s: Failed to power up HW\n", __func__);
|
||||
return ret;
|
||||
}
|
||||
|
||||
ret = wdrv->reinit(cnss_info->func, cnss_info->id);
|
||||
if (ret)
|
||||
pr_err("%s: wlan reinit error=%d\n", __func__, ret);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue