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

Supported chips:

  * IT8603E/IT8623E

    Prefix: 'it8603'

    Addresses scanned: from Super I/O config space (8 I/O ports)

    Datasheet: Not publicly available

  * IT8620E

    Prefix: 'it8620'

    Addresses scanned: from Super I/O config space (8 I/O ports)

  * IT8628E

    Prefix: 'it8628'

    Addresses scanned: from Super I/O config space (8 I/O ports)

    Datasheet: Not publicly available

  * IT8705F

    Prefix: 'it87'

    Addresses scanned: from Super I/O config space (8 I/O ports)

    Datasheet: Once publicly available at the ITE website, but no longer

  * IT8712F

    Prefix: 'it8712'

    Addresses scanned: from Super I/O config space (8 I/O ports)

    Datasheet: Once publicly available at the ITE website, but no longer

  * IT8716F/IT8726F

    Prefix: 'it8716'

    Addresses scanned: from Super I/O config space (8 I/O ports)

    Datasheet: Once publicly available at the ITE website, but no longer

  * IT8718F

    Prefix: 'it8718'

    Addresses scanned: from Super I/O config space (8 I/O ports)

    Datasheet: Once publicly available at the ITE website, but no longer

  * IT8720F

    Prefix: 'it8720'

    Addresses scanned: from Super I/O config space (8 I/O ports)

    Datasheet: Not publicly available

  * IT8721F/IT8758E

    Prefix: 'it8721'

    Addresses scanned: from Super I/O config space (8 I/O ports)

    Datasheet: Not publicly available

  * IT8728F

    Prefix: 'it8728'

    Addresses scanned: from Super I/O config space (8 I/O ports)

    Datasheet: Not publicly available

  * IT8732F

    Prefix: 'it8732'

    Addresses scanned: from Super I/O config space (8 I/O ports)

    Datasheet: Not publicly available

  * IT8771E

    Prefix: 'it8771'

    Addresses scanned: from Super I/O config space (8 I/O ports)

    Datasheet: Not publicly available

  * IT8772E

    Prefix: 'it8772'

    Addresses scanned: from Super I/O config space (8 I/O ports)

    Datasheet: Not publicly available

  * IT8781F

    Prefix: 'it8781'

    Addresses scanned: from Super I/O config space (8 I/O ports)

    Datasheet: Not publicly available

  * IT8782F

    Prefix: 'it8782'

    Addresses scanned: from Super I/O config space (8 I/O ports)

    Datasheet: Not publicly available

  * IT8783E/F

    Prefix: 'it8783'

    Addresses scanned: from Super I/O config space (8 I/O ports)

    Datasheet: Not publicly available

  * IT8786E

    Prefix: 'it8786'

    Addresses scanned: from Super I/O config space (8 I/O ports)

    Datasheet: Not publicly available

  * IT8790E

    Prefix: 'it8790'

    Addresses scanned: from Super I/O config space (8 I/O ports)

    Datasheet: Not publicly available

  * SiS950   [clone of IT8705F]

    Prefix: 'it87'

    Addresses scanned: from Super I/O config space (8 I/O ports)

    Datasheet: No longer be available


Authors:
    - Christophe Gauthron
    - Jean Delvare <jdelvare@suse.de>


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.


Hardware Interfaces
-------------------

All the chips supported by this driver are LPC Super-I/O chips, accessed
through the LPC bus (ISA-like I/O ports). The IT8712F additionally has an
SMBus interface to the hardware monitoring functions. This driver no
longer supports this interface though, as it is slower and less reliable
than the ISA access, and was only available on a small number of
motherboard models.


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

This driver implements support for the IT8603E, IT8620E, IT8623E, IT8628E,
IT8705F, IT8712F, IT8716F, IT8718F, IT8720F, IT8721F, IT8726F, IT8728F, IT8732F,
IT8758E, IT8771E, IT8772E, IT8781F, IT8782F, IT8783E/F, IT8786E, IT8790E, and
SiS950 chips.

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, associated alarms, and chassis
intrusion detection.

The IT8712F and IT8716F additionally feature VID inputs, used to report
the Vcore voltage of the processor. The early IT8712F have 5 VID pins,
the IT8716F and late IT8712F have 6. They are shared with other functions
though, so the functionality may not be available on a given system.

The IT8718F and IT8720F also features VID inputs (up to 8 pins) but the value
is stored in the Super-I/O configuration space. Due to technical limitations,
this value can currently only be read once at initialization time, so
the driver won't notice and report changes in the VID value. The two
upper VID bits share their pins with voltage inputs (in5 and in6) so you
can't have both on a given board.

