Commit ea85bf90 authored by Lorenzo Bianconi's avatar Lorenzo Bianconi Committed by Jonathan Cameron
Browse files

iio: imu: st_lsm6dsx: wait for settling time in st_lsm6dsx_read_oneshot



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: 290a6ce1 ("iio: imu: add support to lsm6dsx driver")
Reported-by: default avatarMario Tesi <mario.tesi@st.com>
Tested-by: default avatarMario Tesi <mario.tesi@st.com>
Signed-off-by: default avatarLorenzo Bianconi <lorenzo@kernel.org>
Link: https://lore.kernel.org/r/b41ebda5535895298716c76d939f9f165fcd2d13.1644098120.git.lorenzo@kernel.org


Cc: <Stable@vger.kernel.org>
Signed-off-by: default avatarJonathan Cameron <Jonathan.Cameron@huawei.com>
parent 632fe0bb
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -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)