summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@quicinc.com>2017-04-28 11:12:24 -0700
committerGerrit - the friendly Code Review server <code-review@localhost>2017-04-28 11:12:24 -0700
commit1d0a503de0556c00ee889a887c2d5d6008e7caaa (patch)
tree40d70bc214edcd9d9fef06c05491e65ffe4e728f /drivers
parenta471a0b0776cad3748382fcf7a086b091ec7506f (diff)
parentd65bd33775807fb23a23b49b2bafd936b8e5ad6e (diff)
Merge "icnss: Add support to handle SSR within SSR"
Diffstat (limited to 'drivers')
-rw-r--r--drivers/soc/qcom/icnss.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/drivers/soc/qcom/icnss.c b/drivers/soc/qcom/icnss.c
index ab46eb70651c..51a6e3bf0e64 100644
--- a/drivers/soc/qcom/icnss.c
+++ b/drivers/soc/qcom/icnss.c
@@ -202,6 +202,7 @@ enum icnss_driver_state {
ICNSS_MSA0_ASSIGNED,
ICNSS_WLFW_EXISTS,
ICNSS_WDOG_BITE,
+ ICNSS_SHUTDOWN_DONE,
};
struct ce_irq_list {
@@ -1990,9 +1991,13 @@ static int icnss_call_driver_shutdown(struct icnss_priv *priv)
if (!priv->ops || !priv->ops->shutdown)
goto out;
+ if (test_bit(ICNSS_SHUTDOWN_DONE, &penv->state))
+ goto out;
+
icnss_pr_dbg("Calling driver shutdown state: 0x%lx\n", priv->state);
priv->ops->shutdown(&priv->pdev->dev);
+ set_bit(ICNSS_SHUTDOWN_DONE, &penv->state);
out:
return 0;
@@ -2030,6 +2035,7 @@ static int icnss_pd_restart_complete(struct icnss_priv *priv)
}
out:
+ clear_bit(ICNSS_SHUTDOWN_DONE, &penv->state);
return 0;
call_probe:
@@ -3667,6 +3673,9 @@ static int icnss_stats_show_state(struct seq_file *s, struct icnss_priv *priv)
case ICNSS_WDOG_BITE:
seq_puts(s, "MODEM WDOG BITE");
continue;
+ case ICNSS_SHUTDOWN_DONE:
+ seq_puts(s, "SHUTDOWN DONE");
+ continue;
}
seq_printf(s, "UNKNOWN-%d", i);