summaryrefslogtreecommitdiffstats
path: root/sys/dev
diff options
context:
space:
mode:
authorkettenis <kettenis@openbsd.org>2009-08-12 17:13:30 +0000
committerkettenis <kettenis@openbsd.org>2009-08-12 17:13:30 +0000
commit668e025f7e478541a1c51bd0e6d493f55783fefc (patch)
tree32deb5e24b420c42a78bab4e5fe6432051e7e3d9 /sys/dev
parentix currently relies on a gcc extension that removes a comma (diff)
downloadwireguard-openbsd-668e025f7e478541a1c51bd0e6d493f55783fefc.tar.xz
wireguard-openbsd-668e025f7e478541a1c51bd0e6d493f55783fefc.zip
Mark sensor as invalid if the i2c transaction to read its value fails.
ok deraadt@
Diffstat (limited to 'sys/dev')
-rw-r--r--sys/dev/i2c/ds1631.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/sys/dev/i2c/ds1631.c b/sys/dev/i2c/ds1631.c
index 946e2dc354c..4e18aeee5ed 100644
--- a/sys/dev/i2c/ds1631.c
+++ b/sys/dev/i2c/ds1631.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: ds1631.c,v 1.10 2008/04/17 19:01:48 deraadt Exp $ */
+/* $OpenBSD: ds1631.c,v 1.11 2009/08/12 17:13:30 kettenis Exp $ */
/*
* Copyright (c) 2005 Theo de Raadt
@@ -143,9 +143,12 @@ maxds_refresh(void *arg)
cmd = DS1631_TEMP;
if (iic_exec(sc->sc_tag, I2C_OP_READ_WITH_STOP,
- sc->sc_addr, &cmd, sizeof cmd, &data, sizeof data, 0) == 0)
+ sc->sc_addr, &cmd, sizeof cmd, &data, sizeof data, 0) == 0) {
sc->sc_sensor[MAXDS_TEMP].value = 273150000 +
(int)(betoh16(data)) / 8 * 31250;
+ sc->sc_sensor[MAXDS_TEMP].flags &= ~SENSOR_FINVALID;
+ } else
+ sc->sc_sensor[MAXDS_TEMP].flags |= SENSOR_FINVALID;
iic_release_bus(sc->sc_tag, 0);
}