The IT8716F, IT8718F, IT8720F, IT8721F/IT8758E and later IT8712F revisions
have support for 2 additional fans. The additional fans are supported by the
driver.

The IT8716F, IT8718F, IT8720F, IT8721F/IT8758E, IT8732F, IT8781F, IT8782F,
IT8783E/F, and late IT8712F and IT8705F also have optional 16-bit tachometer
counters for fans 1 to 3. This is better (no more fan clock divider mess) but
not compatible with the older chips and revisions. The 16-bit tachometer mode
is enabled by the driver when one of the above chips is detected.

The IT8726F is just bit enhanced IT8716F with additional hardware
for AMD power sequencing. Therefore the chip will appear as IT8716F
to userspace applications.

The IT8728F, IT8771E, and IT8772E are considered compatible with the IT8721F,
until a datasheet becomes available (hopefully.)

The IT8603E/IT8623E is a custom design, hardware monitoring part is similar to
IT8728F. It only supports 3 fans, 16-bit fan mode, and the full speed mode
of the fan is not supported (value 0 of pwmX_enable).

The IT8620E and IT8628E are custom designs, hardware monitoring part is similar
to IT8728F. It only supports 16-bit fan mode. Both chips support up to 6 fans.

The IT8790E supports up to 3 fans. 16-bit fan mode is always enabled.

The IT8732F supports a closed-loop mode for fan control, but this is not
currently implemented by the driver.

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. When
16-bit tachometer counters aren't used, fan readings can be divided by
a programmable divider (1, 2, 4 or 8) to give the readings more range or
accuracy. With a divider of 2, the lowest representable value is around
2600 RPM. Not all RPM values can accurately be represented, so some rounding
is done.

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. On most chips, all
voltage inputs can measure voltages between 0 and 4.08 volts, with a resolution
of 0.016 volt.  IT8603E, IT8721F/IT8758E and IT8728F can measure between 0 and
3.06 volts, with a resolution of 0.012 volt.  IT8732F can measure between 0 and
2.8 volts with a resolution of 0.0109 volt.  The battery voltage in8 does not
have limit registers.

On the IT8603E, IT8620E, IT8628E, IT8721F/IT8758E, IT8732F, IT8781F, IT8782F,
and IT8783E/F, some voltage inputs are internal and scaled inside the chip:
* in3 (optional)
* in7 (optional for IT8781F, IT8782F, and IT8783E/F)
* in8 (always)
* in9 (relevant for IT8603E only)
The driver handles this transparently so user-space doesn't have to care.

The VID lines (IT8712F/IT8716F/IT8718F/IT8720F) 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.

Out-of-limit readings can also result in beeping, if the chip is properly
wired and configured. Beeping can be enabled or disabled per sensor type
(temperatures, voltages and fans.)

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 4 > 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. (4 = thermistor;
3 = thermal diode)


Fan speed control
-----------------

The fan speed control features are limited to manual PWM mode. Automatic
"Smart Guardian" mode control handling is only implemented for older chips
(see below.) However if you want to go for "manual mode" just write 1 to
pwmN_enable.

If you are only able to control the fan speed with very small PWM values,
try lowering the PWM base frequency (pwm1_freq). Depending on the fan,
it may give you a somewhat greater control range. The same frequency is
used to drive all fan outputs, which is why pwm2_freq and pwm3_freq are
read-only.


Automatic fan speed control (old interface)
-------------------------------------------

The driver supports the old interface to automatic fan speed control
which is implemented by IT8705F chips up to revision F and IT8712F
chips up to revision G.

This interface implements 4 temperature vs. PWM output trip points.
The PWM output of trip point 4 is always the maximum value (fan running
at full speed) while the PWM output of the other 3 trip points can be
freely chosen. The temperature of all 4 trip points can be freely chosen.
Additionally, trip point 1 has an hysteresis temperature attached, to
prevent fast switching between fan on and off.

The chip automatically computes the PWM output value based on the input
temperature, based on this simple rule: if the temperature value is
between trip point N and trip point N+1 then the PWM output value is
the one of trip point N. The automatic control mode is less flexible
than the manual control mode, but it reacts faster, is more robust and
doesn't use CPU cycles.

Trip points must be set properly before switching to automatic fan speed
control mode. The driver will perform basic integrity checks before
actually switching to automatic control mode.


Temperature offset attributes
-----------------------------

The driver supports temp[1-3]_offset sysfs attributes to adjust the reported
temperature for thermal diodes or diode-connected thermal transistors.
If a temperature sensor is configured for thermistors, the attribute values
are ignored. If the thermal sensor type is Intel PECI, the temperature offset
must be programmed to the critical CPU temperature.
