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