| From 27eb4f9d0fbb2b40b472e6ca13902ef73c80a392 Mon Sep 17 00:00:00 2001 |
| From: Renato Lui Geh <renatogeh@gmail.com> |
| Date: Mon, 5 Nov 2018 17:14:58 -0200 |
| Subject: staging: iio: ad7780: update voltage on read |
| |
| [ Upstream commit 336650c785b62c3bea7c8cf6061c933a90241f67 ] |
| |
| 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> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/staging/iio/adc/ad7780.c | 6 +++++- |
| 1 file changed, 5 insertions(+), 1 deletion(-) |
| |
| diff --git a/drivers/staging/iio/adc/ad7780.c b/drivers/staging/iio/adc/ad7780.c |
| index dec3ba6eba8a..52613f6a9dd8 100644 |
| --- a/drivers/staging/iio/adc/ad7780.c |
| +++ b/drivers/staging/iio/adc/ad7780.c |
| @@ -87,12 +87,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: |
| -- |
| 2.19.1 |
| |