]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
iio: cros_ec: set calibscale for 3d MEMS to unit vector
authorGwendal Grignou <gwendal@chromium.org>
Mon, 26 Aug 2019 23:02:58 +0000 (16:02 -0700)
committerJonathan Cameron <Jonathan.Cameron@huawei.com>
Tue, 3 Sep 2019 17:55:51 +0000 (18:55 +0100)
By default, set the calibscale vector to unit vector.
When calibrating one axis, the other axis calibrations  are sent as well.
If left to 0, sensor data from uncalibrated axis are zero'ed out until
all axis are calibrated.

Fixes: ed1f2e85da79 ("iio: cros_ec: Add calibscale for 3d MEMS ")
Signed-off-by: Gwendal Grignou <gwendal@chromium.org>
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c

index fd833295bb173d96d9aa75d9f8369c6e205c1e65..d44ae126f45782189ba1c46fa5801dca8781702c 100644 (file)
@@ -90,7 +90,7 @@ int cros_ec_sensors_core_init(struct platform_device *pdev,
        struct cros_ec_dev *ec = dev_get_drvdata(pdev->dev.parent);
        struct cros_ec_sensor_platform *sensor_platform = dev_get_platdata(dev);
        u32 ver_mask;
-       int ret;
+       int ret, i;
 
        platform_set_drvdata(pdev, indio_dev);
 
@@ -136,6 +136,9 @@ int cros_ec_sensors_core_init(struct platform_device *pdev,
                /* Set sign vector, only used for backward compatibility. */
                memset(state->sign, 1, CROS_EC_SENSOR_MAX_AXIS);
 
+               for (i = CROS_EC_SENSOR_X; i < CROS_EC_SENSOR_MAX_AXIS; i++)
+                       state->calib[i].scale = MOTION_SENSE_DEFAULT_SCALE;
+
                /* 0 is a correct value used to stop the device */
                state->frequencies[0] = 0;
                if (state->msg->version < 3) {