On Tue, 5 Jul 2011 07:36:32 -0700, Guenter Roeck wrote: > Negative temperatures were returned in degrees C instead of milli-Degrees C. > Fix by multiplying with 1000. > > Signed-off-by: Guenter Roeck <guenter.roeck@xxxxxxxxxxxx> > --- > drivers/hwmon/lm95241.c | 2 +- > 1 files changed, 1 insertions(+), 1 deletions(-) > > diff --git a/drivers/hwmon/lm95241.c b/drivers/hwmon/lm95241.c > index f2cfecf..d1bbdf8 100644 > --- a/drivers/hwmon/lm95241.c > +++ b/drivers/hwmon/lm95241.c > @@ -101,7 +101,7 @@ struct lm95241_data { > static int TempFromReg(u8 val_h, u8 val_l) > { > if (val_h & 0x80) > - return val_h - 0x100; > + return (val_h - 0x100) * 1000; > return val_h * 1000 + val_l * 1000 / 256; > } > The fix is needed but is it sufficient? How comes that positive temperatures would be returned with a sub-degree resolution and negative ones with 1°C resolution only? I don't see any such limitation in the datasheet. Also, negative values are really only 2's complement format so a simple cast should do (untested): s16 val_hl = (val_h << 8) | val_l; return val_hl * 1000 / 256; -- Jean Delvare _______________________________________________ lm-sensors mailing list lm-sensors@xxxxxxxxxxxxxx http://lists.lm-sensors.org/mailman/listinfo/lm-sensors