msm: wcnss: Ignore clearing of SMSM_RESET bit
Ignore the 1->0 state change for the WCNSS SMSM_RESET
bit.
SMSM will notify registered state callbacks for both
0->1 and 1->0 bit notifictions. For subsystem restart,
only the 0->1 transition should be processed since the
SMSM restart handler will reset the SMSM entry as part
of the restart sequence resulting in a 1->0 notification
in the SUBSYS_AFTER_SHUTDOWN restart state.
CRs-Fixed: 340629
Change-Id: I8332cd4aee233d1938872a17c85e1e992f04c8a0
Signed-off-by: Eric Holmberg <eholmber@codeaurora.org>
diff --git a/arch/arm/mach-msm/wcnss-ssr-8960.c b/arch/arm/mach-msm/wcnss-ssr-8960.c
index 59abfe6..1bdec12 100644
--- a/arch/arm/mach-msm/wcnss-ssr-8960.c
+++ b/arch/arm/mach-msm/wcnss-ssr-8960.c
@@ -52,6 +52,9 @@
static void smsm_state_cb_hdlr(void *data, uint32_t old_state,
uint32_t new_state)
{
+ if (!(new_state & SMSM_RESET))
+ return;
+
riva_crash = true;
pr_err("%s: smsm state changed to smsm reset\n", MODULE_NAME);
@@ -60,10 +63,8 @@
MODULE_NAME);
return;
}
- if (new_state & SMSM_RESET) {
- ss_restart_inprogress = true;
- schedule_work(&riva_smsm_cb_work);
- }
+ ss_restart_inprogress = true;
+ schedule_work(&riva_smsm_cb_work);
}
static void riva_fatal_fn(struct work_struct *work)