staging:iio: scrap scan_count and ensure all drivers use active_scan_mask
[GitHub/mt8127/android_kernel_alcatel_ttab.git] / drivers / staging / iio / accel / adis16204_ring.c
index 08551bb48f18d4c2443f2adc2b7d855c5b6c3fd4..8010c1d1a05adc0b152e6e4680d3464db6a11fa0 100644 (file)
@@ -1,3 +1,4 @@
+#include <linux/export.h>
 #include <linux/interrupt.h>
 #include <linux/mutex.h>
 #include <linux/kernel.h>
@@ -70,11 +71,11 @@ static irqreturn_t adis16204_trigger_handler(int irq, void *p)
                return -ENOMEM;
        }
 
-       if (ring->scan_count)
-               if (adis16204_read_ring_data(&indio_dev->dev, st->rx) >= 0)
-                       for (; i < ring->scan_count; i++)
-                               data[i] = be16_to_cpup(
-                                       (__be16 *)&(st->rx[i*2]));
+       if (!bitmap_empty(indio_dev->active_scan_mask, indio_dev->masklength) &&
+           adis16204_read_ring_data(&indio_dev->dev, st->rx) >= 0)
+               for (; i < bitmap_weight(indio_dev->active_scan_mask,
+                                        indio_dev->masklength); i++)
+                       data[i] = be16_to_cpup((__be16 *)&(st->rx[i*2]));
 
        /* Guaranteed to be aligned with 8 byte boundary */
        if (ring->scan_timestamp)
@@ -113,9 +114,8 @@ int adis16204_configure_ring(struct iio_dev *indio_dev)
        indio_dev->buffer = ring;
        /* Effectively select the ring buffer implementation */
        ring->access = &ring_sw_access_funcs;
-       ring->bpe = 2;
        ring->scan_timestamp = true;
-       ring->setup_ops = &adis16204_ring_setup_ops;
+       indio_dev->setup_ops = &adis16204_ring_setup_ops;
        ring->owner = THIS_MODULE;
 
        indio_dev->pollfunc = iio_alloc_pollfunc(&iio_pollfunc_store_time,