summaryrefslogtreecommitdiff
path: root/sys/dev
diff options
context:
space:
mode:
Diffstat (limited to 'sys/dev')
-rw-r--r--sys/dev/i2c/dbcool.c65
-rw-r--r--sys/dev/i2c/dbcool_reg.h17
2 files changed, 76 insertions, 6 deletions
diff --git a/sys/dev/i2c/dbcool.c b/sys/dev/i2c/dbcool.c
index ad4fb5ee815..c0509a2fa0e 100644
--- a/sys/dev/i2c/dbcool.c
+++ b/sys/dev/i2c/dbcool.c
@@ -1,4 +1,4 @@
-/* $NetBSD: dbcool.c,v 1.21 2010/03/31 18:07:13 macallan Exp $ */
+/* $NetBSD: dbcool.c,v 1.22 2010/04/01 04:29:35 macallan Exp $ */
/*-
* Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -49,7 +49,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: dbcool.c,v 1.21 2010/03/31 18:07:13 macallan Exp $");
+__KERNEL_RCSID(0, "$NetBSD: dbcool.c,v 1.22 2010/04/01 04:29:35 macallan Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -529,7 +529,7 @@ struct dbcool_sensor ADM1030_sensor_table[] = {
{ DBC_CTL, { DBCOOL_ADM1030_R_TMIN,
DBCOOL_NO_REG,
DBCOOL_NO_REG }, 1, 8, 0 },
- { DBC_CTL, { DBCOOL_ADM1030_L_TTHRESH,
+ { DBC_CTL, { DBCOOL_ADM1030_R_TTHRESH,
DBCOOL_NO_REG,
DBCOOL_NO_REG }, 1, 9, 0 },
{ DBC_CTL, { DBCOOL_ADM1030_R_TTHRESH,
@@ -545,6 +545,61 @@ struct dbcool_power_control ADM1030_power_table[] = {
{ { 0, 0, 0, 0 }, NULL }
};
+struct dbcool_sensor ADM1031_sensor_table[] = {
+ { DBC_TEMP, { DBCOOL_ADM1030_L_TEMP,
+ DBCOOL_ADM1030_L_HI_LIM,
+ DBCOOL_ADM1030_L_LO_LIM }, 0, 0, 0 },
+ { DBC_TEMP, { DBCOOL_ADM1030_R_TEMP,
+ DBCOOL_ADM1030_R_HI_LIM,
+ DBCOOL_ADM1030_R_LO_LIM }, 1, 0, 0 },
+ { DBC_TEMP, { DBCOOL_ADM1031_R2_TEMP,
+ DBCOOL_ADM1031_R2_HI_LIM,
+ DBCOOL_ADM1031_R2_LO_LIM }, 2, 0, 0 },
+ { DBC_FAN, { DBCOOL_ADM1030_FAN_TACH,
+ DBCOOL_NO_REG,
+ DBCOOL_ADM1030_FAN_LO_LIM }, 5, 0, 0 },
+ { DBC_FAN, { DBCOOL_ADM1031_FAN2_TACH,
+ DBCOOL_NO_REG,
+ DBCOOL_ADM1031_FAN2_LO_LIM }, 6, 0, 0 },
+ { DBC_CTL, { DBCOOL_ADM1030_L_TMIN,
+ DBCOOL_NO_REG,
+ DBCOOL_NO_REG }, 0, 8, 0 },
+ { DBC_CTL, { DBCOOL_ADM1030_L_TTHRESH,
+ DBCOOL_NO_REG,
+ DBCOOL_NO_REG }, 0, 9, 0 },
+ { DBC_CTL, { DBCOOL_ADM1030_L_TTHRESH,
+ DBCOOL_NO_REG,
+ DBCOOL_NO_REG }, 0, 6, 0 },
+ { DBC_CTL, { DBCOOL_ADM1030_R_TMIN,
+ DBCOOL_NO_REG,
+ DBCOOL_NO_REG }, 1, 8, 0 },
+ { DBC_CTL, { DBCOOL_ADM1030_R_TTHRESH,
+ DBCOOL_NO_REG,
+ DBCOOL_NO_REG }, 1, 9, 0 },
+ { DBC_CTL, { DBCOOL_ADM1030_R_TTHRESH,
+ DBCOOL_NO_REG,
+ DBCOOL_NO_REG }, 1, 6, 0 },
+ { DBC_CTL, { DBCOOL_ADM1031_R2_TMIN,
+ DBCOOL_NO_REG,
+ DBCOOL_NO_REG }, 2, 8, 0 },
+ { DBC_CTL, { DBCOOL_ADM1031_R2_TTHRESH,
+ DBCOOL_NO_REG,
+ DBCOOL_NO_REG }, 2, 9, 0 },
+ { DBC_CTL, { DBCOOL_ADM1031_R2_TTHRESH,
+ DBCOOL_NO_REG,
+ DBCOOL_NO_REG }, 2, 6, 0 },
+ { DBC_EOF, {0, 0, 0 }, 0, 0, 0 }
+};
+
+struct dbcool_power_control ADM1031_power_table[] = {
+ { { DBCOOL_ADM1030_CFG1, DBCOOL_NO_REG, DBCOOL_NO_REG,
+ DBCOOL_ADM1030_FAN_SPEED_CFG },
+ "fan_control_1" },
+ { { DBCOOL_ADM1030_CFG1, DBCOOL_NO_REG, DBCOOL_NO_REG,
+ DBCOOL_ADM1030_FAN_SPEED_CFG },
+ "fan_control_2" },
+ { { 0, 0, 0, 0 }, NULL }
+};
struct chip_id chip_table[] = {
{ DBCOOL_COMPANYID, ADT7490_DEVICEID, ADT7490_REV_ID,
ADT7490_sensor_table, ADT7475_power_table,
@@ -593,7 +648,7 @@ struct chip_id chip_table[] = {
DBCFLAG_ADM1030 | DBCFLAG_NO_READBYTE,
11250 * 60, "ADM1030" },
{ DBCOOL_COMPANYID, ADM1031_DEVICEID, 0xff,
- ADM1030_sensor_table, ADM1030_power_table,
+ ADM1031_sensor_table, ADM1030_power_table,
DBCFLAG_ADM1030 | DBCFLAG_NO_READBYTE,
11250 * 60, "ADM1031" },
{ 0, 0, 0, NULL, NULL, 0, 0, NULL }
@@ -794,6 +849,8 @@ dbcool_read_temp(struct dbcool_softc *sc, uint8_t reg, bool extres)
ext = sc->sc_dc.dc_readreg(&sc->sc_dc, DBCOOL_ADM1030_TEMP_EXTRES);
if (reg == DBCOOL_ADM1030_L_TEMP)
ext >>= 6;
+ else if (reg == DBCOOL_ADM1031_R2_TEMP)
+ ext >>= 4;
else
ext >>= 1;
ext &= 0x03;
diff --git a/sys/dev/i2c/dbcool_reg.h b/sys/dev/i2c/dbcool_reg.h
index bfa95244f5b..6c289b8548a 100644
--- a/sys/dev/i2c/dbcool_reg.h
+++ b/sys/dev/i2c/dbcool_reg.h
@@ -1,4 +1,4 @@
-/* $NetBSD: dbcool_reg.h,v 1.4 2010/03/31 18:07:13 macallan Exp $ */
+/* $NetBSD: dbcool_reg.h,v 1.5 2010/04/01 04:29:35 macallan Exp $ */
/*-
* Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -37,7 +37,7 @@
#define DBCOOLREG_H
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: dbcool_reg.h,v 1.4 2010/03/31 18:07:13 macallan Exp $");
+__KERNEL_RCSID(0, "$NetBSD: dbcool_reg.h,v 1.5 2010/04/01 04:29:35 macallan Exp $");
#define DBCOOL_ADDRMASK 0x7c
#define DBCOOL_ADDR 0x2c /* Some chips have multiple addrs */
@@ -321,6 +321,10 @@ __KERNEL_RCSID(0, "$NetBSD: dbcool_reg.h,v 1.4 2010/03/31 18:07:13 macallan Exp
/*
* Even though it's not really a member of the dbCool family, we also
* support the ADM1030 chip. It has a different register set.
+ * the ADM1030 is in fact a cut down ADM1031 - the register set is identical
+ * except the registers used for the extra temperature and fan control sensors
+ * DBCOOL_ADM1030_* are present in both chips with identical functionality
+ * DBCOOL_ADM1031_* are ADM1031 only
*/
#define DBCOOL_ADM1030_CFG1 0x00
#define DBCOOL_ADM1030_CFG2 0x01
@@ -329,22 +333,31 @@ __KERNEL_RCSID(0, "$NetBSD: dbcool_reg.h,v 1.4 2010/03/31 18:07:13 macallan Exp
#define DBCOOL_ADM1030_TEMP_EXTRES 0x06
#define DBCOOL_ADM1030_TEST_REG 0x07
#define DBCOOL_ADM1030_FAN_TACH 0x08
+#define DBCOOL_ADM1031_FAN2_TACH 0x09
#define DBCOOL_ADM1030_L_TEMP 0x0A
#define DBCOOL_ADM1030_R_TEMP 0x0B
+#define DBCOOL_ADM1031_R2_TEMP 0x0C
#define DBCOOL_ADM1030_L_OFFSET 0x0D
#define DBCOOL_ADM1030_R_OFFSET 0x0E
+#define DBCOOL_ADM1031_R2_OFFSET 0x0F
#define DBCOOL_ADM1030_FAN_LO_LIM 0x10
+#define DBCOOL_ADM1031_FAN2_LO_LIM 0x11
#define DBCOOL_ADM1030_L_HI_LIM 0x14
#define DBCOOL_ADM1030_L_LO_LIM 0x15
#define DBCOOL_ADM1030_L_TTHRESH 0x16
#define DBCOOL_ADM1030_R_HI_LIM 0x18
#define DBCOOL_ADM1030_R_LO_LIM 0x19
#define DBCOOL_ADM1030_R_TTHRESH 0x1A
+#define DBCOOL_ADM1031_R2_HI_LIM 0x1C
+#define DBCOOL_ADM1031_R2_LO_LIM 0x1D
+#define DBCOOL_ADM1031_R2_TTHRESH 0x1E
#define DBCOOL_ADM1030_FAN_CHAR 0x20
+#define DBCOOL_ADM1031_FAN2_CHAR 0x21
#define DBCOOL_ADM1030_FAN_SPEED_CFG 0x22
#define DBCOOL_ADM1030_FAN_FILTER 0x23
#define DBCOOL_ADM1030_L_TMIN 0x24
#define DBCOOL_ADM1030_R_TMIN 0x25
+#define DBCOOL_ADM1031_R2_TMIN 0x26
#define DBCOOL_ADM1030_DEVICEID DBCOOL_DEVICEID_REG
#define DBCOOL_ADM1030_COMPANYID DBCOOL_COMPANYID_REG
#define DBCOOL_ADM1030_REVISION DBCOOL_REVISION_REG