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; }
static int initialize_sensors(struct ssp_data *data) { int iRet; iRet = initialize_ssp_mcu(data); if (iRet < 0) goto err_init_mcu; iRet = initialize_accelerometer_sensor(data); if (iRet < 0) goto err_init_acc; iRet = initialize_gyroscope_sensor(data); if (iRet < 0) goto err_init_gyro; iRet = initialize_magnetic_sensor(data); if (iRet < 0) goto err_init_mag; iRet = initialize_barometer_sensor(data); if (iRet < 0) goto err_init_baro; iRet = initialize_proximity_sensor(data); if (iRet < 0) goto err_init_prox; iRet = initialize_light_sensor(data); if (iRet < 0) goto err_init_light; iRet = initialize_gesture_sensor(data); if (iRet < 0) goto err_init_ges; iRet = initialize_temphumidity_sensor(data); if (iRet < 0) goto err_init_th; return SUCCESS; err_init_th: remove_gesture_sensor(data); err_init_ges: remove_light_sensor(data); err_init_light: remove_proximity_sensor(data); err_init_prox: remove_barometer_sensor(data); err_init_baro: remove_magnetic_sensor(data); err_init_mag: remove_gyroscope_sensor(data); err_init_gyro: remove_accelerometer_sensor(data); err_init_acc: remove_ssp_mcu(data); err_init_mcu: return ERROR; }
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; }