[PATCH v3 6/9] iio: adc: rzg2l_adc: Use adc-helpers
Matti Vaittinen
mazziesaccount at gmail.com
Wed Feb 19 05:36:14 PST 2025
On 19/02/2025 14:31, Matti Vaittinen wrote:
> The new devm_iio_adc_device_alloc_chaninfo() -helper is intended to help
> drivers avoid open-coding the for_each_node -loop for getting the
> channel IDs. The helper provides standard way to detect the ADC channel
> nodes (by the node name), and a standard way to convert the "reg",
> "diff-channels", "single-channel" and the "common-mode-channel" to
> channel identification numbers used in the struct iio_chan_spec.
> Furthermore, the helper checks the ID is in range of 0 ... num-channels.
>
> The original driver treated all found child nodes as channel nodes. The
> new helper requires channel nodes to be named channel[@N]. This should
> help avoid problems with devices which may contain also other but ADC
> child nodes. Quick grep from arch/* with the rzg2l_adc's compatible
> string didn't reveal any in-tree .dts with channel nodes named
> othervice. Also, same grep shows all the .dts seem to have channel IDs
> between 0..num of channels.
>
> Use the new helper.
>
> Signed-off-by: Matti Vaittinen <mazziesaccount at gmail.com>
>
> ---
> Revision history:
> v2 => v3:
> - New patch
>
> I picked the rzg2l_adc in this series because it has a straightforward
> approach for populating the struct iio_chan_spec. Only other member
> in the stuct besides the .channel, which can't use a 'template' -data,
> is the .datasheet_name. This makes the rzg2l_adc well suited for example
> user of this new helper. I hope this patch helps to evaluate whether these
> helpers are worth the hassle.
>
> The change is compile tested only!! Testing before applying is highly
> appreciated (as always!).
> ---
> drivers/iio/adc/rzg2l_adc.c | 41 ++++++++++++++++++-------------------
> 1 file changed, 20 insertions(+), 21 deletions(-)
>
> diff --git a/drivers/iio/adc/rzg2l_adc.c b/drivers/iio/adc/rzg2l_adc.c
> index cd3a7e46ea53..3e1c74019785 100644
> --- a/drivers/iio/adc/rzg2l_adc.c
> +++ b/drivers/iio/adc/rzg2l_adc.c
> @@ -11,6 +11,7 @@
...
>
> +static const struct iio_chan_spec rzg2l_adc_chan_template = {
> + .type = IIO_VOLTAGE,
I just rebased this to v6.14-rc3 and noticed the channel type can no
longer come from the template. There are also some other minor changes.
I'll fix this in v4 if this same approach is kept.
> + .indexed = 1,
> + .info_mask_separate = BIT(IIO_CHAN_INFO_RAW),
> +};
> +
Yours,
-- Matti
More information about the linux-arm-kernel
mailing list