static void debug_work_func(struct work_struct *work) { unsigned int uSensorCnt; struct ssp_data *data = container_of(work, struct ssp_data, work_debug); ssp_dbg("[SSP]: %s(%u) - Sensor state: 0x%x, RC: %u, CC: %u, DC: %u," " LC: %u, TC: %u\n", __func__, data->uIrqCnt, data->uSensorState, data->uResetCnt, data->uComFailCnt, data->uDumpCnt, data->uListEmptyCnt, data->uTimeOutCnt); switch (data->fw_dl_state) { case FW_DL_STATE_FAIL: case FW_DL_STATE_DOWNLOADING: case FW_DL_STATE_SYNC: pr_info("[SSP] : %s firmware downloading state = %d\n", __func__, data->fw_dl_state); return; } for (uSensorCnt = 0; uSensorCnt < SENSOR_MAX; uSensorCnt++) if ((atomic_read(&data->aSensorEnable) & (1 << uSensorCnt)) || data->batchLatencyBuf[uSensorCnt]) print_sensordata(data, uSensorCnt); if (((atomic_read(&data->aSensorEnable) & (1 << ACCELEROMETER_SENSOR)) && (data->batchLatencyBuf[ACCELEROMETER_SENSOR] == 0) && (data->uIrqCnt == 0) && (data->uTimeOutCnt > 0)) || (data->uListEmptyCnt > LIMIT_LIST_EMPTY_CNT) || (data->uTimeOutCnt > LIMIT_TIMEOUT_CNT)) recovery_mcu(data); data->uIrqCnt = 0; }
static void debug_work_func(struct work_struct *work) { unsigned int uSensorCnt; struct ssp_data *data = container_of(work, struct ssp_data, work_debug); ssp_infof("(%u) - Sensor state: 0x%llx, RC: %u, CC: %u DC: %u" " TC: %u", data->uIrqCnt, data->uSensorState, data->uResetCnt, data->uComFailCnt, data->uDumpCnt, data->uTimeOutCnt); switch (data->fw_dl_state) { case FW_DL_STATE_FAIL: case FW_DL_STATE_DOWNLOADING: case FW_DL_STATE_SYNC: ssp_infof("firmware downloading state = %d", data->fw_dl_state); return; } for (uSensorCnt = 0; uSensorCnt < SENSOR_MAX; uSensorCnt++) if ((atomic64_read(&data->aSensorEnable) & (1 << uSensorCnt)) || data->batchLatencyBuf[uSensorCnt]) print_sensordata(data, uSensorCnt); if (((atomic64_read(&data->aSensorEnable) & (1 << ACCELEROMETER_SENSOR)) && (data->batchLatencyBuf[ACCELEROMETER_SENSOR] == 0) && (data->uIrqCnt == 0) && (data->uTimeOutCnt > 0)) || (data->uTimeOutCnt > LIMIT_TIMEOUT_CNT)) recovery_mcu(data); data->uIrqCnt = 0; if(data->gyro_lib_state == GYRO_CALIBRATION_STATE_EVENT_OCCUR) set_gyro_cal_lib_enable(data, false); }