Module Name:    src
Committed By:   macallan
Date:           Thu Apr  1 04:29:35 UTC 2010

Modified Files:
        src/sys/dev/i2c: dbcool.c dbcool_reg.h

Log Message:
add some more ADM1031 support:
- additional temperature and fan speed sensors work now
- limits on should work on all temperature sensors
Controlling fan behaviour doesn't work yet, the ADM1031 uses the same
register for both fans which doesn't quite fit with the way the dbcool
driver works.


To generate a diff of this commit:
cvs rdiff -u -r1.21 -r1.22 src/sys/dev/i2c/dbcool.c
cvs rdiff -u -r1.4 -r1.5 src/sys/dev/i2c/dbcool_reg.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/dev/i2c/dbcool.c
diff -u src/sys/dev/i2c/dbcool.c:1.21 src/sys/dev/i2c/dbcool.c:1.22
--- src/sys/dev/i2c/dbcool.c:1.21	Wed Mar 31 18:07:13 2010
+++ src/sys/dev/i2c/dbcool.c	Thu Apr  1 04:29:35 2010
@@ -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 @@
 	{ 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 @@
 	{ { 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 @@
 		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 @@
 			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;

Index: src/sys/dev/i2c/dbcool_reg.h
diff -u src/sys/dev/i2c/dbcool_reg.h:1.4 src/sys/dev/i2c/dbcool_reg.h:1.5
--- src/sys/dev/i2c/dbcool_reg.h:1.4	Wed Mar 31 18:07:13 2010
+++ src/sys/dev/i2c/dbcool_reg.h	Thu Apr  1 04:29:35 2010
@@ -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 @@
 /*
  * 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 @@
 #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

Reply via email to