diff options
Diffstat (limited to 'sys/dev')
| -rw-r--r-- | sys/dev/i2c/dbcool.c | 65 | ||||
| -rw-r--r-- | sys/dev/i2c/dbcool_reg.h | 17 |
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 |
