lkml.org 
[lkml]   [2022]   [Oct]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 6.0 026/862] iio: adc: ad7923: fix channel readings for some variants
    Date
    From: Nuno Sá <nuno.sa@analog.com>

    commit f4f43f01cff2f29779343ade755191afd2581c77 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: f2f7a449707e ("iio:adc:ad7923: Add support for the ad7904/ad7914/ad7924")
    Fixes: 851644a60d20 ("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>
    ---
    drivers/iio/adc/ad7923.c | 4 +++-
    1 file changed, 3 insertions(+), 1 deletion(-)

    --- a/drivers/iio/adc/ad7923.c
    +++ b/drivers/iio/adc/ad7923.c
    @@ -93,6 +93,7 @@ enum ad7923_id {
    .sign = 'u', \
    .realbits = (bits), \
    .storagebits = 16, \
    + .shift = 12 - (bits), \
    .endianness = IIO_BE, \
    }, \
    }
    @@ -268,7 +269,8 @@ static int ad7923_read_raw(struct iio_de
    return ret;

    if (chan->address == EXTRACT(ret, 12, 4))
    - *val = EXTRACT(ret, 0, 12);
    + *val = EXTRACT(ret, chan->scan_type.shift,
    + chan->scan_type.realbits);
    else
    return -EIO;


    \
     
     \ /
      Last update: 2022-10-19 10:44    [W:3.722 / U:0.100 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site