Current-Users archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

New i2c driver available - dBCool Environmental Controllers



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



Home | Main Index | Thread Index | Old Index