[RFC 08/11] iio: Update iio_channel_get_all and iio_channel_get_all_cb API
Jonathan Cameron
jic23 at kernel.org
Sat Feb 2 21:14:34 EST 2013
On 01/31/2013 09:43 PM, Guenter Roeck wrote:
> Pass device pointer instead of device name as parameter to iio_channel_get_all
> and iio_channel_get_all_cb. This will enable us to use OF information to
> retrieve consumer channel information.
>
> Signed-off-by: Guenter Roeck <linux at roeck-us.net>
Applied with unused 'lists' variable dropped.
> ---
> drivers/iio/buffer_cb.c | 4 ++--
> drivers/iio/inkern.c | 6 ++++--
> drivers/staging/iio/iio_hwmon.c | 10 +++++++---
> include/linux/iio/consumer.h | 8 ++++----
> 4 files changed, 17 insertions(+), 11 deletions(-)
>
> diff --git a/drivers/iio/buffer_cb.c b/drivers/iio/buffer_cb.c
> index 4d40e24..9201022 100644
> --- a/drivers/iio/buffer_cb.c
> +++ b/drivers/iio/buffer_cb.c
> @@ -25,7 +25,7 @@ static struct iio_buffer_access_funcs iio_cb_access = {
> .store_to = &iio_buffer_cb_store_to,
> };
>
> -struct iio_cb_buffer *iio_channel_get_all_cb(const char *name,
> +struct iio_cb_buffer *iio_channel_get_all_cb(struct device *dev,
> int (*cb)(u8 *data,
> void *private),
> void *private)
> @@ -46,7 +46,7 @@ struct iio_cb_buffer *iio_channel_get_all_cb(const char *name,
> cb_buff->buffer.access = &iio_cb_access;
> INIT_LIST_HEAD(&cb_buff->buffer.demux_list);
>
> - cb_buff->channels = iio_channel_get_all(name);
> + cb_buff->channels = iio_channel_get_all(dev);
> if (IS_ERR(cb_buff->channels)) {
> ret = PTR_ERR(cb_buff->channels);
> goto error_free_cb_buff;
> diff --git a/drivers/iio/inkern.c b/drivers/iio/inkern.c
> index d55e98f..58d0ffe 100644
> --- a/drivers/iio/inkern.c
> +++ b/drivers/iio/inkern.c
> @@ -167,16 +167,18 @@ void iio_channel_release(struct iio_channel *channel)
> }
> EXPORT_SYMBOL_GPL(iio_channel_release);
>
> -struct iio_channel *iio_channel_get_all(const char *name)
> +struct iio_channel *iio_channel_get_all(struct device *dev)
> {
> + const char *name;
> struct iio_channel *chans;
> struct iio_map_internal *c = NULL;
> int nummaps = 0;
> int mapind = 0;
> int i, ret;
>
> - if (name == NULL)
> + if (dev == NULL)
> return ERR_PTR(-EINVAL);
> + name = dev_name(dev);
>
> mutex_lock(&iio_map_list_lock);
> /* first count the matching maps */
> diff --git a/drivers/staging/iio/iio_hwmon.c b/drivers/staging/iio/iio_hwmon.c
> index 6a5bc5f..a4fce64 100644
> --- a/drivers/staging/iio/iio_hwmon.c
> +++ b/drivers/staging/iio/iio_hwmon.c
> @@ -71,14 +71,18 @@ static int iio_hwmon_probe(struct platform_device *pdev)
> int ret, i;
> int in_i = 1, temp_i = 1, curr_i = 1;
> enum iio_chan_type type;
> + struct iio_channel *channels;
> + const __be32 *list;
> +
> + channels = iio_channel_get_all(dev);
> + if (IS_ERR(channels))
> + return PTR_ERR(channels);
>
> st = devm_kzalloc(dev, sizeof(*st), GFP_KERNEL);
> if (st == NULL)
> return -ENOMEM;
>
> - st->channels = iio_channel_get_all(dev_name(dev));
> - if (IS_ERR(st->channels))
> - return PTR_ERR(st->channels);
> + st->channels = channels;
>
> /* count how many attributes we have */
> while (st->channels[st->num_channels].indio_dev)
> diff --git a/include/linux/iio/consumer.h b/include/linux/iio/consumer.h
> index 16c35ac..6c44167 100644
> --- a/include/linux/iio/consumer.h
> +++ b/include/linux/iio/consumer.h
> @@ -48,14 +48,14 @@ void iio_channel_release(struct iio_channel *chan);
>
> /**
> * iio_channel_get_all() - get all channels associated with a client
> - * @name: name of consumer device.
> + * @dev: Pointer to consumer device.
> *
> * Returns an array of iio_channel structures terminated with one with
> * null iio_dev pointer.
> * This function is used by fairly generic consumers to get all the
> * channels registered as having this consumer.
> */
> -struct iio_channel *iio_channel_get_all(const char *name);
> +struct iio_channel *iio_channel_get_all(struct device *dev);
>
> /**
> * iio_channel_release_all() - reverse iio_channel_get_all
> @@ -66,7 +66,7 @@ void iio_channel_release_all(struct iio_channel *chan);
> struct iio_cb_buffer;
> /**
> * iio_channel_get_all_cb() - register callback for triggered capture
> - * @name: Name of client device.
> + * @dev: Pointer to client device.
> * @cb: Callback function.
> * @private: Private data passed to callback.
> *
> @@ -74,7 +74,7 @@ struct iio_cb_buffer;
> * So if the channels requested come from different devices this will
> * fail.
> */
> -struct iio_cb_buffer *iio_channel_get_all_cb(const char *name,
> +struct iio_cb_buffer *iio_channel_get_all_cb(struct device *dev,
> int (*cb)(u8 *data,
> void *private),
> void *private);
>
More information about the devicetree-discuss
mailing list