Kernel driver `asb100.o'
========================

Status: Work in progress

Supported Chips:
  * Asus ASB100 and ASB100-A "Bach"
    Prefix: 'asb100'
    Addresses scanned: I2C 0x2d
    Datasheet: none released

Author: Mark M. Hoffman <mhoffman@lightlink.com>

Module Parameters
-----------------

<TODO: fill in here>

Asus' BIOS is often broken
--------------------------

If you have an Asus P4PE, you need to read prog/hotplug/README.p4b.

If you have any other (Asus) board for which sensors-detect finds neither
asb100 nor an I2C bus, please read prog/hotplug/README.p4b before sending
a bug report.

Description
-----------

This driver implements support for the Asus ASB100 and ASB100-A "Bach".  These
are custom ASICs available only on Asus mainboards.  Asus refuses to supply a
datasheet for these chips. Thanks go to many people who helped investigate
their hardware, including:

Vitaly V. Bursov
Alexander van Kaam (author of MBM for Windows)
Bertrik Sikken

The ASB100 implements seven voltage sensors, three fan rotation speed sensors,
four temperature sensors, VID lines and alarms.  In addition to these, the
ASB100-A also implements a single PWM controller for fans 2 and 3 (i.e. one
setting controls both.)  If you have a plain ASB100, the pwm controller will
simply not work (or maybe it will for you... it doesn't for me).

Temperatures are measured and reported in degrees Celsius.

Fan speeds are reported in RPM (rotations per minute).  An alarm is triggered
if the rotation speed has dropped below a programmable limit.

Voltage sensors (also known as IN sensors) report values in volts.

The VID lines encode the core voltage value: the voltage level your processor
should work with. This is hardcoded by the mainboard and/or processor itself.
It is a value in volts.

Alarms: (TODO question marks indicate may or may not work)

0x0001 => in0 (?)
0x0002 => in1 (?)
0x0004 => in2
0x0008 => in3
0x0010 => temp1 (1)
0x0020 => temp2
0x0040 => fan1
0x0080 => fan2
0x0100 => in4
0x0200 => in5 (?) (2)
0x0400 => in6 (?) (2)
0x0800 => fan3
0x1000 => chassis switch
0x2000 => temp3

Alarm Notes:

(1) This alarm will only trigger if the hysteresis value is 127C.
I.e. it behaves the same as w83781d.

(2) The min and max registers for these values appear to
be read-only or otherwise stuck at 0x00.

TODO:
* Experiment with fan divisors > 8.
* Experiment with temp. sensor types.
* Are there really 13 voltage inputs?  Probably not...
* Fix bogus client deregistration (like w83781d in 2.6).
* Fix fan divisor / fan minimum interaction (like lm78).
* Cleanups, no doubt...

