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)
