aboutsummaryrefslogtreecommitdiff
path: root/drivers/misc/shrm/shrm_protocol.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/misc/shrm/shrm_protocol.c')
-rw-r--r--drivers/misc/shrm/shrm_protocol.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/drivers/misc/shrm/shrm_protocol.c b/drivers/misc/shrm/shrm_protocol.c
index a493216b8fb..03374eb9542 100644
--- a/drivers/misc/shrm/shrm_protocol.c
+++ b/drivers/misc/shrm/shrm_protocol.c
@@ -56,6 +56,7 @@ static enum hrtimer_restart callback(struct hrtimer *timer)
static void shrm_cawake_req_callback(u8);
+static void shrm_modem_reset_req_callback(void);
void shm_ca_wake_req_tasklet(unsigned long tasklet_data)
{
@@ -267,12 +268,21 @@ void shm_protocol_init(received_msg_handler common_rx_handler,
/* register callback with PRCMU for ca_wake_req */
prcmu_set_callback_cawakereq(&shrm_cawake_req_callback);
+ /* register callback with PRCMU for ca_wake_req */
+ prcmu_set_callback_modem_reset_request(&shrm_modem_reset_req_callback);
+
/* check if there is any initial pending ca_wake_req */
if (prcmu_is_ca_wake_req_pending())
shrm_cawake_req_callback(1);
}
+void shrm_modem_reset_req_callback(void)
+{
+ /* Call the PRCMU reset API */
+ prcmu_system_reset();
+}
+
void shrm_cawake_req_callback(u8 ca_wake_state)
{
if (ca_wake_state) {