Commit 7129b126 authored by David Fries's avatar David Fries Committed by Linus Torvalds

W1: w1_therm.c standardize units to millidegrees C

Standardize the temperature units to millidegrees C for the two sensor
conversion routines.  Previously the routines were,

w1_DS18B20_convert_temp degrees C
w1_DS18S20_convert_temp millidegrees C

Unfortunately this will break any program using the ds18b20 value as it
will now be 1000 times bigger.  Fortunately there can't be that many users
out there, or some of these bugs will have been fixed by now, such as the
negative C error (see previous patch) that makes me think the ds18b20 is
the better choice to change because of the current bugs.
Signed-off-by: default avatarDavid Fries <david@fries.net>
Cc: Evgeniy Polyakov <johnpol@2ka.mipt.ru>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 35841f70
...@@ -92,6 +92,7 @@ struct w1_therm_family_converter ...@@ -92,6 +92,7 @@ struct w1_therm_family_converter
int (*convert)(u8 rom[9]); int (*convert)(u8 rom[9]);
}; };
/* The return value is millidegrees Centigrade. */
static inline int w1_DS18B20_convert_temp(u8 rom[9]); static inline int w1_DS18B20_convert_temp(u8 rom[9]);
static inline int w1_DS18S20_convert_temp(u8 rom[9]); static inline int w1_DS18S20_convert_temp(u8 rom[9]);
...@@ -113,7 +114,7 @@ static struct w1_therm_family_converter w1_therm_families[] = { ...@@ -113,7 +114,7 @@ static struct w1_therm_family_converter w1_therm_families[] = {
static inline int w1_DS18B20_convert_temp(u8 rom[9]) static inline int w1_DS18B20_convert_temp(u8 rom[9])
{ {
s16 t = (rom[1] << 8) | rom[0]; s16 t = (rom[1] << 8) | rom[0];
t /= 16; t = t*1000/16;
return t; return t;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment