mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-10-01 06:33:07 +00:00
iio: adc: ad7923: fix channel readings for some variants
commitf4f43f01cf
upstream. Some of the supported devices have 4 or 2 LSB trailing bits that should not be taken into account. Hence we need to shift these bits out which fits perfectly on the scan type shift property. This change fixes both raw and buffered reads. Fixes:f2f7a44970
("iio:adc:ad7923: Add support for the ad7904/ad7914/ad7924") Fixes:851644a60d
("iio: adc: ad7923: Add support for the ad7908/ad7918/ad7928") Signed-off-by: Nuno Sá <nuno.sa@analog.com> Link: https://lore.kernel.org/r/20220912081223.173584-2-nuno.sa@analog.com Cc: <Stable@vger.kernel.org> Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
14fd9ed9bc
commit
fe2852bc80
1 changed files with 3 additions and 1 deletions
|
@ -93,6 +93,7 @@ enum ad7923_id {
|
||||||
.sign = 'u', \
|
.sign = 'u', \
|
||||||
.realbits = (bits), \
|
.realbits = (bits), \
|
||||||
.storagebits = 16, \
|
.storagebits = 16, \
|
||||||
|
.shift = 12 - (bits), \
|
||||||
.endianness = IIO_BE, \
|
.endianness = IIO_BE, \
|
||||||
}, \
|
}, \
|
||||||
}
|
}
|
||||||
|
@ -268,7 +269,8 @@ static int ad7923_read_raw(struct iio_dev *indio_dev,
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
if (chan->address == EXTRACT(ret, 12, 4))
|
if (chan->address == EXTRACT(ret, 12, 4))
|
||||||
*val = EXTRACT(ret, 0, 12);
|
*val = EXTRACT(ret, chan->scan_type.shift,
|
||||||
|
chan->scan_type.realbits);
|
||||||
else
|
else
|
||||||
return -EIO;
|
return -EIO;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue