diff options
author | Linux Build Service Account <lnxbuild@localhost> | 2016-10-26 13:13:21 -0700 |
---|---|---|
committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2016-10-26 13:13:20 -0700 |
commit | 604c0ceedb4f91a01324f0b7982745ce0bb20f36 (patch) | |
tree | 5de0fa9e2ff685fab0f73cf513405f4427ca4b3e | |
parent | 5b7da258870763a6fe394b3ed1d96ddba59cce28 (diff) | |
parent | 0b2474a9bfd7d39e4a3158696d7fa0041a45b894 (diff) |
Merge "icnss: Do top level reset when timeout to pull register state"
-rw-r--r-- | drivers/soc/qcom/icnss.c | 13 |
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); |