Re: [PATCH v2 1/2] iio: adc: rn5t618: Add iio map

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon,  5 Jul 2021 13:36:36 +0200
Andreas Kemnade <andreas@xxxxxxxxxxxx> wrote:

> Add iio map to allow power driver to read out values as a consumer.
> This approach does not block later addition of devicetree support
> which would be helpful if there is an in-kernel consumer for AIN0/1.
> 
> Signed-off-by: Andreas Kemnade <andreas@xxxxxxxxxxxx>
Looks good.  I'm assuming this will go via the power tree, perhaps with
an immutable branch on off chance we have any other changes in the same
driver this cycle.

Acked-by: Jonathan Cameron <Jonathan.Cameron@xxxxxxxxxx>

> ---
> Changes in v2:
> - provide consumer mapping via iio_map instead of devicetree
> 
>  drivers/iio/adc/rn5t618-adc.c | 23 +++++++++++++++++++++++
>  1 file changed, 23 insertions(+)
> 
> diff --git a/drivers/iio/adc/rn5t618-adc.c b/drivers/iio/adc/rn5t618-adc.c
> index 7010c4276947..c56fccb2c8e1 100644
> --- a/drivers/iio/adc/rn5t618-adc.c
> +++ b/drivers/iio/adc/rn5t618-adc.c
> @@ -16,6 +16,8 @@
>  #include <linux/completion.h>
>  #include <linux/regmap.h>
>  #include <linux/iio/iio.h>
> +#include <linux/iio/driver.h>
> +#include <linux/iio/machine.h>
>  #include <linux/slab.h>
>  
>  #define RN5T618_ADC_CONVERSION_TIMEOUT   (msecs_to_jiffies(500))
> @@ -189,6 +191,19 @@ static const struct iio_chan_spec rn5t618_adc_iio_channels[] = {
>  	RN5T618_ADC_CHANNEL(AIN0, IIO_VOLTAGE, "AIN0")
>  };
>  
> +static struct iio_map rn5t618_maps[] = {
> +	IIO_MAP("VADP", "rn5t618-power", "vadp"),
> +	IIO_MAP("VUSB", "rn5t618-power", "vusb"),
> +	{ /* sentinel */ }
> +};
> +
> +static void unregister_map(void *data)
> +{
> +	struct iio_dev *iio_dev = (struct iio_dev *) data;
> +
> +	iio_map_array_unregister(iio_dev);
> +}
> +
>  static int rn5t618_adc_probe(struct platform_device *pdev)
>  {
>  	int ret;
> @@ -239,6 +254,14 @@ static int rn5t618_adc_probe(struct platform_device *pdev)
>  		return ret;
>  	}
>  
> +	ret = iio_map_array_register(iio_dev, rn5t618_maps);
> +	if (ret < 0)
> +		return ret;
> +
> +	ret = devm_add_action_or_reset(adc->dev, unregister_map, iio_dev);
> +	if (ret < 0)
> +		return ret;
> +
>  	return devm_iio_device_register(adc->dev, iio_dev);
>  }
>  




[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Input]     [Linux Kernel]     [Linux SCSI]     [X.org]

  Powered by Linux