static void mdm_restart_reason_fn(struct work_struct *work) { int ret, ntries = 0; char sfr_buf[RD_BUF_SIZE]; do { msleep(SFR_RETRY_INTERVAL); ret = sysmon_get_reason(SYSMON_SS_EXT_MODEM, sfr_buf, sizeof(sfr_buf)); if (ret) { /* * The sysmon device may not have been probed as yet * after the restart. */ pr_err("%s: Error retrieving mdm restart reason, ret = %d, " "%d/%d tries\n", __func__, ret, ntries + 1, SFR_MAX_RETRIES); } else { pr_err("mdm restart reason: %s\n", sfr_buf); /*++SSD_RIL@20121220: For store modem reset information*/ msr_info_list[mdm_msr_index].valid = 1; msr_info_list[mdm_msr_index].msr_time = current_kernel_time(); snprintf(msr_info_list[mdm_msr_index].modem_errmsg, RD_BUF_SIZE, "%s", sfr_buf); if(++mdm_msr_index >= MODEM_ERRMSG_LIST_LEN) { mdm_msr_index = 0; } /*--SSD_RIL@20121220*/ break; } } while (++ntries < SFR_MAX_RETRIES); }
static void mdm_restart_reason_fn(struct work_struct *work) { int ret, ntries = 0; char sfr_buf[RD_BUF_SIZE]; do { msleep(SFR_RETRY_INTERVAL); ret = sysmon_get_reason(SYSMON_SS_EXT_MODEM, sfr_buf, sizeof(sfr_buf)); if (ret) { /* * The sysmon device may not have been probed as yet * after the restart. */ pr_err("%s: Error retrieving mdm restart reason, ret = %d, " "%d/%d tries\n", __func__, ret, ntries + 1, SFR_MAX_RETRIES); } else { pr_err("mdm restart reason: %s\n", sfr_buf); #ifdef CONFIG_PANTECH_ERR_CRASH_LOGGING // MDM SSR not support #if (0) sky_reset_reason = SYS_RESET_REASON_UNKNOWN; #endif #endif break; } } while (++ntries < SFR_MAX_RETRIES); }
static void mdm_restart_reason_fn(struct work_struct *work) { int ret, ntries = 0; char sfr_buf[RD_BUF_SIZE]; do { msleep(SFR_RETRY_INTERVAL); ret = sysmon_get_reason(SYSMON_SS_EXT_MODEM, sfr_buf, sizeof(sfr_buf)); if (ret) { pr_err("%s: Error retrieving mdm restart reason, ret = %d, " "%d/%d tries\n", __func__, ret, ntries + 1, SFR_MAX_RETRIES); } else { pr_err("mdm restart reason: %s\n", sfr_buf); #ifdef CONFIG_HTC_STORE_MODEM_RESET_INFO msr_info_list[mdm_msr_index].valid = 1; msr_info_list[mdm_msr_index].msr_time = current_kernel_time(); snprintf(msr_info_list[mdm_msr_index].modem_errmsg, RD_BUF_SIZE, "%s", sfr_buf); if(++mdm_msr_index >= MODEM_ERRMSG_LIST_LEN) { mdm_msr_index = 0; } #endif break; } } while (++ntries < SFR_MAX_RETRIES); }
static void mdm_restart_reason_fn(struct work_struct *work) { int ret, ntries = 0; char sfr_buf[RD_BUF_SIZE]; do { msleep(SFR_RETRY_INTERVAL); ret = sysmon_get_reason(SYSMON_SS_EXT_MODEM, sfr_buf, sizeof(sfr_buf)); if (ret) { /* * The sysmon device may not have been probed as yet * after the restart. */ pr_err("%s: Error retrieving mdm restart reason, ret = %d, " "%d/%d tries\n", __func__, ret, ntries + 1, SFR_MAX_RETRIES); } else { // ASUS_BSP+++ Wenli "Modify for modem restart" #ifndef ASUS_SHIP_BUILD int file_handle; mm_segment_t oldfs; oldfs = get_fs(); set_fs(KERNEL_DS); file_handle = sys_open("/data/log/modem_crash.log", O_CREAT|O_WRONLY|O_SYNC|O_TRUNC, 0644); if(!IS_ERR((const void *)file_handle)) { ret = sys_write(file_handle, sfr_buf, strlen(sfr_buf)); sys_close(file_handle); } // Save reason on file_handle = sys_open("/data/log/RAMDump0/reason.log", O_CREAT|O_WRONLY|O_SYNC|O_TRUNC, 0644); if(!IS_ERR((const void *)file_handle)) { ret = sys_write(file_handle, sfr_buf, strlen(sfr_buf)); sys_close(file_handle); } set_fs(oldfs); #endif // ASUS_BSP--- Wenli "Modify for modem restart" ASUSEvtlog("SSR %s\n", sfr_buf); pr_err("mdm restart reason: %s\n", sfr_buf); break; } } while (++ntries < SFR_MAX_RETRIES); }
static void qsc_restart_reason_fn(struct work_struct *work) { int ret, ntries = 0; char sfr_buf[RD_BUF_SIZE]; do { msleep(SFR_RETRY_INTERVAL); ret = sysmon_get_reason(SYSMON_SS_EXT_MODEM, sfr_buf, sizeof(sfr_buf)); if (ret) { pr_err("%s: Error retrieving qsc restart reason, ret = %d\n", __func__, ret); } else { pr_err("qsc restart reason: %s\n", sfr_buf); break; } } while (++ntries < SFR_MAX_RETRIES); }
static void mdm_restart_reason_fn(struct work_struct *work) { int ret, ntries = 0; char sfr_buf[RD_BUF_SIZE]; #ifdef CONFIG_HTC_STORE_MODEM_RESET_INFO unsigned long flags; #endif do { msleep(SFR_RETRY_INTERVAL); #if defined(CONFIG_BUILD_EDIAG) pr_info("SYSMON is supposed to be used as char dev with specific purpose.\n"); ret = -EINVAL; #else ret = sysmon_get_reason(SYSMON_SS_EXT_MODEM, sfr_buf, sizeof(sfr_buf)); #endif if (ret) { pr_err("%s: Error retrieving mdm restart reason, ret = %d, " "%d/%d tries\n", __func__, ret, ntries + 1, SFR_MAX_RETRIES); } else { pr_err("mdm restart reason: %s\n", sfr_buf); #ifdef CONFIG_HTC_STORE_MODEM_RESET_INFO spin_lock_irqsave(&msr_info_lock, flags); msr_info_list[mdm_msr_index].valid = 1; msr_info_list[mdm_msr_index].msr_time = current_kernel_time(); snprintf(msr_info_list[mdm_msr_index].modem_errmsg, RD_BUF_SIZE, "%s", sfr_buf); if(++mdm_msr_index >= MODEM_ERRMSG_LIST_LEN) { mdm_msr_index = 0; } spin_unlock_irqrestore(&msr_info_lock, flags); #endif break; } } while (++ntries < SFR_MAX_RETRIES); }
static void mdm_get_restart_reason(struct work_struct *work) { int ret, ntries = 0; char sfr_buf[RD_BUF_SIZE]; struct mdm_ctrl *mdm = container_of(work, struct mdm_ctrl, restart_reason_work); struct device *dev = mdm->dev; do { ret = sysmon_get_reason(mdm->sysmon_subsys_id, sfr_buf, sizeof(sfr_buf)); if (!ret) { dev_err(dev, "mdm restart reason is %s\n", sfr_buf); break; } msleep(SFR_RETRY_INTERVAL); } while (++ntries < SFR_MAX_RETRIES); if (ntries == SFR_MAX_RETRIES) dev_err(dev, "%s: Error retrieving restart reason: %d\n", __func__, ret); mdm->get_restart_reason = false; }
static void mdm_restart_reason_fn(struct work_struct *work) { int ret, ntries = 0; char sfr_buf[RD_BUF_SIZE]; do { msleep(SFR_RETRY_INTERVAL); ret = sysmon_get_reason(SYSMON_SS_EXT_MODEM, sfr_buf, sizeof(sfr_buf)); if (ret) { /* * The sysmon device may not have been probed as yet * after the restart. */ pr_err("%s: Error retrieving mdm restart reason, ret = %d, " "%d/%d tries\n", __func__, ret, ntries + 1, SFR_MAX_RETRIES); } else { pr_err("mdm restart reason: %s\n", sfr_buf); break; } } while (++ntries < SFR_MAX_RETRIES); }