Kernel driver `sis5595.o'
=========================

Status: Complete and tested

Supported chips:
  * Silicon Integrated Systems Corp. SiS5595 Southbridge Hardware Monitor
    Prefix: sis5595
    Addresses scanned: ISA in PCI-space encoded address
    Datasheet: Publicly available at the Silicon Integrated Systems Corp. site.

    Supports following revisions:
	Version		PCI ID		PCI Revision
	1		1039/0008	01
	2		1039/0008	C0

Author: Kyösti Mälkki <kmalkki@cc.hut.fi>

   Note: The chips below contain a 0008 device which is incompatible with the
         5595. We recognize these by the presence of the listed
         "blacklist" PCI ID and refuse to load.

   NOT SUPPORTED	PCI ID		BLACKLIST PCI ID	
	 540		0008		0540
	 550		0008		0550
	5513		0008		5511
	5581		0008		5597
	5582		0008		5597
	5597		0008		5597
	5598		0008		5597/5598
	 630		0008		0630
	 645		0008		0645
	 730		0008		0730
	 735		0008		0735

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


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

The Sis5595 southbridge has integrated hardware monitor functions.
It also has an I2C bus, but this driver only supports the hardware monitor.
For the I2C bus driver see i2c-sis5595.

The SiS5595 implements zero or one temperature sensor, two fan speed
sensors, four or five voltage sensors, and alarms.

On the first version of the chip, there are four voltage
sensors and one temperature sensor.

On the second version of the chip,
the temperature sensor (temp) and the fifth voltage sensor (in4) share a pin
which is configurable, but not through the driver. Sorry.
The driver senses the configuration of the pin, which was hopefully
set by the BIOS.
If the temperature function is enabled, in4 will return 0.
If the in4 function is enabled, temp will return 0.

Temperatures are measured in degrees Celsius. An alarm is triggered once
when the max is crossed; it is also triggered
when it drops below the min 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. 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.

In addition to the alarms described above, there is a BTI alarm, which gets 
triggered when an external chip has crossed its limits. Usually, this is 
connected to some LM75-like chip; if at least one crosses its limits, this 
bit gets set. 

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

Problems
--------
Some chips refuse to be enabled. We don't know why.
The driver will recognize this and print a message in dmesg.

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

Chip `sis5595'
             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                in4                in4     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                in4                in4     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
          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_SIS5595_IN0                in0:3
               in1                     SENSORS_SIS5595_IN1                in1:3
               in2                     SENSORS_SIS5595_IN2                in2:3
               in3                     SENSORS_SIS5595_IN3                in3:3
               in4                     SENSORS_SIS5595_IN4                in3:3
           in0_min                 SENSORS_SIS5595_IN0_MIN                in0:1
           in1_min                 SENSORS_SIS5595_IN1_MIN                in1:1
           in2_min                 SENSORS_SIS5595_IN2_MIN                in2:1
           in3_min                 SENSORS_SIS5595_IN3_MIN                in3:1
           in4_min                 SENSORS_SIS5595_IN4_MIN                in4:1
           in0_max                 SENSORS_SIS5595_IN0_MAX                in0:2
           in1_max                 SENSORS_SIS5595_IN1_MAX                in1:2
           in2_max                 SENSORS_SIS5595_IN2_MAX                in2:2
           in3_max                 SENSORS_SIS5595_IN3_MAX                in3:2
           in4_max                 SENSORS_SIS5595_IN4_MAX                in4:2
              fan1                    SENSORS_SIS5595_FAN1               fan1:2
              fan2                    SENSORS_SIS5595_FAN2               fan2:2
          fan1_min                SENSORS_SIS5595_FAN1_MIN               fan1:1
          fan2_min                SENSORS_SIS5595_FAN2_MIN               fan2:1
              temp                    SENSORS_SIS5595_TEMP               temp:3
         temp_hyst               SENSORS_SIS5595_TEMP_HYST               temp:2
         temp_over               SENSORS_SIS5595_TEMP_OVER               temp:1
          fan1_div                SENSORS_SIS5595_FAN1_DIV            fan_div:1
          fan2_div                SENSORS_SIS5595_FAN2_DIV            fan_div:2
            alarms                  SENSORS_SIS5595_ALARMS             alarms:1


