diff options
author | Prashanth Bhatta <bhattap@codeaurora.org> | 2016-09-15 15:26:16 -0700 |
---|---|---|
committer | Prashanth Bhatta <bhattap@codeaurora.org> | 2016-09-16 16:15:11 -0700 |
commit | 7f94163f8070158e8dcc05ecee9518765334fe07 (patch) | |
tree | 1bc4ffc8062707935d430c1cf3074aaf5e5abf88 /drivers/soc/qcom/icnss.c | |
parent | 6c104f8d40e59cc9299ddef18d92709d8cda3483 (diff) |
icnss: Top level reset if clocks are dead
During recovery, if not able to force enable hardware clocks then
do top level reset only.
CRs-fixed: 1067868
Change-Id: Ie23ca022c94cd214a9e415e9fb774055cfaf881d
Signed-off-by: Prashanth Bhatta <bhattap@codeaurora.org>
Diffstat (limited to 'drivers/soc/qcom/icnss.c')
-rw-r--r-- | drivers/soc/qcom/icnss.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/soc/qcom/icnss.c b/drivers/soc/qcom/icnss.c index 05a9ff4aeb1c..d0d395244469 100644 --- a/drivers/soc/qcom/icnss.c +++ b/drivers/soc/qcom/icnss.c @@ -1320,7 +1320,7 @@ int icnss_hw_reset(struct icnss_priv *priv) MPM_WCSSAON_CONFIG_FORCE_ACTIVE, 1); icnss_hw_poll_reg_field(priv->mem_base_va, SR_WCSSAON_SR_LSB_OFFSET, - SR_WCSSAON_SR_LSB_RETENTION_STATUS, 1, 100, + SR_WCSSAON_SR_LSB_RETENTION_STATUS, 1, 200, ICNSS_HW_REG_RETRY); for (i = 0; i < ICNSS_HW_REG_RETRY; i++) { @@ -1348,11 +1348,13 @@ int icnss_hw_reset(struct icnss_priv *priv) } if (i >= ICNSS_HW_REG_RETRY) - ICNSS_ASSERT(false); + goto top_level_reset; icnss_hw_write_reg_field(priv->mpm_config_va, MPM_WCSSAON_CONFIG_OFFSET, MPM_WCSSAON_CONFIG_DISCONNECT_CLR, 0x1); + usleep_range(200, 300); + icnss_hw_reset_wlan_ss_power_down(priv); icnss_hw_reset_common_ss_power_down(priv); |