Kernel driver adt7410
=====================

Supported chips:
  * Analog Devices ADT7410
    Prefix: 'adt7410'
    Addresses scanned: None
    Datasheet: Publicly available at the Analog Devices website
               http://www.analog.com/static/imported-files/data_sheets/ADT7410.pdf
  * Analog Devices ADT7420
    Prefix: 'adt7420'
    Addresses scanned: None
    Datasheet: Publicly available at the Analog Devices website
               http://www.analog.com/static/imported-files/data_sheets/ADT7420.pdf
  * Analog Devices ADT7310
    Prefix: 'adt7310'
    Addresses scanned: None
    Datasheet: Publicly available at the Analog Devices website
               http://www.analog.com/static/imported-files/data_sheets/ADT7310.pdf
  * Analog Devices ADT7320
    Prefix: 'adt7320'
    Addresses scanned: None
    Datasheet: Publicly available at the Analog Devices website
               http://www.analog.com/static/imported-files/data_sheets/ADT7320.pdf

Author: Hartmut Knaack <knaack.h@gmx.de>

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

The ADT7310/ADT7410 is a temperature sensor with rated temperature range of
-55°C to +150°C. It has a high accuracy of +/-0.5°C and can be operated at a
resolution of 13 bits (0.0625°C) or 16 bits (0.0078°C). The sensor provides an
INT pin to indicate that a minimum or maximum temperature set point has been
exceeded, as well as a critical temperature (CT) pin to indicate that the
critical temperature set point has been exceeded. Both pins can be set up with a
common hysteresis of 0°C - 15°C and a fault queue, ranging from 1 to 4 events.
Both pins can individually set to be active-low or active-high, while the whole
device can either run in comparator mode or interrupt mode. The ADT7410 supports
continuous temperature sampling, as well as sampling one temperature value per
second or even just get one sample on demand for power saving. Besides, it can
completely power down its ADC, if power management is required.

The ADT7320/ADT7420 is register compatible, the only differences being the
package, a slightly narrower operating temperature range (-40°C to +150°C), and
a better accuracy (0.25°C instead of 0.50°C.)

The difference between the ADT7310/ADT7320 and ADT7410/ADT7420 is the control
interface, the ADT7310 and ADT7320 use SPI while the ADT7410 and ADT7420 use
I2C.

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

Since the device uses one hysteresis value, which is an offset to minimum,
maximum and critical temperature, it can only be set for temp#_max_hyst.
However, temp#_min_hyst and temp#_crit_hyst show their corresponding
hysteresis.
The device is set to 16 bit resolution and comparator mode.

sysfs-Interface
---------------

temp#_input		- temperature input
temp#_min		- temperature minimum setpoint
temp#_max		- temperature maximum setpoint
temp#_crit		- critical temperature setpoint
temp#_min_hyst		- hysteresis for temperature minimum (read-only)
temp#_max_hyst		- hysteresis for temperature maximum (read/write)
temp#_crit_hyst		- hysteresis for critical temperature (read-only)
temp#_min_alarm		- temperature minimum alarm flag
temp#_max_alarm		- temperature maximum alarm flag
temp#_crit_alarm	- critical temperature alarm flag
