staging:iio:adc:ad7476: Use new triggered buffer setup helper function
authorLars-Peter Clausen <lars@metafoo.de>
Mon, 18 Jun 2012 16:33:52 +0000 (18:33 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 19 Jun 2012 00:26:10 +0000 (17:26 -0700)
Use the new triggered buffer setup helper function to allocate and register
buffer and pollfunc.

Also as part of the conversion drop scan_timestamp being enabled by default,
since it is a left over of an earlier cleanup.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Acked-by: Jonathan Cameron <jic23@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/iio/adc/Kconfig
drivers/staging/iio/adc/ad7476_core.c
drivers/staging/iio/adc/ad7476_ring.c

index bb6fffd0d3732b4b67863fb9f4b7229726f2f54a..c5f56511743cf5ba6aef19bc71993ea57e34c449 100644 (file)
@@ -73,8 +73,7 @@ config AD7476
        tristate "Analog Devices AD7475/6/7/8 AD7466/7/8 and AD7495 ADC driver"
        depends on SPI
        select IIO_BUFFER
-       select IIO_KFIFO_BUF
-       select IIO_TRIGGER
+       select IIO_TRIGGERED_BUFFER
        help
          Say yes here to build support for Analog Devices
          AD7475, AD7476, AD7477, AD7478, AD7466, AD7467, AD7468, AD7495
index be1c260cf165ab4d4d6d2c52bd71f88e71e69799..4d30a798ba0db1afc24f729a390047334820717b 100644 (file)
@@ -177,20 +177,12 @@ static int __devinit ad7476_probe(struct spi_device *spi)
        if (ret)
                goto error_disable_reg;
 
-       ret = iio_buffer_register(indio_dev,
-                                 st->chip_info->channel,
-                                 ARRAY_SIZE(st->chip_info->channel));
-       if (ret)
-               goto error_cleanup_ring;
-
        ret = iio_device_register(indio_dev);
        if (ret)
                goto error_ring_unregister;
        return 0;
 
 error_ring_unregister:
-       iio_buffer_unregister(indio_dev);
-error_cleanup_ring:
        ad7476_ring_cleanup(indio_dev);
 error_disable_reg:
        if (!IS_ERR(st->reg))
@@ -210,7 +202,6 @@ static int ad7476_remove(struct spi_device *spi)
        struct ad7476_state *st = iio_priv(indio_dev);
 
        iio_device_unregister(indio_dev);
-       iio_buffer_unregister(indio_dev);
        ad7476_ring_cleanup(indio_dev);
        if (!IS_ERR(st->reg)) {
                regulator_disable(st->reg);
index 383611b05764658d6a36d008ab4e857674ccc81a..10f8b8dd1fa4d89a5936486efa0abc66d2844307 100644 (file)
@@ -15,8 +15,8 @@
 
 #include <linux/iio/iio.h>
 #include <linux/iio/buffer.h>
-#include <linux/iio/kfifo_buf.h>
 #include <linux/iio/trigger_consumer.h>
+#include <linux/iio/triggered_buffer.h>
 
 #include "ad7476.h"
 
@@ -52,51 +52,13 @@ done:
        return IRQ_HANDLED;
 }
 
-static const struct iio_buffer_setup_ops ad7476_ring_setup_ops = {
-       .preenable = &iio_sw_buffer_preenable,
-       .postenable = &iio_triggered_buffer_postenable,
-       .predisable = &iio_triggered_buffer_predisable,
-};
-
 int ad7476_register_ring_funcs_and_init(struct iio_dev *indio_dev)
 {
-       struct ad7476_state *st = iio_priv(indio_dev);
-       int ret = 0;
-
-       indio_dev->buffer = iio_kfifo_allocate(indio_dev);
-       if (!indio_dev->buffer) {
-               ret = -ENOMEM;
-               goto error_ret;
-       }
-       indio_dev->pollfunc
-               = iio_alloc_pollfunc(NULL,
-                                    &ad7476_trigger_handler,
-                                    IRQF_ONESHOT,
-                                    indio_dev,
-                                    "%s_consumer%d",
-                                    spi_get_device_id(st->spi)->name,
-                                    indio_dev->id);
-       if (indio_dev->pollfunc == NULL) {
-               ret = -ENOMEM;
-               goto error_deallocate_kfifo;
-       }
-
-       /* Ring buffer functions - here trigger setup related */
-       indio_dev->setup_ops = &ad7476_ring_setup_ops;
-       indio_dev->buffer->scan_timestamp = true;
-
-       /* Flag that polled ring buffering is possible */
-       indio_dev->modes |= INDIO_BUFFER_TRIGGERED;
-       return 0;
-
-error_deallocate_kfifo:
-       iio_kfifo_free(indio_dev->buffer);
-error_ret:
-       return ret;
+       return iio_triggered_buffer_setup(indio_dev, NULL,
+                       &ad7476_trigger_handler, NULL);
 }
 
 void ad7476_ring_cleanup(struct iio_dev *indio_dev)
 {
-       iio_dealloc_pollfunc(indio_dev->pollfunc);
-       iio_kfifo_free(indio_dev->buffer);
+       iio_triggered_buffer_cleanup(indio_dev);
 }