It's been tested on my two systems (both are ASUS motherboards with the ADT7475 chip) and on two of Nicholas's machines (one with an ADM1027, the other with an ADT7463.
Support is still absent for the ADT7490 (at least until I figure out what all the new registers for PECI are for).
More testers would be appreciated, especially those who might want to play around with the parameters for the fan controllers, which are accessed via sysctl (try sysctl hw.dbcool0 to see what options exist). You might want to download the datasheet for your controller (from ON Semiconductor, http://www.onsemi.com/) before attempting to do this.
Any and all comments and test results greatly appreciated. On Sun, 14 Sep 2008, Paul Goyette wrote:
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 | ----------------------------------------------------------------------
---------------------------------------------------------------------- | 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 | ----------------------------------------------------------------------
Attachment:
dbcool.diff.gz
Description: Binary data