On Tue, 7 Jan 2025 12:25:07 -0300 Jonathan Santos <Jonathan.Santos@xxxxxxxxxx> wrote: > From: Sergiu Cuciurean <sergiu.cuciurean@xxxxxxxxxx> > > The ad7768-1 is a fully differential ADC, meaning that the voltage > conversion result is a signed value. Since the value is a 24 bit one, > stored in a 32 bit variable, the sign should be extended in order to get > the correct representation. > > Also the channel description has been updated to signed representation, > to match the ADC specifications. > > Fixes: a5f8c7da3dbe ("iio: adc: Add AD7768-1 ADC basic support") > Signed-off-by: Sergiu Cuciurean <sergiu.cuciurean@xxxxxxxxxx> Looks good, but for v2, please pull fixes to the start of the patch set. Whilst it doesn't matter here as the earlier patches are all docs, it is still good practice as anyone looking for fixes tends to look there. Jonathan > --- > drivers/iio/adc/ad7768-1.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/iio/adc/ad7768-1.c b/drivers/iio/adc/ad7768-1.c > index 113703fb7245..c3cf04311c40 100644 > --- a/drivers/iio/adc/ad7768-1.c > +++ b/drivers/iio/adc/ad7768-1.c > @@ -142,7 +142,7 @@ static const struct iio_chan_spec ad7768_channels[] = { > .channel = 0, > .scan_index = 0, > .scan_type = { > - .sign = 'u', > + .sign = 's', > .realbits = 24, > .storagebits = 32, > .shift = 8, > @@ -371,7 +371,7 @@ static int ad7768_read_raw(struct iio_dev *indio_dev, > > ret = ad7768_scan_direct(indio_dev); > if (ret >= 0) > - *val = ret; > + *val = sign_extend32(ret, chan->scan_type.realbits - 1); > > iio_device_release_direct_mode(indio_dev); > if (ret < 0)