Re: [PATCH] iio: temperature: mcp9600: Fix temperature reading for negative values

From: Jonathan Cameron
Date: Mon Apr 29 2024 - 15:44:37 EST


On Sun, 28 Apr 2024 14:46:39 -0400
Andrew Hepp <andrew.hepp@xxxxxxxxx> wrote:

> Hi all,
>
> On Apr 28, 2024, at 9:46 AM, Jonathan Cameron <jic23@xxxxxxxxxx> wrote:
>
> > Agreed - by my reading the original patch is correct. Maybe it would act
> > as cleaner 'documentation' to have the sign_extend32() for the cold junction be
> > from bit 12 rather than 15, but I'm not sure it's worth the effort.
> >
> > Andrew, would be great if you can review this fix in case we are all missing
> > something!
>
> I also agree that Dimitri’s original patch appears correct per the data sheet.
>
> I think of the cold junction register as a 16 bit 2s complement signed integer,
> despite the limited range. I like sign extending it from bit 15 rather than from 12.
>
> I applied Dimitri’s patch and stuck a dev board in my icebox.
>
> Before patch:
> # cat /sys/bus/iio/devices/iio:device0/in_temp_raw
> 65222
> # cat /sys/bus/iio/devices/iio:device0/in_temp_ambient_raw
> 65256
>
> After patch:
> # cat /sys/bus/iio/devices/iio:device0/in_temp_raw
> -260
> # cat /sys/bus/iio/devices/iio:device0/in_temp_ambient_raw
> -212
>
> Looks good to me! Thanks for the patch Dimitri, and thanks to all for the review!
>
> Andrew
That definitely deserves a Tested-by tag so I added one. Hope you don't mind!

Applied to the fixes-togreg branch of iio.git and marked for stable.

Thanks,

Jonathan