summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@localhost>2016-10-26 13:13:21 -0700
committerGerrit - the friendly Code Review server <code-review@localhost>2016-10-26 13:13:20 -0700
commit604c0ceedb4f91a01324f0b7982745ce0bb20f36 (patch)
tree5de0fa9e2ff685fab0f73cf513405f4427ca4b3e
parent5b7da258870763a6fe394b3ed1d96ddba59cce28 (diff)
parent0b2474a9bfd7d39e4a3158696d7fa0041a45b894 (diff)
Merge "icnss: Do top level reset when timeout to pull register state"
-rw-r--r--drivers/soc/qcom/icnss.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/drivers/soc/qcom/icnss.c b/drivers/soc/qcom/icnss.c
index bd7fc82afda8..36622e30fbe7 100644
--- a/drivers/soc/qcom/icnss.c
+++ b/drivers/soc/qcom/icnss.c
@@ -1318,7 +1318,7 @@ static int icnss_hw_reset_rf_reset_cmd(struct icnss_priv *priv)
if (ret) {
icnss_pr_err("RESET: RF reset command failed, state: 0x%lx\n",
priv->state);
- icnss_hw_wsi_cmd_error_recovery(priv);
+ return ret;
}
icnss_hw_write_reg_field(priv->mem_base_va, PMM_WSI_CMD_OFFSET,
@@ -1389,7 +1389,7 @@ static int icnss_hw_reset_xo_disable_cmd(struct icnss_priv *priv)
if (ret) {
icnss_pr_err("RESET: XO disable command failed, state: 0x%lx\n",
priv->state);
- icnss_hw_wsi_cmd_error_recovery(priv);
+ return ret;
}
icnss_hw_write_reg_field(priv->mem_base_va, PMM_WSI_CMD_OFFSET,
@@ -1406,6 +1406,7 @@ static int icnss_hw_reset(struct icnss_priv *priv)
u32 rdata;
u32 rdata1;
int i;
+ int ret = 0;
if (test_bit(HW_ONLY_TOP_LEVEL_RESET, &quirks))
goto top_level_reset;
@@ -1457,11 +1458,15 @@ static int icnss_hw_reset(struct icnss_priv *priv)
icnss_hw_reset_wlan_rfactrl_power_down(priv);
- icnss_hw_reset_rf_reset_cmd(priv);
+ ret = icnss_hw_reset_rf_reset_cmd(priv);
+ if (ret)
+ goto top_level_reset;
icnss_hw_reset_switch_to_cxo(priv);
- icnss_hw_reset_xo_disable_cmd(priv);
+ ret = icnss_hw_reset_xo_disable_cmd(priv);
+ if (ret)
+ goto top_level_reset;
icnss_hw_write_reg_field(priv->mpm_config_va, MPM_WCSSAON_CONFIG_OFFSET,
MPM_WCSSAON_CONFIG_FORCE_ACTIVE, 0);