summaryrefslogtreecommitdiff
path: root/drivers/soc/qcom/icnss.c
diff options
context:
space:
mode:
authorPrashanth Bhatta <bhattap@codeaurora.org>2016-09-15 15:26:16 -0700
committerPrashanth Bhatta <bhattap@codeaurora.org>2016-09-16 16:15:11 -0700
commit7f94163f8070158e8dcc05ecee9518765334fe07 (patch)
tree1bc4ffc8062707935d430c1cf3074aaf5e5abf88 /drivers/soc/qcom/icnss.c
parent6c104f8d40e59cc9299ddef18d92709d8cda3483 (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.c6
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);