]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
iio: cros_ec: Add sign vector in core for backward compatibility
authorGwendal Grignou <gwendal@chromium.org>
Mon, 15 Jul 2019 23:14:51 +0000 (16:14 -0700)
committerJonathan Cameron <Jonathan.Cameron@huawei.com>
Sat, 27 Jul 2019 22:05:25 +0000 (23:05 +0100)
To allow cros_ec iio core library to be used with legacy device, add a
vector to rotate sensor data if necessary: legacy devices are not
reporting data in HTML5/Android sensor referential.

Check the data is not rotated on recent chromebooks that use the HTML5
standard to present sensor data.

Signed-off-by: Gwendal Grignou <gwendal@chromium.org>
Reviewed-by: Douglas Anderson <dianders@chromium.org>
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c
include/linux/iio/common/cros_ec_sensors_core.h

index d02660b1f0fe8547ec95bdeb36ec3e066a770422..3b491cf7be95d2477847f1a4b080dde8958ba9ba 100644 (file)
@@ -101,6 +101,9 @@ int cros_ec_sensors_core_init(struct platform_device *pdev,
                }
                state->type = state->resp->info.type;
                state->loc = state->resp->info.location;
+
+               /* Set sign vector, only used for backward compatibility. */
+               memset(state->sign, 1, CROS_EC_SENSOR_MAX_AXIS);
        }
 
        return 0;
@@ -303,6 +306,7 @@ static int cros_ec_sensors_read_data_unsafe(struct iio_dev *indio_dev,
                if (ret < 0)
                        return ret;
 
+               *data *= st->sign[i];
                data++;
        }
 
index bb03a252bd042f280cff419f108e775a29685899..6f13c73bac3d812b9762ac6f3f71a1a7bc64f713 100644 (file)
@@ -66,7 +66,7 @@ struct cros_ec_sensors_core_state {
                s16 offset;
                u16 scale;
        } calib[CROS_EC_SENSOR_MAX_AXIS];
-
+       s8 sign[CROS_EC_SENSOR_MAX_AXIS];
        u8 samples[CROS_EC_SAMPLE_SIZE];
 
        int (*read_ec_sensors_data)(struct iio_dev *indio_dev,