Kernel driver gl518sm
=====================

Supported chips:
  * Genesys Logic GL518SM release 0x00
    Prefix: 'gl518sm'
    Addresses scanned: I2C 0x2c and 0x2d
  * Genesys Logic GL518SM release 0x80
    Prefix: 'gl518sm'
    Addresses scanned: I2C 0x2c and 0x2d
    Datasheet: http://www.genesyslogic.com/

Authors:
        Frodo Looijaard <frodol@dds.nl>,
        Kyösti Mälkki <kmalkki@cc.hut.fi>
        Hong-Gunn Chew <hglinux@gunnet.org>
        Jean Delvare <khali@linux-fr.org>

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

IMPORTANT:

For the revision 0x00 chip, the in0, in1, and in2  values (+5V, +3V,
and +12V) CANNOT be read. This is a limitation of the chip, not the driver.

This driver supports the Genesys Logic GL518SM chip. There are at least
two revision of this chip, which we call revision 0x00 and 0x80. Revision
0x80 chips support the reading of all voltages and revision 0x00 only
for VIN3.

The GL518SM implements one temperature sensor, two fan rotation speed
sensors, and four voltage sensors. It can report alarms through the
computer speakers.

Temperatures are measured in degrees Celsius. An alarm goes off while the
temperature is above the over temperature limit, and has not yet dropped
below the hysteresis limit. The alarm always reflects the current
situation. Measurements are guaranteed between -10 degrees and +110
degrees, with a accuracy of +/-3 degrees.

Rotation speeds are reported in RPM (rotations per minute). An alarm is
triggered if the rotation speed has dropped below a programmable limit. In
case when you have selected to turn fan1 off, no fan1 alarm is triggered.

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 1900 RPM.

Voltage sensors (also known as VIN 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. The VDD input
measures voltages between 0.000 and 5.865 volt, with a resolution of 0.023
volt. The other inputs measure voltages between 0.000 and 4.845 volt, with
a resolution of 0.019 volt. Note that revision 0x00 chips do not support
reading the current voltage of any input except for VIN3; limit setting and
alarms work fine, though.

When an alarm is triggered, you can be warned by a beeping signal through your
computer speaker. It is possible to enable all beeping globally, or only the
beeping for some alarms.

If an alarm triggers, it will remain triggered until the hardware register
is read at least once (except for temperature alarms). 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 GL518SM only updates its values each 1.5 seconds; reading it more often
will do no harm, but will return 'old' values.
