diff options
Diffstat (limited to 'drivers/modem/shrm/shrm_protocol.c')
-rw-r--r-- | drivers/modem/shrm/shrm_protocol.c | 25 |
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); |