Message ID | 6c10e1de14a42eca2d283a9df242b426e371543e.1643627150.git.lorenzo@kernel.org (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | iio: imu: st_lsm6dsx: wait for settling time in st_lsm6dsx_read_oneshot | expand |
Tested-by: Mario Tesi <mario.tesi@st.com>
On Mon, 31 Jan 2022 12:46:56 +0000 Mario TESI <mario.tesi@st.com> wrote: > Tested-by: Mario Tesi <mario.tesi@st.com> > ________________________________________ > Da: Lorenzo Bianconi <lorenzo@kernel.org> > Inviato: lunedì 31 gennaio 2022 12:08 > A: jic23@kernel.org > Cc: lorenzo.bianconi@redhat.com; linux-iio@vger.kernel.org; Mario TESI > Oggetto: [PATCH] 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. > > Reported-by: Mario Tesi <mario.tesi@st.com> > Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org> Fixes tag? This definitely looks like stable material to me so we want a clear record of when the issue was introduced. Thanks, Jonathan > --- > 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) > -- > 2.34.1 >
> On Mon, 31 Jan 2022 12:46:56 +0000 > Mario TESI <mario.tesi@st.com> wrote: > > > Tested-by: Mario Tesi <mario.tesi@st.com> > > ________________________________________ > > Da: Lorenzo Bianconi <lorenzo@kernel.org> > > Inviato: lunedì 31 gennaio 2022 12:08 > > A: jic23@kernel.org > > Cc: lorenzo.bianconi@redhat.com; linux-iio@vger.kernel.org; Mario TESI > > Oggetto: [PATCH] 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. > > > > Reported-by: Mario Tesi <mario.tesi@st.com> > > Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org> > > Fixes tag? This definitely looks like stable material to me > so we want a clear record of when the issue was introduced. > > Thanks, ack, right. I will add it in v2. Regards, Lorenzo > > Jonathan > > > > --- > > 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) > > -- > > 2.34.1 > > >
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)
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. Reported-by: Mario Tesi <mario.tesi@st.com> Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org> --- drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-)