Skip to content

Commit

Permalink
iio: adc: rn5t618: Add iio map
Browse files Browse the repository at this point in the history
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]>
  • Loading branch information
akemnade authored and sre committed Aug 13, 2021
1 parent 3833423 commit 1a844dd
Showing 1 changed file with 23 additions and 0 deletions.
23 changes: 23 additions & 0 deletions drivers/iio/adc/rn5t618-adc.c
Original file line number Diff line number Diff line change
Expand Up @@ -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))
Expand Down Expand Up @@ -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;
Expand Down Expand Up @@ -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);
}

Expand Down

0 comments on commit 1a844dd

Please sign in to comment.