Kernel driver lm87
==================

Supported chips:
  * National Semiconductor LM87
    Prefix: 'lm87'
    Addresses scanned: I2C 0x2c - 0x2e
    Datasheet: http://www.national.com/pf/LM/LM87.html
  * Analog Devices ADM1024
    Prefix: 'adm1024'
    Addresses scanned: I2C 0x2c - 0x2e
    Datasheet: http://www.analog.com/en/prod/0,2877,ADM1024,00.html

Authors:
        Frodo Looijaard <frodol@dds.nl>,
        Philip Edelbrock <phil@netroedge.com>,
        Mark Studebaker <mdsxyz123@yahoo.com>,
        Stephen Rousset <stephen.rousset@rocketlogix.com>,
        Dan Eaton <dan.eaton@rocketlogix.com>,
        Jean Delvare <jdelvare@suse.de>,
        Original 2.6 port Jeff Oliver

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

This driver implements support for the National Semiconductor LM87
and the Analog Devices ADM1024.

The LM87 implements up to three temperature sensors, up to two fan
rotation speed sensors, up to seven voltage sensors, alarms, and some
miscellaneous stuff. The ADM1024 is fully compatible.

Temperatures are measured in degrees Celsius. Each input has a high
and low alarm settings. A high limit produces an alarm when the value
goes above it, and an alarm is also produced when the value goes below
the low limit.

Fan rotation speeds are reported in RPM (rotations per minute). An alarm is
triggered if the rotation speed has dropped below a programmable limit. Fan
readings can be divided by a programmable divider (1, 2, 4 or 8) to give
the readings more range or accuracy. Not all RPM values can accurately be
represented, so some rounding is done. With a divider of 2, the lowest
representable value is around 2600 RPM.

Voltage sensors (also known as IN sensors) report their values in
volts. An alarm is triggered if the voltage has crossed a programmable
minimum or maximum limit. Note that minimum in this case always means
'closest to zero'; this is important for negative voltage measurements.

If an alarm triggers, it will remain triggered until the hardware register
is read at least once. This means that the cause for the alarm may
already have disappeared! Note that in the current implementation, all
hardware registers are read whenever any data is read (unless it is less
than 1.0 seconds since the last update). This means that you can easily
miss once-only alarms.

The lm87 driver only updates its values each 1.0 seconds; reading it more
often will do no harm, but will return 'old' values.


Hardware Configurations
-----------------------

The LM87 has four pins which can serve one of two possible functions,
depending on the hardware configuration.

Some functions share pins, so not all functions are available at the same
time. Which are depends on the hardware setup. This driver normally
assumes that firmware configured the chip correctly. Where this is not
the case, platform code must set the I2C client's platform_data to point
to a u8 value to be written to the channel register.

For reference, here is the list of exclusive functions:
 - in0+in5 (default) or temp3
 - fan1 (default) or in6
 - fan2 (default) or in7
 - VID lines (default) or IRQ lines (not handled by this driver)
