Kernel driver `via686a.o'
=========================

Status: Stable.

Supported chips:
  * Via VT82C686A, VT82C686B  Southbridge Integrated Hardware Monitor
    Prefix: via686a
    Addresses scanned: ISA in PCI-space encoded address
    Datasheet: Sometimes available at the Via site http://www.via.com.tw.

Authors: Kyösti Mälkki <kmalkki@cc.hut.fi>,
         Mark D. Studebaker <mdsxyz123@yahoo.com>
	 Bob Dougherty <bobd@stanford.edu>
    	 (Some conversion-factor data were contributed by 
	 Jonathan Teh Soon Yew <j.teh@iname.com> and Alex van Kaam <darkside@chello.nl>.)

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

force_addr=0xaddr	Set the I/O base address. Useful for Asus A7V boards
			that don't set the address in the BIOS. Does not do a
			PCI force; the via686a must still be present in lspci.
			Don't use this unless the driver complains that the
			base address is not set.
			Example: 'modprobe via686a force_addr=0x290'


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

The driver does not distinguish between the chips and reports
all as a 686A.

The Via 686a southbridge has integrated hardware monitor functionality.
It also has an I2C bus, but this driver only supports the hardware monitor.
For the I2C bus driver, see ../busses/i2c-viapro.

The Via 686a implements three temperature sensors, two FAN rotation speed
sensors, five voltage sensors and alarms.

Temperatures are measured in degrees Celcius. An alarm is triggered once
when the Overtemperature Shutdown limit is crossed; it is triggered again
as soon as it drops below the hysteresis value.  A more useful behaviour 
can be found by setting the hysteresis 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. Measurements are guaranteed
between -55 and +125 degrees, with a resolution of 1 degree.

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. This is important because some FANs
report only one 'tick' each rotation, while others report two - making
all readings twice as high. 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.

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 driver only updates its values each 1.5 seconds; reading it more often
will do no harm, but will return 'old' values.


Chip Features
-------------

Chip `via686a'
             LABEL        LABEL CLASS      COMPUTE CLASS ACCESS MAGNITUDE
               in0               NONE               NONE     R     2
               in1               NONE               NONE     R     2
               in2               NONE               NONE     R     2
               in3               NONE               NONE     R     2
               in4               NONE               NONE     R     2
           in0_min                in0                in0     RW    2
           in1_min                in1                in1     RW    2
           in2_min                in2                in2     RW    2
           in3_min                in3                in3     RW    2
           in4_min                in3                in3     RW    2
           in0_max                in0                in0     RW    2
           in1_max                in1                in1     RW    2
           in2_max                in2                in2     RW    2
           in3_max                in3                in3     RW    2
           in4_max                in3                in3     RW    2
              fan1               NONE               NONE     R     0
              fan2               NONE               NONE     R     0
          fan1_min               fan1               fan1     RW    0
          fan2_min               fan2               fan2     RW    0
              temp               NONE               NONE     R     1
         temp_hyst               temp               temp     RW    1
         temp_over               temp               temp     RW    1
             temp2               NONE               NONE     R     1
        temp2_hyst               temp               temp     RW    1
        temp2_over               temp               temp     RW    1
             temp3               NONE               NONE     R     1
        temp3_hyst               temp               temp     RW    1
        temp3_over               temp               temp     RW    1
          fan1_div               fan1               NONE     RW    0
          fan2_div               fan2               NONE     RW    0
            alarms               NONE               NONE     R     0

             LABEL                          FEATURE SYMBOL        SYSCTL FILE:NR
               in0                     SENSORS_VIA686A_IN0                in0:3
               in1                     SENSORS_VIA686A_IN1                in1:3
               in2                     SENSORS_VIA686A_IN2                in2:3
               in3                     SENSORS_VIA686A_IN3                in3:3
               in4                     SENSORS_VIA686A_IN4                in4:3
           in0_min                 SENSORS_VIA686A_IN0_MIN                in0:1
           in1_min                 SENSORS_VIA686A_IN1_MIN                in1:1
           in2_min                 SENSORS_VIA686A_IN2_MIN                in2:1
           in3_min                 SENSORS_VIA686A_IN3_MIN                in3:1
           in4_min                 SENSORS_VIA686A_IN4_MIN                in4:1
           in0_max                 SENSORS_VIA686A_IN0_MAX                in0:2
           in1_max                 SENSORS_VIA686A_IN1_MAX                in1:2
           in2_max                 SENSORS_VIA686A_IN2_MAX                in2:2
           in3_max                 SENSORS_VIA686A_IN3_MAX                in3:2
           in4_max                 SENSORS_VIA686A_IN4_MAX                in4:2
              fan1                    SENSORS_VIA686A_FAN1               fan1:2
              fan2                    SENSORS_VIA686A_FAN2               fan2:2
          fan1_min                SENSORS_VIA686A_FAN1_MIN               fan1:1
          fan2_min                SENSORS_VIA686A_FAN2_MIN               fan2:1
              temp                    SENSORS_VIA686A_TEMP               temp:3
         temp_hyst               SENSORS_VIA686A_TEMP_HYST               temp:2
         temp_over               SENSORS_VIA686A_TEMP_OVER               temp:1
             temp2                   SENSORS_VIA686A_TEMP2              temp2:3
        temp2_hyst              SENSORS_VIA686A_TEMP2_HYST              temp2:2
        temp2_over              SENSORS_VIA686A_TEMP2_OVER              temp2:1
             temp3                   SENSORS_VIA686A_TEMP3              temp3:3
        temp3_hyst              SENSORS_VIA686A_TEMP3_HYST              temp3:2
        temp3_over              SENSORS_VIA686A_TEMP3_OVER              temp3:1
          fan1_div                SENSORS_VIA686A_FAN1_DIV            fan_div:1
          fan2_div                SENSORS_VIA686A_FAN2_DIV            fan_div:2
            alarms                  SENSORS_VIA686A_ALARMS             alarms:1


