summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drivers/modem/shrm/shrm_protocol.c25
1 files changed, 25 insertions, 0 deletions
diff --git a/drivers/modem/shrm/shrm_protocol.c b/drivers/modem/shrm/shrm_protocol.c
index 19644ca8742..82fed247969 100644
--- a/drivers/modem/shrm/shrm_protocol.c
+++ b/drivers/modem/shrm/shrm_protocol.c
@@ -450,6 +450,12 @@ void shm_ca_sleep_req_work(struct kthread_work *work)
shrm_common_rx_state = SHRM_IDLE;
shrm_audio_rx_state = SHRM_IDLE;
+ if (check_modem_in_reset()) {
+ dev_err(shm_dev->dev, "%s:Modem state reset or unknown\n",
+ __func__);
+ return;
+ }
+
writel((1<<GOP_CA_WAKE_ACK_BIT),
shm_dev->intr_base + GOP_SET_REGISTER_BASE);
@@ -478,6 +484,13 @@ void shm_ca_wake_req_work(struct kthread_work *work)
dev_info(shrm->dev, "Initiating a modem reset\n");
prcmu_modem_reset();
}
+
+ if (check_modem_in_reset()) {
+ dev_err(shrm->dev, "%s:Modem state reset or unknown\n",
+ __func__);
+ return;
+ }
+
writel((1<<GOP_CA_WAKE_ACK_BIT),
shm_dev->intr_base + GOP_SET_REGISTER_BASE);
}
@@ -625,6 +638,12 @@ static void send_ac_msg_pend_notify_0_work(struct kthread_work *work)
prcmu_modem_reset();
}
+ if (check_modem_in_reset()) {
+ dev_err(shrm->dev, "%s:Modem state reset or unknown.\n",
+ __func__);
+ return;
+ }
+
/* Trigger AcMsgPendingNotification to CMU */
writel((1<<GOP_COMMON_AC_MSG_PENDING_NOTIFICATION_BIT),
shrm->intr_base + GOP_SET_REGISTER_BASE);
@@ -655,6 +674,12 @@ static void send_ac_msg_pend_notify_1_work(struct kthread_work *work)
prcmu_modem_reset();
}
+ if (check_modem_in_reset()) {
+ dev_err(shrm->dev, "%s:Modem state reset or unknown.\n",
+ __func__);
+ return;
+ }
+
/* Trigger AcMsgPendingNotification to CMU */
writel((1<<GOP_AUDIO_AC_MSG_PENDING_NOTIFICATION_BIT),
shrm->intr_base + GOP_SET_REGISTER_BASE);