iio: chemical: atlas-sensor: add helper function atlas_buffer_num_channels()
authorMatt Ranostay <matt.ranostay@konsulko.com>
Sat, 4 Jan 2020 01:29:08 +0000 (17:29 -0800)
committerJonathan Cameron <Jonathan.Cameron@huawei.com>
Sun, 12 Jan 2020 11:34:16 +0000 (11:34 +0000)
Add helper function to detect the number of channels to output
in trigger handler. This is based on IIO_TIMESTAMP channel being the
delimiter between input and output channels.

Signed-off-by: Matt Ranostay <matt.ranostay@konsulko.com>
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
drivers/iio/chemical/atlas-sensor.c

index 99095c8..2f0a6fe 100644 (file)
@@ -86,6 +86,16 @@ static const struct regmap_config atlas_regmap_config = {
        .val_bits = 8,
 };
 
+static int atlas_buffer_num_channels(const struct iio_chan_spec *spec)
+{
+       int idx = 0;
+
+       for (; spec->type != IIO_TIMESTAMP; spec++)
+               idx++;
+
+       return idx;
+};
+
 static const struct iio_chan_spec atlas_ph_channels[] = {
        {
                .type = IIO_PH,
@@ -354,11 +364,12 @@ static irqreturn_t atlas_trigger_handler(int irq, void *private)
        struct iio_poll_func *pf = private;
        struct iio_dev *indio_dev = pf->indio_dev;
        struct atlas_data *data = iio_priv(indio_dev);
+       int channels = atlas_buffer_num_channels(data->chip->channels);
        int ret;
 
        ret = regmap_bulk_read(data->regmap, data->chip->data_reg,
                              (u8 *) &data->buffer,
-                             sizeof(__be32) * (data->chip->num_channels - 2));
+                             sizeof(__be32) * channels);
 
        if (!ret)
                iio_push_to_buffers_with_timestamp(indio_dev, data->buffer,