Kernel driver adm9240
=====================

Supported chips:
  * Analog Devices ADM9240
    Prefix: 'adm9240'
    Addresses scanned: I2C 0x2c - 0x2f
    Datasheet: Publicly available at the Analog Devices website
    http://www.analog.com/UploadedFiles/Data_Sheets/79857778ADM9240_0.pdf

  * Dallas Semiconductor DS1780
    Prefix: 'ds1780'
    Addresses scanned: I2C 0x2c - 0x2f
    Datasheet: Publicly available at the Dallas Semiconductor (Maxim) website
    http://pdfserv.maxim-ic.com/en/ds/DS1780.pdf

  * National Semiconductor LM81
    Prefix: 'lm81'
    Addresses scanned: I2C 0x2c - 0x2f
    Datasheet: Publicly available at the National Semiconductor website
    http://www.national.com/ds.cgi/LM/LM81.pdf

Authors:
    Frodo Looijaard <frodol@dds.nl>,
    Philip Edelbrock <phil@netroedge.com>,
    Michiel Rook <michiel@grendelproject.nl>,
    Grant Coady <gcoady.lk@gmail.com> with guidance
        from Jean Delvare <khali@linux-fr.org>

Interface
---------
The I2C addresses listed above assume BIOS has not changed the
chip MSB 5-bit address. Each chip reports a unique manufacturer
identification code as well as the chip revision/stepping level.

Description
-----------
[From ADM9240] The ADM9240 is a complete system hardware monitor for
microprocessor-based systems, providing measurement and limit comparison
of up to four power supplies and two processor core voltages, plus
temperature, two fan speeds and chassis intrusion. Measured values can
be read out via an I2C-compatible serial System Management Bus, and values
for limit comparisons can be programmed in over the same serial bus. The
high speed successive approximation ADC allows frequent sampling of all
analog channels to ensure a fast interrupt response to any out-of-limit
measurement.

The ADM9240, DS1780 and LM81 are register compatible, the following
details are common to the three chips. Chip differences are described
after this section.


Measurements
------------
The measurement cycle

The adm9240 driver will take a measurement reading no faster than once
each two seconds. User-space may read sysfs interface faster than the
measurement update rate and will receive cached data from the most
recent measurement.

ADM9240 has a very fast 320us temperature and voltage measurement cycle
with independent fan speed measurement cycles counting alternating rising
edges of the fan tacho inputs.

DS1780 measurement cycle is about once per second including fan speed.

LM81 measurement cycle is about once per 400ms including fan speed.
The LM81 12-bit extended temperature measurement mode is not supported.

Temperature
-----------
On chip temperature is reported as degrees Celsius as 9-bit signed data
with resolution of 0.5 degrees Celsius. High and low temperature limits
are 8-bit signed data with resolution of one degree Celsius.

Temperature alarm is asserted once the temperature exceeds the high limit,
and is cleared when the temperature falls below the temp1_max_hyst value.

Fan Speed
---------
Two fan tacho inputs are provided, the ADM9240 gates an internal 22.5kHz
clock via a divider to an 8-bit counter. Fan speed (rpm) is calculated by:

rpm = (22500 * 60) / (count * divider)

Automatic fan clock divider

  * User sets 0 to fan_min limit
    - low speed alarm is disabled
    - fan clock divider not changed
    - auto fan clock adjuster enabled for valid fan speed reading

  * User sets fan_min limit too low
    - low speed alarm is enabled
    - fan clock divider set to max
    - fan_min set to register value 254 which corresponds
      to 664 rpm on adm9240
    - low speed alarm will be asserted if fan speed is
      less than minimum measurable speed
    - auto fan clock adjuster disabled

  * User sets reasonable fan speed
    - low speed alarm is enabled
    - fan clock divider set to suit fan_min
    - auto fan clock adjuster enabled: adjusts fan_min

  * User sets unreasonably high low fan speed limit
    - resolution of the low speed limit may be reduced
    - alarm will be asserted
    - auto fan clock adjuster enabled: adjusts fan_min

    * fan speed may be displayed as zero until the auto fan clock divider
      adjuster brings fan speed clock divider back into chip measurement
      range, this will occur within a few measurement cycles.

Analog Output
-------------
An analog output provides a 0 to 1.25 volt signal intended for an external
fan speed amplifier circuit. The analog output is set to maximum value on
power up or reset. This doesn't do much on the test Intel SE440BX-2.

Voltage Monitor

Voltage (IN) measurement is internally scaled:

    nr  label       nominal     maximum   resolution
                      mV          mV         mV
    0   +2.5V        2500        3320       13.0
    1   Vccp1        2700        3600       14.1
    2   +3.3V        3300        4380       17.2
    3     +5V        5000        6640       26.0
    4    +12V       12000       15940       62.5
    5   Vccp2        2700        3600       14.1

The reading is an unsigned 8-bit value, nominal voltage measurement is
represented by a reading of 192, being 3/4 of the measurement range.

An alarm is asserted for any voltage going below or above the set limits.

The driver reports and accepts voltage limits scaled to the above table.

VID Monitor
-----------
The chip has five inputs to read the 5-bit VID and reports the mV value
based on detected CPU type.

Chassis Intrusion
-----------------
An alarm is asserted when the CI pin goes active high. The ADM9240
Datasheet has an example of an external temperature sensor driving
this pin. On an Intel SE440BX-2 the Chassis Intrusion header is
connected to a normally open switch.

The ADM9240 provides an internal open drain on this line, and may output
a 20 ms active low pulse to reset an external Chassis Intrusion latch.

Clear the CI latch by writing value 0 to the sysfs intrusion0_alarm file.

Alarm flags reported as 16-bit word

    bit     label               comment
    ---     -------------       --------------------------
     0      +2.5 V_Error        high or low limit exceeded
     1      VCCP_Error          high or low limit exceeded
     2      +3.3 V_Error        high or low limit exceeded
     3      +5 V_Error          high or low limit exceeded
     4      Temp_Error          temperature error
     6      FAN1_Error          fan low limit exceeded
     7      FAN2_Error          fan low limit exceeded
     8      +12 V_Error         high or low limit exceeded
     9      VCCP2_Error         high or low limit exceeded
    12      Chassis_Error       CI pin went high

Remaining bits are reserved and thus undefined. It is important to note
that alarm bits may be cleared on read, user-space may latch alarms and
provide the end-user with a method to clear alarm memory.
