Kernel driver adt7462
======================

Supported chips:
  * Analog Devices ADT7462
    Prefix: 'adt7462'
    Addresses scanned: I2C 0x58, 0x5C
    Datasheet: Publicly available at the Analog Devices website

Author: Darrick J. Wong

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

This driver implements support for the Analog Devices ADT7462 chip family.

This chip is a bit of a beast.  It has 8 counters for measuring fan speed.  It
can also measure 13 voltages or 4 temperatures, or various combinations of the
two.  See the chip documentation for more details about the exact set of
configurations.  This driver does not allow one to configure the chip; that is
left to the system designer.

A sophisticated control system for the PWM outputs is designed into the ADT7462
that allows fan speed to be adjusted automatically based on any of the three
temperature sensors. Each PWM output is individually adjustable and
programmable. Once configured, the ADT7462 will adjust the PWM outputs in
response to the measured temperatures without further host intervention.  This
feature can also be disabled for manual control of the PWM's.

Each of the measured inputs (voltage, temperature, fan speed) has
corresponding high/low limit values. The ADT7462 will signal an ALARM if
any measured value exceeds either limit.

The ADT7462 samples all inputs continuously. The driver will not read
the registers more often than once every other second. Further,
configuration data is only read once per minute.

Special Features
----------------

The ADT7462 have a 10-bit ADC and can therefore measure temperatures
with 0.25 degC resolution.

The Analog Devices datasheet is very detailed and describes a procedure for
determining an optimal configuration for the automatic PWM control.

The driver will report sensor labels when it is able to determine that
information from the configuration registers.

Configuration Notes
-------------------

Besides standard interfaces driver adds the following:

* PWM Control

* pwm#_auto_point1_pwm and temp#_auto_point1_temp and
* pwm#_auto_point2_pwm and temp#_auto_point2_temp -

point1: Set the pwm speed at a lower temperature bound.
point2: Set the pwm speed at a higher temperature bound.

The ADT7462 will scale the pwm between the lower and higher pwm speed when
the temperature is between the two temperature boundaries.  PWM values range
from 0 (off) to 255 (full speed).  Fan speed will be set to maximum when the
temperature sensor associated with the PWM control exceeds temp#_max.

