Kernel driver it87
==================

Supported chips:
  * IT8705F
    Prefix: 'it87'
    Addresses scanned: from Super I/O config space, or default ISA 0x290 (8 I/O ports)
    Datasheet: Publicly available at the ITE website
               http://www.ite.com.tw/
  * IT8712F
    Prefix: 'it8712'
    Addresses scanned: I2C 0x28 - 0x2f
                       from Super I/O config space, or default ISA 0x290 (8 I/O ports)
    Datasheet: Publicly available at the ITE website
               http://www.ite.com.tw/
  * SiS950   [clone of IT8705F]
    Prefix: 'sis950'
    Addresses scanned: from Super I/O config space, or default ISA 0x290 (8 I/O ports)
    Datasheet: No longer be available

Author: Christophe Gauthron <chrisg@0-in.com>


Module Parameters
-----------------

* update_vbat: int

  0 if vbat should report power on value, 1 if vbat should be updated after
  each read. Default is 0. On some boards the battery voltage is provided
  by either the battery or the onboard power supply. Only the first reading
  at power on will be the actual battery voltage (which the chip does
  automatically). On other boards the battery voltage is always fed to
  the chip so can be read at any time. Excessive reading may decrease
  battery life but no information is given in the datasheet.

* fix_pwm_polarity int

  Force PWM polarity to active high (DANGEROUS). Some chips are
  misconfigured by BIOS - PWM values would be inverted. This option tries
  to fix this. Please contact your BIOS manufacturer and ask him for fix.

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

This driver implements support for the IT8705F, IT8712F and SiS950 chips.

This driver also supports IT8712F, which adds SMBus access, and a VID
input, used to report the Vcore voltage of the Pentium processor.
The IT8712F additionally features VID inputs.

These chips are 'Super I/O chips', supporting floppy disks, infrared ports,
joysticks and other miscellaneous stuff. For hardware monitoring, they
include an 'environment controller' with 3 temperature sensors, 3 fan
rotation speed sensors, 8 voltage sensors, and associated alarms.

Temperatures are measured in degrees Celsius. An alarm is triggered once
when the Overtemperature Shutdown limit is crossed.

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. All voltage
inputs can measure voltages between 0 and 4.08 volts, with a resolution of
0.016 volt. The battery voltage in8 does not have limit registers.

The VID lines (IT8712F only) encode the core voltage value: the voltage
level your processor should work with. This is hardcoded by the mainboard
and/or processor itself. It is a value in volts.

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.5
seconds since the last update). This means that you can easily miss
once-only alarms.

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

To change sensor N to a thermistor, 'echo 2 > tempN_type' where N is 1, 2,
or 3. To change sensor N to a thermal diode, 'echo 3 > tempN_type'.
Give 0 for unused sensor. Any other value is invalid. To configure this at
startup, consult lm_sensors's /etc/sensors.conf. (2 = thermistor;
3 = thermal diode)

The fan speed control features are limited to manual PWM mode. Automatic
"Smart Guardian" mode control handling is not implemented. However
if you want to go for "manual mode" just write 1 to pwmN_enable.
