Testers wanted / needed!I've just completed a first version of a single dbcool driver to manage the entire family of ON Semiconductor dBCool controllers. (This product line was acquired by On Semi from Analog Devices at the end of 2007.) The driver supports the following chips: ADT7463, ADT7467, ADT7468, ADT7473, ADT7473-1, ADT7475, ADT7476, and ADM1027. It also supports the ADT7466 despite it having a completely different register map.
Missing from this version of the driver is:
* ADT7490 support - it's not entirely obvious how to identify this one
* No sysmon_envsys() monitoring or reporting of hardware limits - this
capability does not exist in either of the existing drivers (for the
ADT7463 and ADT7467)
* No ability to set the hardware monitoring limits
The existing ADT7463 driver has a whole slew of register
initializations, but these should really be set up by the
machine's BIOS, in my opinion. User-land limits can be
set and monitored using sysmon_envsys()
I've tested the driver on a couple of my machines (both with ADT7475),
and it seems to work. But I can't for the life of me figure out why the
motherboard vendor (ASUS) spent US$3.50 on such a highly-capable chip
but only attached a single fan tach sensor (and didn't even enable fan
speed control)! :)
I'd really like some folks to test this driver, especially if you have sensors other than the ADT7475. Also, some of these chips are found on non-x86 platforms (some MacBooks?); it would be really great if someone with one of those machines could test.
Testing is easy:
1. Copy the driver files dbcool.c, dbcool_reg.h, and dbcool_var.h to
the .../src/sys/dev/i2c directory
2. Patch the files.i2c (in the same directory) using the attached
files.i2c.diff
3. Add a driver line to you kernel config file:
dbcool0 at iic? addr 0x2e
(Most chips have a single fixed i2c address, but there are a couple
that can live at 0x2c or 0x2d.)
4. If you already have adt7463c or adt7367c in your kernel file, remove
it. (You cannot configure the traditional driver and dbcool at the
same time.)
5. Build and boot your kernel.
Notes:
1. Unconnected temperature sensors may report a value of -64C (yes,
very cold). This is due to some chips using an "offset" for the
temp sensors to increase the covered range (-64 through +191).
2. Unconnected or stalled fans report a value of 4294967295 (yes,
very fast). Internally, this is a value of -1, but somewhere it's
getting changed to an unsigned number. The driver will be changed
to return 0 RPM for unconnected or stalled fans.
3. Setting fan controller values via sysctl isn't working.
Enjoy!
----------------------------------------------------------------------
| Paul Goyette | PGP DSS Key fingerprint: | E-mail addresses: |
| Customer Service | FA29 0E3B 35AF E8AE 6651 | paul%whooppee.com@localhost |
| Network Engineer | 0786 F758 55DE 53BA 7731 | pgoyette%juniper.net@localhost |
----------------------------------------------------------------------Index: files.i2c
===================================================================
RCS file: /cvsroot/src/sys/dev/i2c/files.i2c,v
retrieving revision 1.18
diff -u -p -r1.18 files.i2c
--- files.i2c 11 Sep 2008 20:48:50 -0000 1.18
+++ files.i2c 15 Sep 2008 01:49:13 -0000
@@ -71,6 +71,12 @@ device adt7467c: sysmon_envsys
attach adt7467c at iic
file dev/i2c/adt7467.c adt7467c
+# Analog Devices dBCool family of thermal monitors / fan controllers
+define dbcool {}
+device dbcool: sysmon_envsys
+attach dbcool at iic
+file dev/i2c/dbcool.c dbcool
+
# Analog Devices ADM 1030 thermal monitor / fan controller
define adm1030c {}
device adm1030c: sysmon_envsys
@@ -113,3 +119,8 @@ file dev/i2c/xbseeprom.c xbseeprom
device spdmem
attach spdmem at iic
file dev/i2c/spdmem.c spdmem
+
+# Memory Temp Sensor
+device sdtemp
+attach sdtemp at iic
+file dev/i2c/sdtemp.c sdtemp
Attachment:
dbcool-driver.tgz
Description: Binary data