iio: inkern: add iio_read_channel_average_raw
Add iio_read_channel_average_raw to support reading averaged raw values in consumer drivers. Signed-off-by: Sebastian Reichel <sre@debian.org> Signed-off-by: Jonathan Cameron <jic23@kernel.org>
This commit is contained in:
parent
c0a6b7ee94
commit
476d4af22c
|
@ -443,6 +443,24 @@ err_unlock:
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(iio_read_channel_raw);
|
EXPORT_SYMBOL_GPL(iio_read_channel_raw);
|
||||||
|
|
||||||
|
int iio_read_channel_average_raw(struct iio_channel *chan, int *val)
|
||||||
|
{
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
mutex_lock(&chan->indio_dev->info_exist_lock);
|
||||||
|
if (chan->indio_dev->info == NULL) {
|
||||||
|
ret = -ENODEV;
|
||||||
|
goto err_unlock;
|
||||||
|
}
|
||||||
|
|
||||||
|
ret = iio_channel_read(chan, val, NULL, IIO_CHAN_INFO_AVERAGE_RAW);
|
||||||
|
err_unlock:
|
||||||
|
mutex_unlock(&chan->indio_dev->info_exist_lock);
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(iio_read_channel_average_raw);
|
||||||
|
|
||||||
static int iio_convert_raw_to_processed_unlocked(struct iio_channel *chan,
|
static int iio_convert_raw_to_processed_unlocked(struct iio_channel *chan,
|
||||||
int raw, int *processed, unsigned int scale)
|
int raw, int *processed, unsigned int scale)
|
||||||
{
|
{
|
||||||
|
|
|
@ -122,6 +122,19 @@ struct iio_channel
|
||||||
int iio_read_channel_raw(struct iio_channel *chan,
|
int iio_read_channel_raw(struct iio_channel *chan,
|
||||||
int *val);
|
int *val);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* iio_read_channel_average_raw() - read from a given channel
|
||||||
|
* @chan: The channel being queried.
|
||||||
|
* @val: Value read back.
|
||||||
|
*
|
||||||
|
* Note raw reads from iio channels are in adc counts and hence
|
||||||
|
* scale will need to be applied if standard units required.
|
||||||
|
*
|
||||||
|
* In opposit to the normal iio_read_channel_raw this function
|
||||||
|
* returns the average of multiple reads.
|
||||||
|
*/
|
||||||
|
int iio_read_channel_average_raw(struct iio_channel *chan, int *val);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* iio_read_channel_processed() - read processed value from a given channel
|
* iio_read_channel_processed() - read processed value from a given channel
|
||||||
* @chan: The channel being queried.
|
* @chan: The channel being queried.
|
||||||
|
|
Loading…
Reference in New Issue