lkml.org 
[lkml]   [2021]   [Feb]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v6 18/24] iio: dummy: iio_simple_dummy_buffer: use triggered buffer core calls
    Date
    The iio_simple_dummy_configure_buffer() function is essentially a
    re-implementation of the iio_triggered_buffer_setup() function.

    This change makes use of the iio_triggered_buffer_setup() function. The
    reason is so that we don't have to modify the iio_device_attach_buffer()
    function in this driver as well.

    One minor drawback is that the pollfunc name may not be 100% identical
    with the one in the original code, but since it's an example, it should be
    a big problem.

    This change does a minor re-arranging of the included iio headers, as a
    minor tidy-up.

    Signed-off-by: Alexandru Ardelean <alexandru.ardelean@analog.com>
    ---
    drivers/iio/dummy/iio_simple_dummy_buffer.c | 68 ++-------------------
    1 file changed, 6 insertions(+), 62 deletions(-)

    diff --git a/drivers/iio/dummy/iio_simple_dummy_buffer.c b/drivers/iio/dummy/iio_simple_dummy_buffer.c
    index 5512d5edc707..59aa60d4ca37 100644
    --- a/drivers/iio/dummy/iio_simple_dummy_buffer.c
    +++ b/drivers/iio/dummy/iio_simple_dummy_buffer.c
    @@ -16,9 +16,9 @@
    #include <linux/bitmap.h>

    #include <linux/iio/iio.h>
    -#include <linux/iio/trigger_consumer.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 "iio_simple_dummy.h"

    @@ -103,64 +103,9 @@ static const struct iio_buffer_setup_ops iio_simple_dummy_buffer_setup_ops = {

    int iio_simple_dummy_configure_buffer(struct iio_dev *indio_dev)
    {
    - int ret;
    - struct iio_buffer *buffer;
    -
    - /* Allocate a buffer to use - here a kfifo */
    - buffer = iio_kfifo_allocate();
    - if (!buffer) {
    - ret = -ENOMEM;
    - goto error_ret;
    - }
    -
    - iio_device_attach_buffer(indio_dev, buffer);
    -
    - /*
    - * Tell the core what device type specific functions should
    - * be run on either side of buffer capture enable / disable.
    - */
    - indio_dev->setup_ops = &iio_simple_dummy_buffer_setup_ops;
    -
    - /*
    - * Configure a polling function.
    - * When a trigger event with this polling function connected
    - * occurs, this function is run. Typically this grabs data
    - * from the device.
    - *
    - * NULL for the bottom half. This is normally implemented only if we
    - * either want to ping a capture now pin (no sleeping) or grab
    - * a timestamp as close as possible to a data ready trigger firing.
    - *
    - * IRQF_ONESHOT ensures irqs are masked such that only one instance
    - * of the handler can run at a time.
    - *
    - * "iio_simple_dummy_consumer%d" formatting string for the irq 'name'
    - * as seen under /proc/interrupts. Remaining parameters as per printk.
    - */
    - indio_dev->pollfunc = iio_alloc_pollfunc(NULL,
    - &iio_simple_dummy_trigger_h,
    - IRQF_ONESHOT,
    - indio_dev,
    - "iio_simple_dummy_consumer%d",
    - indio_dev->id);
    -
    - if (!indio_dev->pollfunc) {
    - ret = -ENOMEM;
    - goto error_free_buffer;
    - }
    -
    - /*
    - * Notify the core that this device is capable of buffered capture
    - * driven by a trigger.
    - */
    - indio_dev->modes |= INDIO_BUFFER_TRIGGERED;
    -
    - return 0;
    -
    -error_free_buffer:
    - iio_kfifo_free(indio_dev->buffer);
    -error_ret:
    - return ret;
    + return iio_triggered_buffer_setup(indio_dev, NULL,
    + iio_simple_dummy_trigger_h,
    + &iio_simple_dummy_buffer_setup_ops);
    }

    /**
    @@ -169,6 +114,5 @@ int iio_simple_dummy_configure_buffer(struct iio_dev *indio_dev)
    */
    void iio_simple_dummy_unconfigure_buffer(struct iio_dev *indio_dev)
    {
    - iio_dealloc_pollfunc(indio_dev->pollfunc);
    - iio_kfifo_free(indio_dev->buffer);
    + iio_triggered_buffer_cleanup(indio_dev);
    }
    --
    2.17.1
    \
     
     \ /
      Last update: 2021-02-15 11:49    [W:8.419 / U:0.316 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site