summaryrefslogtreecommitdiffstats
path: root/drivers/staging/iio
diff options
context:
space:
mode:
authorRenato Lui Geh <renatogeh@gmail.com>2018-11-05 17:14:58 -0200
committerJonathan Cameron <Jonathan.Cameron@huawei.com>2018-11-16 18:32:31 +0000
commit336650c785b62c3bea7c8cf6061c933a90241f67 (patch)
tree87dcb07f12647cb8093d0328a88c227013d0d026 /drivers/staging/iio
parent121354b2eceb2669ebdffa76b105ad6c03413966 (diff)
downloadlinux-336650c785b62c3bea7c8cf6061c933a90241f67.tar.bz2
staging: iio: ad7780: update voltage on read
The ad7780 driver previously did not read the correct device output, as it read an outdated value set at initialization. It now updates its voltage on read. Signed-off-by: Renato Lui Geh <renatogeh@gmail.com> Acked-by: Alexandru Ardelean <alexandru.ardelean@analog.com> Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Diffstat (limited to 'drivers/staging/iio')
-rw-r--r--drivers/staging/iio/adc/ad7780.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/drivers/staging/iio/adc/ad7780.c b/drivers/staging/iio/adc/ad7780.c
index ff8e3b2d0efc..aa0521a309db 100644
--- a/drivers/staging/iio/adc/ad7780.c
+++ b/drivers/staging/iio/adc/ad7780.c
@@ -96,12 +96,16 @@ static int ad7780_read_raw(struct iio_dev *indio_dev,
long m)
{
struct ad7780_state *st = iio_priv(indio_dev);
+ int voltage_uv;
switch (m) {
case IIO_CHAN_INFO_RAW:
return ad_sigma_delta_single_conversion(indio_dev, chan, val);
case IIO_CHAN_INFO_SCALE:
- *val = st->int_vref_mv * st->gain;
+ voltage_uv = regulator_get_voltage(st->reg);
+ if (voltage_uv < 0)
+ return voltage_uv;
+ *val = (voltage_uv / 1000) * st->gain;
*val2 = chan->scan_type.realbits - 1;
return IIO_VAL_FRACTIONAL_LOG2;
case IIO_CHAN_INFO_OFFSET: