| From 1bba02cf1c8a55cfcf5e55bc91f0f502e7d02a18 Mon Sep 17 00:00:00 2001 |
| From: Stefan Popa <stefan.popa@analog.com> |
| Date: Tue, 10 Sep 2019 17:43:32 +0300 |
| Subject: [PATCH] iio: accel: adxl372: Fix/remove limitation for FIFO samples |
| |
| commit d202ce4787e446556c6b9d01f84734c3f8174ba3 upstream. |
| |
| 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> |
| Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> |
| |
| 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) |
| if (ret < 0) |
| return ret; |
| |
| - fifo_samples = st->watermark & 0xFF; |
| + /* |
| + * watermark 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; |
| |
| -- |
| 2.7.4 |
| |