Message ID | 1568126612-13134-1-git-send-email-stefan.popa@analog.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [v2,1/3] iio: accel: adxl372: Fix/remove limitation for FIFO samples | expand |
On Tue, 10 Sep 2019 17:43:32 +0300 Stefan Popa <stefan.popa@analog.com> wrote: > Currently, the driver sets the FIFO_SAMPLES register with the number of > sample sets (maximum of 170 for 3 axis data, 256 for 2-axis and 512 for > single axis). However, the FIFO_SAMPLES register should store the number > of samples, regardless of how the FIFO format is configured. > > Signed-off-by: Stefan Popa <stefan.popa@analog.com> Fixes tags? I think it's Fixes: f4f55ce38e5f ("iio:adxl372: Add FIFO and interrupts support") Check I got that right though. One trivial inline that I have tidied up whilst applying. Applied to the fixes-togreg branch of iio.git. Thanks, Jonathan > --- > Changes in v2: > - st->watermark needs to store the number of sample sets, > the total number of samples is computed in > adxl372_configure_fifo() func. > > drivers/iio/accel/adxl372.c | 11 ++++++++--- > 1 file changed, 8 insertions(+), 3 deletions(-) > > diff --git a/drivers/iio/accel/adxl372.c b/drivers/iio/accel/adxl372.c > index 055227cb..7de5e1b 100644 > --- a/drivers/iio/accel/adxl372.c > +++ b/drivers/iio/accel/adxl372.c > @@ -474,12 +474,17 @@ static int adxl372_configure_fifo(struct adxl372_state *st) > if (ret < 0) > return ret; > > - fifo_samples = st->watermark & 0xFF; > + /* > + * watermak stores the number of sets; we need to write the FIFO watermark > + * registers with the number of samples > + */ > + fifo_samples = (st->watermark * st->fifo_set_size); > fifo_ctl = ADXL372_FIFO_CTL_FORMAT_MODE(st->fifo_format) | > ADXL372_FIFO_CTL_MODE_MODE(st->fifo_mode) | > - ADXL372_FIFO_CTL_SAMPLES_MODE(st->watermark); > + ADXL372_FIFO_CTL_SAMPLES_MODE(fifo_samples); > > - ret = regmap_write(st->regmap, ADXL372_FIFO_SAMPLES, fifo_samples); > + ret = regmap_write(st->regmap, > + ADXL372_FIFO_SAMPLES, fifo_samples & 0xFF); > if (ret < 0) > return ret; >
On Du, 2019-09-15 at 14:27 +0100, Jonathan Cameron wrote: > > > > On Tue, 10 Sep 2019 17:43:32 +0300 > Stefan Popa <stefan.popa@analog.com> wrote: > > > > > > > > > > > Currently, the driver sets the FIFO_SAMPLES register with the number of > > sample sets (maximum of 170 for 3 axis data, 256 for 2-axis and 512 for > > single axis). However, the FIFO_SAMPLES register should store the > > number > > of samples, regardless of how the FIFO format is configured. > > > > Signed-off-by: Stefan Popa <stefan.popa@analog.com> Hi Jonathan, > > > > Fixes tags? I think it's > Fixes: f4f55ce38e5f ("iio:adxl372: Add FIFO and interrupts support") > > Check I got that right though. Yes, that's right! Thank you! -Stefan > > > > > One trivial inline that I have tidied up whilst applying. > > Applied to the fixes-togreg branch of iio.git. > > Thanks, > > Jonathan > > > > > > > > > > > > --- > > Changes in v2: > > - st->watermark needs to store the number of sample sets, > > the total number of samples is computed in > > adxl372_configure_fifo() func. > > > > drivers/iio/accel/adxl372.c | 11 ++++++++--- > > 1 file changed, 8 insertions(+), 3 deletions(-) > > > > diff --git a/drivers/iio/accel/adxl372.c b/drivers/iio/accel/adxl372.c > > index 055227cb..7de5e1b 100644 > > --- a/drivers/iio/accel/adxl372.c > > +++ b/drivers/iio/accel/adxl372.c > > @@ -474,12 +474,17 @@ static int adxl372_configure_fifo(struct > > adxl372_state *st) > > if (ret < 0) > > return ret; > > > > - fifo_samples = st->watermark & 0xFF; > > + /* > > + * watermak stores the number of sets; we need to write the > > FIFO > watermark > > > > > > > > > > > + * registers with the number of samples > > + */ > > + fifo_samples = (st->watermark * st->fifo_set_size); > > fifo_ctl = ADXL372_FIFO_CTL_FORMAT_MODE(st->fifo_format) | > > ADXL372_FIFO_CTL_MODE_MODE(st->fifo_mode) | > > - ADXL372_FIFO_CTL_SAMPLES_MODE(st->watermark); > > + ADXL372_FIFO_CTL_SAMPLES_MODE(fifo_samples); > > > > - ret = regmap_write(st->regmap, ADXL372_FIFO_SAMPLES, > > fifo_samples); > > + ret = regmap_write(st->regmap, > > + ADXL372_FIFO_SAMPLES, fifo_samples & 0xFF); > > if (ret < 0) > > return ret; > >
diff --git a/drivers/iio/accel/adxl372.c b/drivers/iio/accel/adxl372.c index 055227cb..7de5e1b 100644 --- a/drivers/iio/accel/adxl372.c +++ b/drivers/iio/accel/adxl372.c @@ -474,12 +474,17 @@ static int adxl372_configure_fifo(struct adxl372_state *st) if (ret < 0) return ret; - fifo_samples = st->watermark & 0xFF; + /* + * watermak stores the number of sets; we need to write the FIFO + * registers with the number of samples + */ + fifo_samples = (st->watermark * st->fifo_set_size); fifo_ctl = ADXL372_FIFO_CTL_FORMAT_MODE(st->fifo_format) | ADXL372_FIFO_CTL_MODE_MODE(st->fifo_mode) | - ADXL372_FIFO_CTL_SAMPLES_MODE(st->watermark); + ADXL372_FIFO_CTL_SAMPLES_MODE(fifo_samples); - ret = regmap_write(st->regmap, ADXL372_FIFO_SAMPLES, fifo_samples); + ret = regmap_write(st->regmap, + ADXL372_FIFO_SAMPLES, fifo_samples & 0xFF); if (ret < 0) return ret;
Currently, the driver sets the FIFO_SAMPLES register with the number of sample sets (maximum of 170 for 3 axis data, 256 for 2-axis and 512 for single axis). However, the FIFO_SAMPLES register should store the number of samples, regardless of how the FIFO format is configured. Signed-off-by: Stefan Popa <stefan.popa@analog.com> --- Changes in v2: - st->watermark needs to store the number of sample sets, the total number of samples is computed in adxl372_configure_fifo() func. drivers/iio/accel/adxl372.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-)