int initialize_mcu(struct ssp_data *data) { int iRet = 0; clean_pending_list(data); iRet = get_chipid(data); pr_info("[SSP] MCU device ID = %d, reading ID = %d\n", DEVICE_ID, iRet); if (iRet != DEVICE_ID) { if (iRet < 0) { pr_err("[SSP]: %s - MCU is not working : 0x%x\n", __func__, iRet); } else { pr_err("[SSP]: %s - MCU identification failed\n", __func__); iRet = -ENODEV; } goto out; } iRet = set_sensor_position(data); if (iRet < 0) { pr_err("[SSP]: %s - set_sensor_position failed\n", __func__); goto out; } #ifdef CONFIG_SENSORS_MULTIPLE_GLASS_TYPE iRet = set_glass_type(data); if (iRet < 0) { pr_err("[SSP]: %s - set_sensor_position failed\n", __func__); goto out; } #endif data->uSensorState = get_sensor_scanning_info(data); if (data->uSensorState == 0) { pr_err("[SSP]: %s - get_sensor_scanning_info failed\n", __func__); iRet = ERROR; goto out; } iRet = initialize_magnetic_sensor(data); if (iRet < 0) pr_err("[SSP]: %s - initialize magnetic sensor failed\n", __func__); data->uCurFirmRev = get_firmware_rev(data); pr_info("[SSP] MCU Firm Rev : New = %8u\n", data->uCurFirmRev); // hoi: il dan mak a #ifndef CONFIG_SENSORS_SSP_BBD iRet = ssp_send_cmd(data, MSG2SSP_AP_MCU_DUMP_CHECK, 0); #endif out: return iRet; }
int initialize_mcu(struct ssp_data *data) { int iRet = 0; clean_pending_list(data); iRet = get_chipid(data); ssp_info("MCU device ID = %d, reading ID = %d", DEVICE_ID, iRet); if (iRet != DEVICE_ID) { if (iRet < 0) { ssp_errf("MCU is not working : 0x%x", iRet); } else { ssp_errf("MCU identification failed"); iRet = -ENODEV; } goto out; } iRet = set_sensor_position(data); if (iRet < 0) { ssp_errf("set_sensor_position failed"); goto out; } #ifdef CONFIG_SENSORS_MULTIPLE_GLASS_TYPE iRet = set_glass_type(data); if (iRet < 0) { pr_err("[SSP]: %s - set_sensor_position failed\n", __func__); goto out; } #endif data->uSensorState = get_sensor_scanning_info(data); if (data->uSensorState == 0) { ssp_errf("get_sensor_scanning_info failed"); iRet = ERROR; goto out; } iRet = initialize_magnetic_sensor(data); if (iRet < 0) ssp_errf("initialize magnetic sensor failed"); data->uCurFirmRev = get_firmware_rev(data); ssp_info("MCU Firm Rev : New = %8u", data->uCurFirmRev); out: return iRet; }
int initialize_mcu(struct ssp_data *data) { int iRet = 0; iRet = get_chipid(data); pr_info("[SSP] MCU device ID = %d, reading ID = %d\n", DEVICE_ID, iRet); if (iRet != DEVICE_ID) { if (iRet < 0) { pr_err("[SSP]: %s - MCU is not working : 0x%x\n", __func__, iRet); } else { pr_err("[SSP]: %s - MCU identification failed\n", __func__); iRet = -ENODEV; } goto out; } iRet = set_sensor_position(data); if (iRet < 0) { pr_err("[SSP]: %s - set_sensor_position failed\n", __func__); goto out; } data->uSensorState = get_sensor_scanning_info(data); if (data->uSensorState == 0) { pr_err("[SSP]: %s - get_sensor_scanning_info failed\n", __func__); iRet = ERROR; goto out; } iRet = ssp_send_cmd(data, MSG2SSP_AP_MCU_SET_DUMPMODE, sec_debug_is_enabled()); if (iRet < 0) { pr_err("[SSP]: %s - set_mcu_dump_mode failed\n", __func__); goto out; } #if defined (CONFIG_SENSORS_SSP_YAS532) iRet = set_static_matrix(data); if (iRet < 0) pr_err("[SSP]: %s - yas set static matrix failed\n", __func__); #endif iRet = SUCCESS; out: return iRet; }
int initialize_mcu(struct ssp_data *data) { int iRet = 0; clean_pending_list(data); iRet = get_chipid(data); pr_info("[SSP] MCU device ID = %d, reading ID = %d\n", DEVICE_ID, iRet); if (iRet != DEVICE_ID) { if (iRet < 0) { pr_err("[SSP]: %s - MCU is not working : 0x%x\n", __func__, iRet); } else { pr_err("[SSP]: %s - MCU identification failed\n", __func__); iRet = -ENODEV; } goto out; } iRet = set_sensor_position(data); if (iRet < 0) { pr_err("[SSP]: %s - set_sensor_position failed\n", __func__); goto out; } iRet = get_fuserom_data(data); if (iRet < 0) pr_err("[SSP]: %s - get_fuserom_data failed\n", __func__); data->uSensorState = get_sensor_scanning_info(data); if (data->uSensorState == 0) { pr_err("[SSP]: %s - get_sensor_scanning_info failed\n", __func__); iRet = ERROR; goto out; } data->uCurFirmRev = get_firmware_rev(data); pr_info("[SSP] MCU Firm Rev : New = %8u\n", data->uCurFirmRev); iRet = ssp_send_cmd(data, MSG2SSP_AP_MCU_DUMP_CHECK, 0); out: return iRet; }
int initialize_mcu(struct ssp_data *data) { int iRet = 0; iRet = get_chipid(data); pr_info("[SSP] MCU device ID = %d, reading ID = %d\n", DEVICE_ID, iRet); if (iRet != DEVICE_ID) { if (iRet < 0) { pr_err("[SSP]: %s - MCU is not working : 0x%x\n", __func__, iRet); } else { pr_err("[SSP]: %s - MCU identification failed\n", __func__); iRet = -ENODEV; } goto out; } iRet = set_sensor_position(data); if (iRet < 0) { pr_err("[SSP]: %s - set_sensor_position failed\n", __func__); goto out; } iRet = set_magnetic_static_matrix(data); if (iRet < 0) pr_err("[SSP] %s - set_magnetic_static_matrix failed\n", __func__); iRet = get_fuserom_data(data); if (iRet < 0) pr_err("[SSP]: %s - get_fuserom_data failed\n", __func__); data->uSensorState = get_sensor_scanning_info(data); if (data->uSensorState == 0) { pr_err("[SSP]: %s - get_sensor_scanning_info failed\n", __func__); iRet = ERROR; goto out; } iRet = SUCCESS; out: return iRet; }
int initialize_mcu(struct ssp_data *data) { int iRet = 0; iRet = get_chipid(data); pr_info("[SSP] MPU device ID = %d, reading ID = %d\n", DEVICE_ID, iRet); if (iRet != DEVICE_ID) { if (iRet < 0) pr_err("[SSP]: %s - i2c for reading chip id failed\n", __func__); else { pr_err("[SSP]: %s - Device identification failed\n", __func__); iRet = -ENODEV; } return iRet; } iRet = set_sensor_position(data); if (iRet < 0) { pr_err("[SSP]: %s - set_sensor_position failed\n", __func__); return iRet; } iRet = get_fuserom_data(data); if (iRet < 0) { pr_err("[SSP]: %s - get_fuserom_data failed\n", __func__); return iRet; } data->uAliveSensorDebug = get_sensor_scanning_info(data); if (data->uAliveSensorDebug == 0) { pr_err("[SSP]: %s - get_sensor_scanning_info failed\n", __func__); return FAIL; } return SUCCESS; }
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, MS: %u Santi: %u Dump: %u\n", __func__, data->uIrqCnt, data->uSensorState, data->uResetCnt, data->uMissSensorCnt,data->uSanityCnt,data->uDumpCnt); if (data->fw_dl_state >= FW_DL_STATE_DOWNLOADING && data->fw_dl_state < FW_DL_STATE_DONE) { pr_info("[SSP] : %s firmware downloading state = %d\n", __func__, data->fw_dl_state); return; } else if (data->fw_dl_state == FW_DL_STATE_FAIL) { pr_err("[SSP] : %s firmware download failed = %d\n", __func__, data->fw_dl_state); return; } if(sanity_check(data)>0) data->uSanityCnt++; if (set_sensor_position(data) < 0) { pr_err("[SSP]: %s :set_sensor_position delayed \n", __func__); } for (uSensorCnt = 0; uSensorCnt < (SENSOR_MAX); uSensorCnt++) if ((atomic_read(&data->aSensorEnable) & (1 << uSensorCnt)) || data->batchLatencyBuf[uSensorCnt]) print_sensordata(data, uSensorCnt); if (((data->uSsdFailCnt >= LIMIT_SSD_FAIL_CNT) || (data->uInstFailCnt >= LIMIT_INSTRUCTION_FAIL_CNT) || (data->uIrqFailCnt >= LIMIT_IRQ_FAIL_CNT) || ((data->uTimeOutCnt + data->uBusyCnt) > LIMIT_TIMEOUT_CNT)) && (data->bSspShutdown == false)) { if (data->uResetCnt < LIMIT_RESET_CNT) { wake_lock(&data->ssp_wake_lock); pr_info("[SSP] : %s - uSsdFailCnt(%u), uInstFailCnt(%u),"\ "uIrqFailCnt(%u), uTimeOutCnt(%u), uBusyCnt(%u), pending(%u)\n", __func__, data->uSsdFailCnt, data->uInstFailCnt, data->uIrqFailCnt, data->uTimeOutCnt, data->uBusyCnt, !list_empty(&data->pending_list)); reset_mcu(data); data->uResetCnt++; wake_unlock(&data->ssp_wake_lock); } else { pr_info("[SSP] : %s - data->uResetCnt == LIMIT_RESET_CNT\n", __func__); ssp_enable(data, false); } data->uSsdFailCnt = 0; data->uInstFailCnt = 0; data->uTimeOutCnt = 0; data->uBusyCnt = 0; data->uIrqFailCnt = 0; } data->uIrqCnt = 0; }