aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorsbrissen <sbrissen@hotmail.com>2013-12-19 15:28:13 -0500
committersbrissen <sbrissen@hotmail.com>2013-12-19 15:30:55 -0500
commitb1663250fbbcfab17bd76665e9a95876f33a50a5 (patch)
treed8520c32c29d8186423e73b8a5e133fddb190d99 /drivers
parentfab9e4c915e35338d589b04b3b9c2a9ce283e960 (diff)
downloadkernel_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.c41
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;
}