staging:iio:accel:sca3000 Fix clearing of flag + setting of size of scan.
authorJonathan Cameron <jic23@kernel.org>
Sat, 8 Oct 2016 16:39:04 +0000 (17:39 +0100)
committerJonathan Cameron <jic23@kernel.org>
Sun, 23 Oct 2016 18:33:58 +0000 (19:33 +0100)
Not clearing the stuff_to_read flag can lead to a false flag being set
on restarting the buffer if the data was not all read the previous time.

The size of the scan is needed to ensure the function
iio_buffer_read_first_n_outer actually tries to read the data.

This stuff has been broken for some time so not stable material.

Signed-off-by: Jonathan Cameron <jic23@kernel.org>
Reviewed-by: Lars-Peter Clausen <lars@metafoo.de>
drivers/staging/iio/accel/sca3000.c

index 36a52d02ee0ea44a1d3bba2cad085a0e04f1dfea..8af7d83e658d81e5c887434eb9b44e9e4dbb9a72 100644 (file)
@@ -1491,6 +1491,19 @@ error_ret:
  **/
 static int sca3000_hw_ring_preenable(struct iio_dev *indio_dev)
 {
+       /*
+        * Set stuff to read to indicate no data present.
+        * Need for cases where the interrupt had fired at the
+        * end of a cycle, but the data was never read.
+        */
+       indio_dev->buffer->stufftoread = 0;
+       /*
+        * Needed to ensure the core will actually read data
+        * from the device rather than assuming no channels
+        * are enabled.
+        */
+       indio_dev->buffer->bytes_per_datum = 6;
+
        return __sca3000_hw_ring_state_set(indio_dev, 1);
 }