diff options
author | sbrissen <sbrissen@hotmail.com> | 2013-12-19 15:28:13 -0500 |
---|---|---|
committer | sbrissen <sbrissen@hotmail.com> | 2013-12-19 15:30:55 -0500 |
commit | b1663250fbbcfab17bd76665e9a95876f33a50a5 (patch) | |
tree | d8520c32c29d8186423e73b8a5e133fddb190d99 /drivers | |
parent | fab9e4c915e35338d589b04b3b9c2a9ce283e960 (diff) | |
download | kernel_samsung_smdk4412-b1663250fbbcfab17bd76665e9a95876f33a50a5.zip kernel_samsung_smdk4412-b1663250fbbcfab17bd76665e9a95876f33a50a5.tar.gz kernel_samsung_smdk4412-b1663250fbbcfab17bd76665e9a95876f33a50a5.tar.bz2 |
smdk4412: update ssp_sysfs from jf 4.4 drop
This fixes the need to set an initial delay in the sensor hal
in order for the sensors to enable and report data
Change-Id: I1aa639e2cc30be60d00df253a90ea9dd1a6d501f
Diffstat (limited to 'drivers')
-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; } |