/* simply declare this function as extern at test point, and call it */ void mdm_force_fatal(void) { pr_info("%s: Reseting the mdm due to AP request\n", __func__); force_dump = 1; notify_modem_fatal(); subsystem_restart(EXTERNAL_MODEM); }
/* simply declare this function as extern at test point, and call it */ void mdm_force_fatal(void) { pr_info("%s: Reseting the mdm due to AP request\n", __func__); force_dump = 1; if (in_irq()) queue_work(mdm_queue, &mdm_fatal_work); else { notify_modem_fatal(); subsystem_restart(EXTERNAL_MODEM); } }
static void mdm2ap_status_check(struct work_struct *work) { /* * If the mdm modem did not pull the MDM2AP_STATUS gpio * high then call subsystem_restart. */ if (gpio_get_value(mdm_drv->mdm2ap_status_gpio) == 0) { pr_err("%s: MDM2AP_STATUS gpio did not go high\n", __func__); mdm_drv->mdm_ready = 0; notify_modem_fatal(); subsystem_restart(EXTERNAL_MODEM); } }
static void mdm_status_fn(struct work_struct *work) { int value = gpio_get_value(mdm_drv->mdm2ap_status_gpio); if (!mdm_drv->mdm_ready) return; mdm_drv->ops->status_cb(mdm_drv, value); pr_err("%s: status:%d\n", __func__, value); if ((value == 0)) { pr_info("%s: unexpected reset external modem\n", __func__); notify_modem_fatal(); subsystem_restart(EXTERNAL_MODEM); } else if (value == 1) { pr_info("%s: status = 1: mdm is now ready\n", __func__); } }
static void mdm_fatal_fn(struct work_struct *work) { pr_info("%s: Reseting the mdm due to an errfatal\n", __func__); notify_modem_fatal(); subsystem_restart(EXTERNAL_MODEM); }