summaryrefslogtreecommitdiff
path: root/sys/dev/i2c/adm1025.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/dev/i2c/adm1025.c')
-rw-r--r--sys/dev/i2c/adm1025.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/sys/dev/i2c/adm1025.c b/sys/dev/i2c/adm1025.c
index 7d99ee95070..eb82afe476b 100644
--- a/sys/dev/i2c/adm1025.c
+++ b/sys/dev/i2c/adm1025.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: adm1025.c,v 1.1 2005/12/22 22:57:27 deraadt Exp $ */
+/* $OpenBSD: adm1025.c,v 1.2 2005/12/22 23:16:49 deraadt Exp $ */
/*
* Copyright (c) 2005 Theo de Raadt
@@ -32,6 +32,8 @@
#define ADM1025_Vcc 0x25
#define ADM1025_EXT_TEMP 0x26
#define ADM1025_INT_TEMP 0x27
+#define ADM1025_STATUS2 0x42
+#define ADM1025_STATUS2_EXT 0x40
/* Sensors */
#define ADMTM_INT 0
@@ -48,7 +50,6 @@ struct admtm_softc {
struct device sc_dev;
i2c_tag_t sc_tag;
i2c_addr_t sc_addr;
- int sc_fanmul;
struct sensor sc_sensor[ADMTM_NUM_SENSORS];
};
@@ -154,6 +155,14 @@ admtm_refresh(void *arg)
sc->sc_addr, &cmd, sizeof cmd, &data, sizeof data, 0) == 0)
sc->sc_sensor[ADMTM_EXT].value = 273150000 + 1000000 * data;
+ cmd = ADM1025_STATUS2;
+ if (iic_exec(sc->sc_tag, I2C_OP_READ_WITH_STOP,
+ sc->sc_addr, &cmd, sizeof cmd, &data, sizeof data, 0) == 0) {
+ if (data & ADM1025_STATUS2_EXT)
+ sc->sc_sensor[ADMTM_EXT].flags |= SENSOR_FINVALID;
+ else
+ sc->sc_sensor[ADMTM_EXT].flags &= ~SENSOR_FINVALID;
+ }
cmd = ADM1025_V25;
if (iic_exec(sc->sc_tag, I2C_OP_READ_WITH_STOP,