This file documents the adm9240 directories for the Analog Devices
ADM9240 hardware health monitoring chip found on some Intel mainboards
(and others?).

There will be one directory created for each detected ADM9240 chip.
Each chip must be on the SMBus. Directories are called things
like adm9240-i2c-1-2c. /proc/sys/dev/sensors/chips contains the SYSCTL
values for all chip directories.

Within each ADM9240 directory, you can find the following files:
* alarms (ADM9240_SYSCTL_ALARMS)
  A number which indicates which alarms are on. An alarm gets triggered when
  some limit has been crossed. This number is composed from a 16 bit
  value which is the combination of the Interrupt Status Register 1
  (low byte) and 2 (high byte).
  This file can not be written to.
  The number is the logical OR of the following components (bit #
  followed by a description):
  
0 +2.5 V_Error Read Only A "1" indicates a high or low limit has been exceeded.
1 VCCP_Error Read Only A "1" indicates a high or low limit has been exceeded.
2 +3.3 V_Error Read Only A "1" indicates a high or low limit has been exceeded.
3 +5 V_Error Read Only A "1" indicates a high or low limit has been exceeded.
4 Temp_Error Read Only A "1" indicates that a temperature interrupt has been set.
5 Reserved Read Only Undefined.
6 FAN1_Error Read Only A "1" indicates that a fan count limit has been exceeded.
7 FAN2_Error Read Only A "1" indicates that a fan count limit has been exceeded.
8 +12 V_Error Read Only A "1" indicates a high or low limit has been exceeded.
9 VCCP2_Error Read Only A "1" indicates a high or low limit has been exceeded.
10 Reserved Read Only Undefined.
11 Reserved Read Only Undefined.
12 Chassis_Error Read Only A "1" indicates chassis intrusion has gone high.
13 Reserved Read Only Undefined.
14 Reserved Read Only Undefined.
15 Reserved Read Only Undefined.

  If accessed through sysctl, this value is a long.
* fan[1-3] (ADM9240_SYSCTL_FAN[1-2])
  A list of two numbers. The first is the minimum fan rotation limit; the
  second is the current fan rotation speed. Both are in RPM (rotations per
  minute). An alarm is triggered if the rotation speed drops below the
  limit. The first value can be changed. Not all RPM values can accurately
  be represented, so some rounding is done.
  If accessed through sysctl, this is a list of longs.
* fan_div (LM78_SYSCTL_FAN_DIV)
  A list of two numbers, one for each fan. Each number can be either 1, 2,
  4 or 8. It is the internal scaling factor used for the FAN rotations. If
  you change this number, the FAN readings get more or less detailed, but
  the range in which they can be read too. Higher numbers give better 
  resolution, but less range. The first two numbers can be changed, the
  third not.
  If accessed through sysctl, this is a list of longs.
* 2.5V, Vccp1, 3.3V, 5V, 12V, and Vccp2 (ADM9240_SYSCTL_IN[0-5] in the
order shown)
  A list of three numbers. The first is the minimum limit, the second is the
  maximum limit, and the third is the current value.  Note that
  minimum means 'closest to zero'; so if the normal value equals -10, a
  minimum could equal -9, and a maximum -11. Vccp1 and Vccp2 reflect core
  voltages; they are by default set from the vid values, or set to 2.80V
  if the vid lines seem to be unconnected. Not all voltage values
  can be accurately represented, so some rounding is done.
  The first two numbers can be changed, the third not.
  If accessed through sysctl, this is a list of longs, each being the voltage
  times 100.
* temp
  A list of three numbers. The first number is the Overtemperature Shutdown
  value; the second is the Hysteris value and the third number is the
  current value. The first two values can be modified. All values are in
  degrees Celcius. An alarm is issued when the temperature first gets above
  the Overtemperature Shutdown value; no more alarms are issued until the
  temperature gets below the Hysteris value, at which moment another alarm
  is issued, and the state is reset. A more useful behaviour can be found
  by setting the Hysteris value to +127 degrees Celcius; in this case, 
  alarms are issued during all the time when the actual temperature is 
  above the Overtemperature Shutdown value.
  The first two numbers can be changed, the third not.
  If accessed through sysctl, this is a list of longs, each being the
  temperature in degrees Celcius times 10.
* vid
  The core voltage value (the voltage level your processor should work with),
  in volts. This is the value IN0 and IN1 are initialized to. If unconnected,
  it usually reads 3.50V.
  This number can not be changed.
  If accessed through sysctl, this is a long, being the voltage times 100.
* analog_out
   This is feature is specific to the ADM9240.  It is a DAC voltage
   control register for the Analog-Out pin.  Valid values are from 255
   to 0 (with 255 being the highest voltage, and 0 the lowest).  From
   the docs: "TheADM9240 has a single analog output from an unsigned
   8-bit DAC which produces 0 V - 1.25 V."

The data for each ADM9240 is updated each 1.5 seconds, but only if it is actually
read.

Note: Much of this documentation is copied from the LM78 documenation
(the device from which most featuers of the ADM9240 is modelled from).
The maintainer of the ADM9240 is Philip Edelbrock
<phil@netroedge.com>; please forward corrections, suggestions, etc.
to him.  For further technical information on this chip, I suggest
getting the Acrobat PDF documentation from www.analog.com.
