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 <jdelvare@suse.de>

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.
