void sync_sensor_state(struct ssp_data *data) { unsigned char uBuf[2] = {0,}; unsigned int uSensorCnt; int iRet = 0; proximity_open_calibration(data); iRet = set_hw_offset(data); if (iRet < 0) { pr_err("[SSP]: %s - set_hw_offset failed\n", __func__); } udelay(10); for (uSensorCnt = 0; uSensorCnt < (SENSOR_MAX - 1); uSensorCnt++) { if (atomic_read(&data->aSensorEnable) & (1 << uSensorCnt)) { uBuf[1] = (u8)get_msdelay(data->adDelayBuf[uSensorCnt]); uBuf[0] = (u8)get_delay_cmd(uBuf[1]); send_instruction(data, ADD_SENSOR, uSensorCnt, uBuf, 2); udelay(10); } } if (data->bProximityRawEnabled == true) { uBuf[0] = 1; uBuf[1] = 20; send_instruction(data, ADD_SENSOR, PROXIMITY_RAW, uBuf, 2); } }
void sync_sensor_state(struct ssp_data *data) { unsigned char uBuf[9] = {0,}; unsigned int uSensorCnt; int iRet = 0; #ifdef CONFIG_SENSORS_SSP_YAS532 iRet = set_hw_offset(data); if (iRet < 0) { pr_err("[SSP]: %s - set_hw_offset failed\n", __func__); } #endif iRet = set_gyro_cal(data); if (iRet < 0) { pr_err("[SSP]: %s - set_gyro_cal failed\n", __func__); } iRet = set_accel_cal(data); if (iRet < 0) { pr_err("[SSP]: %s - set_accel_cal failed\n", __func__); } udelay(10); for (uSensorCnt = 0; uSensorCnt < SENSOR_MAX; uSensorCnt++) { if (atomic_read(&data->aSensorEnable) & (1 << uSensorCnt)) { s32 dMsDelay = get_msdelay(data->adDelayBuf[uSensorCnt]); memcpy(&uBuf[0], &dMsDelay, 4); memcpy(&uBuf[4], &data->batchLatencyBuf[uSensorCnt], 4); uBuf[8] = data->batchOptBuf[uSensorCnt]; send_instruction(data, ADD_SENSOR, uSensorCnt, uBuf, 9); udelay(10); } } if (data->bProximityRawEnabled == true) { s32 dMsDelay = 20; memcpy(&uBuf[0], &dMsDelay, 4); send_instruction(data, ADD_SENSOR, PROXIMITY_RAW, uBuf, 4); } set_proximity_threshold(data, data->uProxHiThresh,data->uProxLoThresh); #if SSP_SEC_DEBUG data->bMcuDumpMode = sec_debug_is_enabled(); iRet = ssp_send_cmd(data, MSG2SSP_AP_MCU_SET_DUMPMODE,data->bMcuDumpMode); if (iRet < 0) { pr_err("[SSP]: %s - MSG2SSP_AP_MCU_SET_DUMPMODE failed\n", __func__); } #endif }
void sync_sensor_state(struct ssp_data *data) { unsigned char uBuf[2] = {0,}; unsigned int uSensorCnt; int iRet = 0; iRet = set_hw_offset(data); if (iRet < 0) { pr_err("[SSP]: %s - set_hw_offset failed\n", __func__); } iRet = set_gyro_cal(data); if (iRet < 0) { pr_err("[SSP]: %s - set_gyro_cal failed\n", __func__); } iRet = set_accel_cal(data); if (iRet < 0) { pr_err("[SSP]: %s - set_accel_cal failed\n", __func__); } udelay(10); for (uSensorCnt = 0; uSensorCnt < (SENSOR_MAX - 1); uSensorCnt++) { if (atomic_read(&data->aSensorEnable) & (1 << uSensorCnt)) { uBuf[1] = (u8)get_msdelay(data->adDelayBuf[uSensorCnt]); uBuf[0] = (u8)get_delay_cmd(uBuf[1]); send_instruction(data, ADD_SENSOR, uSensorCnt, uBuf, 2); udelay(10); } } if (data->bProximityRawEnabled == true) { uBuf[0] = 1; uBuf[1] = 20; send_instruction(data, ADD_SENSOR, PROXIMITY_RAW, uBuf, 2); } set_proximity_threshold(data, data->uProxHiThresh,data->uProxLoThresh); data->bMcuDumpMode = sec_debug_is_enabled(); iRet = ssp_send_cmd(data, MSG2SSP_AP_MCU_SET_DUMPMODE,data->bMcuDumpMode); if (iRet < 0) { pr_err("[SSP]: %s - MSG2SSP_AP_MCU_SET_DUMPMODE failed\n", __func__); } }
static int ssp_remove_sensor(struct ssp_data *data, unsigned int uChangedSensor, unsigned int uNewEnable) { u8 uBuf[2]; int iRet = 0; int64_t dSensorDelay = data->adDelayBuf[uChangedSensor]; ssp_dbg("[SSP]: %s - remove sensor = %d, current state = %d\n", __func__, (1 << uChangedSensor), uNewEnable); data->adDelayBuf[uChangedSensor] = DEFUALT_POLLING_DELAY; if (data->aiCheckStatus[uChangedSensor] == INITIALIZATION_STATE) { data->aiCheckStatus[uChangedSensor] = NO_SENSOR_STATE; if (uChangedSensor == ACCELEROMETER_SENSOR) accel_open_calibration(data); else if (uChangedSensor == GYROSCOPE_SENSOR) gyro_open_calibration(data); else if (uChangedSensor == PRESSURE_SENSOR) pressure_open_calibration(data); else if (uChangedSensor == PROXIMITY_SENSOR) { proximity_open_lcd_ldi(data); proximity_open_calibration(data); } else if (uChangedSensor == GEOMAGNETIC_SENSOR) { iRet = mag_open_hwoffset(data); if (iRet < 0) pr_err("[SSP]: %s - mag_open_hw_offset" " failed, %d\n", __func__, iRet); iRet = set_hw_offset(data); if (iRet < 0) { pr_err("[SSP]: %s - set_hw_offset failed\n", __func__); } } return 0; } else if (uChangedSensor == ORIENTATION_SENSOR) { if (!(atomic_read(&data->aSensorEnable) & (1 << ACCELEROMETER_SENSOR))) { uChangedSensor = ACCELEROMETER_SENSOR; } else { change_sensor_delay(data, ACCELEROMETER_SENSOR, data->adDelayBuf[ACCELEROMETER_SENSOR]); return 0; } } else if (uChangedSensor == ACCELEROMETER_SENSOR) { if (atomic_read(&data->aSensorEnable) & (1 << ORIENTATION_SENSOR)) { change_sensor_delay(data, ORIENTATION_SENSOR, data->adDelayBuf[ORIENTATION_SENSOR]); return 0; } } else if (uChangedSensor == GEOMAGNETIC_SENSOR) { if (mag_store_hwoffset(data)) pr_err("mag_store_hwoffset success\n"); } if (atomic_read(&data->aSensorEnable) & (1 << uChangedSensor)) { uBuf[1] = (u8)get_msdelay(dSensorDelay); uBuf[0] = (u8)get_delay_cmd(uBuf[1]); send_instruction(data, REMOVE_SENSOR, uChangedSensor, uBuf, 2); } data->aiCheckStatus[uChangedSensor] = NO_SENSOR_STATE; return 0; }