summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStefan Popa <stefan.popa@analog.com>2019-09-10 10:43:32 -0400
committerJonathan Cameron <Jonathan.Cameron@huawei.com>2019-10-09 14:11:25 -0400
commitd202ce4787e446556c6b9d01f84734c3f8174ba3 (patch)
tree972b133aeae530896f9717f9879d947f5cbd2c95
parent4043ecfb5fc4355a090111e14faf7945ff0fdbd5 (diff)
iio: accel: adxl372: Fix/remove limitation for FIFO samples
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: f4f55ce38e5f ("iio:adxl372: Add FIFO and interrupts support") Cc: <Stable@vger.kernel.org> Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
-rw-r--r--drivers/iio/accel/adxl372.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/drivers/iio/accel/adxl372.c b/drivers/iio/accel/adxl372.c
index 055227cb3d43..863fe61a371f 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)
474 if (ret < 0) 474 if (ret < 0)
475 return ret; 475 return ret;
476 476
477 fifo_samples = st->watermark & 0xFF; 477 /*
478 * watermark stores the number of sets; we need to write the FIFO
479 * registers with the number of samples
480 */
481 fifo_samples = (st->watermark * st->fifo_set_size);
478 fifo_ctl = ADXL372_FIFO_CTL_FORMAT_MODE(st->fifo_format) | 482 fifo_ctl = ADXL372_FIFO_CTL_FORMAT_MODE(st->fifo_format) |
479 ADXL372_FIFO_CTL_MODE_MODE(st->fifo_mode) | 483 ADXL372_FIFO_CTL_MODE_MODE(st->fifo_mode) |
480 ADXL372_FIFO_CTL_SAMPLES_MODE(st->watermark); 484 ADXL372_FIFO_CTL_SAMPLES_MODE(fifo_samples);
481 485
482 ret = regmap_write(st->regmap, ADXL372_FIFO_SAMPLES, fifo_samples); 486 ret = regmap_write(st->regmap,
487 ADXL372_FIFO_SAMPLES, fifo_samples & 0xFF);
483 if (ret < 0) 488 if (ret < 0)
484 return ret; 489 return ret;
485 490