lkml.org 
[lkml]   [2019]   [Feb]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 1/7] iio: inkern: API for reading available iio channel attribute values
    Date
    Extend the inkern API with a function for reading available
    attribute values of iio channels.

    Signed-off-by: Artur Rojek <contact@artur-rojek.eu>
    ---
    drivers/iio/inkern.c | 20 ++++++++++++++++++++
    include/linux/iio/consumer.h | 14 ++++++++++++++
    2 files changed, 34 insertions(+)

    diff --git a/drivers/iio/inkern.c b/drivers/iio/inkern.c
    index 06ca3f7fcc44..f19dbde3c945 100644
    --- a/drivers/iio/inkern.c
    +++ b/drivers/iio/inkern.c
    @@ -733,6 +733,26 @@ static int iio_channel_read_avail(struct iio_channel *chan,
    vals, type, length, info);
    }

    +int iio_read_avail_channel_attribute(struct iio_channel *chan,
    + const int **vals, int *type, int *length,
    + enum iio_chan_info_enum attribute)
    +{
    + int ret;
    +
    + mutex_lock(&chan->indio_dev->info_exist_lock);
    + if (!chan->indio_dev->info) {
    + ret = -ENODEV;
    + goto err_unlock;
    + }
    +
    + ret = iio_channel_read_avail(chan, vals, type, length, attribute);
    +err_unlock:
    + mutex_unlock(&chan->indio_dev->info_exist_lock);
    +
    + return ret;
    +}
    +EXPORT_SYMBOL_GPL(iio_read_avail_channel_attribute);
    +
    int iio_read_avail_channel_raw(struct iio_channel *chan,
    const int **vals, int *length)
    {
    diff --git a/include/linux/iio/consumer.h b/include/linux/iio/consumer.h
    index 9887f4f8e2a8..b2d34831ed7c 100644
    --- a/include/linux/iio/consumer.h
    +++ b/include/linux/iio/consumer.h
    @@ -290,6 +290,20 @@ int iio_read_max_channel_raw(struct iio_channel *chan, int *val);
    int iio_read_avail_channel_raw(struct iio_channel *chan,
    const int **vals, int *length);

    +/**
    + * iio_read_avail_channel_attribute() - read available channel attribute values
    + * @chan: The channel being queried.
    + * @vals: Available values read back.
    + * @type: Type of values read back.
    + * @length: Number of entries in vals.
    + * @attribute: info attribute to be read back.
    + *
    + * Returns an error code, IIO_AVAIL_RANGE or IIO_AVAIL_LIST.
    + */
    +int iio_read_avail_channel_attribute(struct iio_channel *chan,
    + const int **vals, int *type, int *length,
    + enum iio_chan_info_enum attribute);
    +
    /**
    * iio_get_channel_type() - get the type of a channel
    * @channel: The channel being queried.
    --
    2.20.1
    \
     
     \ /
      Last update: 2019-02-17 15:29    [W:3.477 / U:0.048 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site