Loading drivers/esoc/esoc-mdm-4x.c +3 −3 Original line number Diff line number Diff line Loading @@ -389,7 +389,7 @@ static void mdm_get_restart_reason(struct work_struct *work) mdm->get_restart_reason = false; } void mdm_wait_for_status_low(struct mdm_ctrl *mdm) void mdm_wait_for_status_low(struct mdm_ctrl *mdm, bool atomic) { uint64_t timeout; uint64_t now; Loading @@ -410,7 +410,7 @@ void mdm_wait_for_status_low(struct mdm_ctrl *mdm) esoc_mdm_log("MDM2AP_STATUS didn't go LOW. Warm-resetting modem\n"); dev_err(mdm->dev, "MDM2AP status did not go low\n"); mdm_toggle_soft_reset(mdm, true); mdm_toggle_soft_reset(mdm, atomic); } static void mdm_notify(enum esoc_notify notify, struct esoc_clink *esoc) Loading Loading @@ -476,7 +476,7 @@ static void mdm_notify(enum esoc_notify notify, struct esoc_clink *esoc) gpio_set_value(MDM_GPIO(mdm, AP2MDM_ERRFATAL), 1); if (esoc->primary) break; mdm_wait_for_status_low(mdm); mdm_wait_for_status_low(mdm, true); break; case ESOC_PRIMARY_REBOOT: mdm_disable_irqs(mdm); Loading drivers/esoc/esoc-mdm-drv.c +5 −4 Original line number Diff line number Diff line Loading @@ -86,7 +86,6 @@ static void mdm_handle_clink_evt(enum esoc_evt evt, struct esoc_eng *eng) { struct mdm_drv *mdm_drv = to_mdm_drv(eng); struct mdm_ctrl *mdm; bool unexpected_state = false; switch (evt) { Loading Loading @@ -131,9 +130,6 @@ static void mdm_handle_clink_evt(enum esoc_evt evt, if (mdm_drv->mode == CRASH || mdm_drv->mode != RUN) return; mdm_drv->mode = CRASH; mdm = get_esoc_clink_data(mdm_drv->esoc_clink); mdm_wait_for_status_low(mdm); esoc_mdm_log("Starting SSR work\n"); queue_work(mdm_drv->mdm_queue, &mdm_drv->ssr_work); break; case ESOC_REQ_ENG_ON: Loading @@ -149,6 +145,11 @@ static void mdm_handle_clink_evt(enum esoc_evt evt, static void mdm_ssr_fn(struct work_struct *work) { struct mdm_drv *mdm_drv = container_of(work, struct mdm_drv, ssr_work); struct mdm_ctrl *mdm = get_esoc_clink_data(mdm_drv->esoc_clink); mdm_wait_for_status_low(mdm, false); esoc_mdm_log("Starting SSR work\n"); /* * If restarting esoc fails, the SSR framework triggers a kernel panic Loading drivers/esoc/esoc-mdm.h +1 −1 Original line number Diff line number Diff line Loading @@ -119,7 +119,7 @@ struct mdm_ops { }; void mdm_disable_irqs(struct mdm_ctrl *mdm); void mdm_wait_for_status_low(struct mdm_ctrl *mdm); void mdm_wait_for_status_low(struct mdm_ctrl *mdm, bool atomic); static inline int mdm_toggle_soft_reset(struct mdm_ctrl *mdm, bool atomic) { Loading Loading
drivers/esoc/esoc-mdm-4x.c +3 −3 Original line number Diff line number Diff line Loading @@ -389,7 +389,7 @@ static void mdm_get_restart_reason(struct work_struct *work) mdm->get_restart_reason = false; } void mdm_wait_for_status_low(struct mdm_ctrl *mdm) void mdm_wait_for_status_low(struct mdm_ctrl *mdm, bool atomic) { uint64_t timeout; uint64_t now; Loading @@ -410,7 +410,7 @@ void mdm_wait_for_status_low(struct mdm_ctrl *mdm) esoc_mdm_log("MDM2AP_STATUS didn't go LOW. Warm-resetting modem\n"); dev_err(mdm->dev, "MDM2AP status did not go low\n"); mdm_toggle_soft_reset(mdm, true); mdm_toggle_soft_reset(mdm, atomic); } static void mdm_notify(enum esoc_notify notify, struct esoc_clink *esoc) Loading Loading @@ -476,7 +476,7 @@ static void mdm_notify(enum esoc_notify notify, struct esoc_clink *esoc) gpio_set_value(MDM_GPIO(mdm, AP2MDM_ERRFATAL), 1); if (esoc->primary) break; mdm_wait_for_status_low(mdm); mdm_wait_for_status_low(mdm, true); break; case ESOC_PRIMARY_REBOOT: mdm_disable_irqs(mdm); Loading
drivers/esoc/esoc-mdm-drv.c +5 −4 Original line number Diff line number Diff line Loading @@ -86,7 +86,6 @@ static void mdm_handle_clink_evt(enum esoc_evt evt, struct esoc_eng *eng) { struct mdm_drv *mdm_drv = to_mdm_drv(eng); struct mdm_ctrl *mdm; bool unexpected_state = false; switch (evt) { Loading Loading @@ -131,9 +130,6 @@ static void mdm_handle_clink_evt(enum esoc_evt evt, if (mdm_drv->mode == CRASH || mdm_drv->mode != RUN) return; mdm_drv->mode = CRASH; mdm = get_esoc_clink_data(mdm_drv->esoc_clink); mdm_wait_for_status_low(mdm); esoc_mdm_log("Starting SSR work\n"); queue_work(mdm_drv->mdm_queue, &mdm_drv->ssr_work); break; case ESOC_REQ_ENG_ON: Loading @@ -149,6 +145,11 @@ static void mdm_handle_clink_evt(enum esoc_evt evt, static void mdm_ssr_fn(struct work_struct *work) { struct mdm_drv *mdm_drv = container_of(work, struct mdm_drv, ssr_work); struct mdm_ctrl *mdm = get_esoc_clink_data(mdm_drv->esoc_clink); mdm_wait_for_status_low(mdm, false); esoc_mdm_log("Starting SSR work\n"); /* * If restarting esoc fails, the SSR framework triggers a kernel panic Loading
drivers/esoc/esoc-mdm.h +1 −1 Original line number Diff line number Diff line Loading @@ -119,7 +119,7 @@ struct mdm_ops { }; void mdm_disable_irqs(struct mdm_ctrl *mdm); void mdm_wait_for_status_low(struct mdm_ctrl *mdm); void mdm_wait_for_status_low(struct mdm_ctrl *mdm, bool atomic); static inline int mdm_toggle_soft_reset(struct mdm_ctrl *mdm, bool atomic) { Loading