diff options
Diffstat (limited to 'drivers/sensorhub/ssp_sysfs.c')
-rw-r--r-- | drivers/sensorhub/ssp_sysfs.c | 41 |
1 files changed, 21 insertions, 20 deletions
diff --git a/drivers/sensorhub/ssp_sysfs.c b/drivers/sensorhub/ssp_sysfs.c index 0ce5ff9..1bc7f17 100644 --- a/drivers/sensorhub/ssp_sysfs.c +++ b/drivers/sensorhub/ssp_sysfs.c @@ -103,7 +103,7 @@ static void change_sensor_delay(struct ssp_data *data, break; default: - data->aiCheckStatus[iSensorType] = ADD_SENSOR_STATE; + break; } } @@ -133,20 +133,7 @@ static int ssp_remove_sensor(struct ssp_data *data, 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); - } - return 0; - } else if (uChangedSensor == ORIENTATION_SENSOR) { + if (uChangedSensor == ORIENTATION_SENSOR) { if (!(atomic_read(&data->aSensorEnable) & (1 << ACCELEROMETER_SENSOR))) { uChangedSensor = ACCELEROMETER_SENSOR; @@ -200,6 +187,7 @@ static ssize_t set_sensors_enable(struct device *dev, int64_t dTemp; unsigned int uNewEnable = 0, uChangedSensor = 0; struct ssp_data *data = dev_get_drvdata(dev); + int iRet; if (strict_strtoll(buf, 10, &dTemp) < 0) return -1; @@ -215,11 +203,24 @@ static ssize_t set_sensors_enable(struct device *dev, if ((atomic_read(&data->aSensorEnable) & (1 << uChangedSensor)) != (uNewEnable & (1 << uChangedSensor))) { - if (uNewEnable & (1 << uChangedSensor)) - ssp_add_sensor(data, uChangedSensor); - else - ssp_remove_sensor(data, uChangedSensor, - uNewEnable); + if (!(uNewEnable & (1 << uChangedSensor))) + ssp_remove_sensor(data, uChangedSensor, + uNewEnable); /* disable */ + else { /* Change to ADD_SENSOR_STATE from KitKat */ + if (data->aiCheckStatus[uChangedSensor] == INITIALIZATION_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); + } + } + data->aiCheckStatus[uChangedSensor] = ADD_SENSOR_STATE; + } break; } |