Re: [PATCH] iio: st_sensors: Fix the sleep time for sampling

From: Jian-Hong Pan
Date: Tue Nov 27 2018 - 02:23:46 EST


Jonathan Cameron <jic23@xxxxxxxxxx> æ 2018å11æ25æ éæ äå9:23åéï
>
> On Wed, 21 Nov 2018 13:13:40 +0800
> Jian-Hong Pan <jian-hong@xxxxxxxxxxxx> wrote:
>
> > Denis CIOCCA <denis.ciocca@xxxxxx> æ 2018å11æ20æ éä äå3:05åéï
> > >
> > > Hi Jian,
> > >
> > > Not clear to me why should be + instead of *.
> > >
> > > ODR is expressed in Hz, so (1/Hz) = period in seconds (1 sample sampling time) [s]
> > > 1000 * (1/Hz) = period in milliseconds (1 sample sampling time) [ms]
> > > n * 1000 * (1/Hz) = n times period in milliseconds (n times sample sampling time) [ms]
> > >
> > > In your case you assume bootime is in milliseconds.
> >
> > Yes, I assume that according to the original comment.
> >
> > >Maybe we can change the comment and use 'number of samples ...'.
> >
> > Making the meaning more clear is better.
> >
> > However, does the bootime of the measurement need as the long time to
> > be enabled?
> > If the sampling rate is 1Hz and n is 2, then they will do msleep with
> > 2000 ms for each st_sensors_read_info_raw.
>
> Superficially that seems correct as we need to be sure that a reading
> has occurred. If you want it to be quicker than the ODR should be set
> faster so that the reading shows up reasonably quickly. At 1Hz and
> you want to drop 2 samples, it will indeed take 2 seconds.

Now, I understand with the description. Thank you.

Jian-Hong Pan

> > > -----Original Message-----
> > > From: linux-iio-owner@xxxxxxxxxxxxxxx <linux-iio-owner@xxxxxxxxxxxxxxx> On Behalf Of Jian-Hong Pan
> > > Sent: Sunday, November 18, 2018 10:12 PM
> > > To: Jonathan Cameron <jic23@xxxxxxxxxx>; Hartmut Knaack <knaack.h@xxxxxx>; Lars-Peter Clausen <lars@xxxxxxxxxx>; Peter Meerwald-Stadler <pmeerw@xxxxxxxxxx>; Dominique Martinet <asmadeus@xxxxxxxxxxxxx>
> > > Cc: linux-iio@xxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx; linux@xxxxxxxxxxxx; Jian-Hong Pan <jian-hong@xxxxxxxxxxxx>
> > > Subject: [PATCH] iio: st_sensors: Fix the sleep time for sampling
> > >
> > > According to the description of st_sensor_settings and st_sensor_data structures' comments:
> > > - bootime: samples to discard when sensor passing from power-down to power-up.
> > > - odr: Output data rate of the sensor [Hz].
> > >
> > > The sleep time should be
> > > sdata->sensor_settings->bootime + 1000 / sdata->odr ms.
> > >
> > > Signed-off-by: Jian-Hong Pan <jian-hong@xxxxxxxxxxxx>
> > > ---
> > > drivers/iio/common/st_sensors/st_sensors_core.c | 2 +-
> > > 1 file changed, 1 insertion(+), 1 deletion(-)
> > >
> > > diff --git a/drivers/iio/common/st_sensors/st_sensors_core.c b/drivers/iio/common/st_sensors/st_sensors_core.c
> > > index 26fbd1bd9413..6b87ea657a92 100644
> > > --- a/drivers/iio/common/st_sensors/st_sensors_core.c
> > > +++ b/drivers/iio/common/st_sensors/st_sensors_core.c
> > > @@ -594,7 +594,7 @@ int st_sensors_read_info_raw(struct iio_dev *indio_dev,
> > > if (err < 0)
> > > goto out;
> > >
> > > - msleep((sdata->sensor_settings->bootime * 1000) / sdata->odr);
> > > + msleep(sdata->sensor_settings->bootime + 1000 / sdata->odr);
> > > err = st_sensors_read_axis_data(indio_dev, ch, val);
> > > if (err < 0)
> > > goto out;
> > > --
> > > 2.11.0
> > >
>