[PATCH 01/20] iio: core: add accessors 'masklength'
Alexandru Ardelean
aardelean at baylibre.com
Tue Jul 2 23:10:15 PDT 2024
On Tue, Jul 2, 2024 at 7:02 PM Nuno Sa via B4 Relay
<devnull+nuno.sa.analog.com at kernel.org> wrote:
>
> From: Nuno Sa <nuno.sa at analog.com>
>
> 'masklength' is supposed to be an IIO private member. However, drivers
> (often in trigger handlers) need to access it to iterate over the
> enabled channels for example (there are other reasons). Hence, a couple
> of new accessors are being added:
>
> * iio_for_each_active_channel() - Iterates over the active channels;
> * iio_get_masklength() - Get length of the channels mask.
>
> The goal of these new accessors is to annotate 'masklength' as private
> as soon as all drivers accessing it are converted to use the new
> helpers.
>
Reviewed-by: Alexandru Ardelean <aardelean at baylibre.com>
> Signed-off-by: Nuno Sa <nuno.sa at analog.com>
> ---
> include/linux/iio/iio.h | 18 ++++++++++++++++++
> 1 file changed, 18 insertions(+)
>
> diff --git a/include/linux/iio/iio.h b/include/linux/iio/iio.h
> index 894309294182d..dd6bbc468283e 100644
> --- a/include/linux/iio/iio.h
> +++ b/include/linux/iio/iio.h
> @@ -855,6 +855,24 @@ static inline const struct iio_scan_type
> return &chan->scan_type;
> }
>
> +/**
> + * iio_get_masklength - Get length of the channels mask
> + * @indio_dev: the IIO device to get the masklength for
> + */
> +static inline unsigned int iio_get_masklength(const struct iio_dev *indio_dev)
> +{
> + return indio_dev->masklength;
> +}
> +
> +/**
> + * iio_for_each_active_channel - Iterated over active channels
> + * @indio_dev: the IIO device
> + * @chan: Holds the index of the enabled channel
> + */
> +#define iio_for_each_active_channel(indio_dev, chan) \
> + for_each_set_bit((chan), (indio_dev)->active_scan_mask, \
> + iio_get_masklength(indio_dev))
> +
> ssize_t iio_format_value(char *buf, unsigned int type, int size, int *vals);
>
> int iio_str_to_fixpoint(const char *str, int fract_mult, int *integer,
>
> --
> 2.45.2
>
>
>
More information about the linux-arm-kernel
mailing list