diff options
| author | Andreas Kemnade <[email protected]> | 2021-07-12 23:21:10 +0200 | 
|---|---|---|
| committer | Sebastian Reichel <[email protected]> | 2021-08-13 18:38:17 +0200 | 
| commit | 1a844ddf06b0a6f39c9d8974dfecfda347e87cb6 (patch) | |
| tree | b9dff3139e6bba6699788fe1675708a07796f3f1 | |
| parent | 38334231965e9a75558e413d1f5a23357994f065 (diff) | |
iio: adc: rn5t618: Add iio map
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 <[email protected]>
Acked-by: Jonathan Cameron <[email protected]>
Signed-off-by: Sebastian Reichel <[email protected]>
| -rw-r--r-- | drivers/iio/adc/rn5t618-adc.c | 23 | 
1 files changed, 23 insertions, 0 deletions
| 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);  } |