]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
iio: imu: st_lsm6dsx: wait for settling time in st_lsm6dsx_read_oneshot
authorLorenzo Bianconi <lorenzo@kernel.org>
Sat, 5 Feb 2022 21:57:42 +0000 (22:57 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 2 Mar 2022 10:51:13 +0000 (11:51 +0100)
commit ea85bf906466191b58532bb19f4fbb4591f0a77e upstream.

We need to wait for sensor settling time (~ 3/ODR) before reading data
in st_lsm6dsx_read_oneshot routine in order to avoid corrupted samples.

Fixes: 290a6ce11d93 ("iio: imu: add support to lsm6dsx driver")
Reported-by: Mario Tesi <mario.tesi@st.com>
Tested-by: Mario Tesi <mario.tesi@st.com>
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Link: https://lore.kernel.org/r/b41ebda5535895298716c76d939f9f165fcd2d13.1644098120.git.lorenzo@kernel.org
Cc: <Stable@vger.kernel.org>
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c

index f2cbbc756459b1cba1fefebce5208bcb6428eed1..32d9a5e30685b7b9f1cf2b44d600950433519144 100644 (file)
@@ -1374,8 +1374,12 @@ static int st_lsm6dsx_read_oneshot(struct st_lsm6dsx_sensor *sensor,
        if (err < 0)
                return err;
 
+       /*
+        * we need to wait for sensor settling time before
+        * reading data in order to avoid corrupted samples
+        */
        delay = 1000000000 / sensor->odr;
-       usleep_range(delay, 2 * delay);
+       usleep_range(3 * delay, 4 * delay);
 
        err = st_lsm6dsx_read_locked(hw, addr, &data, sizeof(data));
        if (err < 0)