On Sat, 5 Feb 2022 22:57:42 +0100 Lorenzo Bianconi <lorenzo@xxxxxxxxxx> wrote: > 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: 290a6ce11d938 ("iio: imu: add support to lsm6dsx driver") > Reported-by: Mario Tesi <mario.tesi@xxxxxx> > Tested-by: Mario Tesi <mario.tesi@xxxxxx> > Signed-off-by: Lorenzo Bianconi <lorenzo@xxxxxxxxxx> Thanks for the quick update. Applied to the fixes-togreg branch of iio.git and marked for stable. > --- > Changes since v1: > - add missing Fixes tag. > --- > drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c | 6 +++++- > 1 file changed, 5 insertions(+), 1 deletion(-) > > diff --git a/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c b/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c > index 727b4b6ac696..93f0c6bce502 100644 > --- a/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c > +++ b/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c > @@ -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)