OpenCloudOS-Kernel/drivers/w1
David Fries 80c002ddd2 W1: w1_therm.c is flagging 0C etc as invalid
The extra rom[0] check is flagging valid temperatures as invalid when
there is already a CRC data transmission check.

w1_therm_read_bin()
	if (rom[8] == crc && rom[0])
		verdict = 1;

Requiring rom[0] to be non-zero will flag as invalid temperature
conversions when the low byte is zero, specifically the temperatures 0C,
16C, 32C, 48C, -16C, -32C, and -48C.

The CRC check is produced on the device for the previous 8 bytes and is
required to ensure the data integrity in transmission.  I don't see why the
extra check for rom[0] being non-zero is in there.  Evgeniy Polyakov didn't
know either.  Just for a check I unplugged the sensor, executed a
temperature conversion, and read the results.  The read was all ff's, which
also failed the CRC, so it doesn't need to protect against a disconnected
sensor.

I have more extensive patches in the work, but these two trivial ones will
do for today.  I would like to hear from people who use the ds2490 USB to
one wire dongle.  1 if you would be willing to test the patches as I
currently only have the one sensor on a short parisite powered wire, 2 if
there is any cheap sources for the ds2490.

Signed-off-by: David Fries <david@fries.net>
Acked-by: Evgeniy Polyakov <johnpol@2ka.mipt.ru>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2008-01-22 09:17:48 -08:00
..
masters W1: fix memset size error 2007-11-14 18:45:36 -08:00
slaves W1: w1_therm.c is flagging 0C etc as invalid 2008-01-22 09:17:48 -08:00
Kconfig Kbuild/doc: fix links to Documentation files 2007-10-30 14:26:30 -07:00
Makefile [PATCH] better CONFIG_W1_SLAVE_DS2433_CRC handling 2006-12-07 08:39:43 -08:00
w1.c w1: decrement slave counter only in ->release() callback 2008-01-14 08:52:22 -08:00
w1.h [PATCH] drivers/w1/w1.c: fix a compile error 2006-06-22 11:22:51 -07:00
w1_family.c [PATCH] W1: possible cleanups 2006-06-22 11:22:50 -07:00
w1_family.h [BATTERY] ds2760 W1 slave 2007-07-10 11:28:31 +01:00
w1_int.c w1: fix w1_remove_master_device() searching 2007-08-22 19:52:46 -07:00
w1_int.h [PATCH] w1: cleanups. 2005-06-21 21:43:09 -07:00
w1_io.c [PATCH] W1: possible cleanups 2006-06-22 11:22:50 -07:00
w1_log.h [PATCH] w1: cleanups. 2005-06-21 21:43:09 -07:00
w1_netlink.c [PATCH] w1: Use mutexes instead of semaphores. 2006-06-22 11:22:50 -07:00
w1_netlink.h [PATCH] w1: Move w1-connector definitions into linux/include/connector.h 2006-06-22 11:22:50 -07:00