Kernel driver w83792d
=====================

Supported chips:
  * Winbond W83792D
    Prefix: 'w83792d'
    Addresses scanned: I2C 0x2c - 0x2f
    Datasheet: http://www.winbond.com.tw

Author: Shane Huang (Winbond)
Updated: Roger Lucas


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

* init int
  (default 1)
  Use 'init=0' to bypass initializing the chip.
  Try this if your computer crashes when you load the module.

* force_subclients=bus,caddr,saddr,saddr
  This is used to force the i2c addresses for subclients of
  a certain chip. Example usage is `force_subclients=0,0x2f,0x4a,0x4b'
  to force the subclients of chip 0x2f on bus 0 to i2c addresses
  0x4a and 0x4b.


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

This driver implements support for the Winbond W83792AD/D.

Detection of the chip can sometimes be foiled because it can be in an
internal state that allows no clean access (Bank with ID register is not
currently selected). If you know the address of the chip, use a 'force'
parameter; this will put it into a more well-behaved state first.

The driver implements three temperature sensors, seven fan rotation speed
sensors, nine voltage sensors, and two automatic fan regulation
strategies called: Smart Fan I (Thermal Cruise mode) and Smart Fan II.

The driver also implements up to seven fan control outputs: pwm1-7.  Pwm1-7
can be configured to PWM output or Analogue DC output via their associated
pwmX_mode. Outputs pwm4 through pwm7 may or may not be present depending on
how the W83792AD/D was configured by the BIOS.

Automatic fan control mode is possible only for fan1-fan3.

For all pwmX outputs, a value of 0 means minimum fan speed and a value of
255 means maximum fan speed.

Temperatures are measured in degrees Celsius and measurement resolution is 1
degC for temp1 and 0.5 degC for temp2 and temp3. An alarm is triggered when
the temperature gets higher than the Overtemperature Shutdown value; it stays
on until the temperature falls below the Hysteresis value.

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, 8, 16, 32, 64 or
128) to give the readings more range or accuracy.

Voltage sensors (also known as IN sensors) report their values in millivolts.
An alarm is triggered if the voltage has crossed a programmable minimum
or maximum limit.

Alarms are provided as output from "realtime status register". Following bits
are defined:

bit - alarm on:
0  - in0
1  - in1
2  - temp1
3  - temp2
4  - temp3
5  - fan1
6  - fan2
7  - fan3
8  - in2
9  - in3
10 - in4
11 - in5
12 - in6
13 - VID change
14 - chassis
15 - fan7
16 - tart1
17 - tart2
18 - tart3
19 - in7
20 - in8
21 - fan4
22 - fan5
23 - fan6

Tart will be asserted while target temperature cannot be achieved after 3 minutes
of full speed rotation of corresponding fan.

In addition to the alarms described above, there is a CHAS alarm on the chips
which triggers if your computer case is open (This one is latched, contrary
to realtime alarms).

The chips only update values each 3 seconds; reading them more often will
do no harm, but will return 'old' values.


W83792D PROBLEMS
----------------
Known problems:
	- This driver is only for Winbond W83792D C version device, there
	  are also some motherboards with B version W83792D device. The
	  calculation method to in6-in7(measured value, limits) is a little
	  different between C and B version. C or B version can be identified
	  by CR[0x49h].
	- The function of vid and vrm has not been finished, because I'm NOT
	  very familiar with them. Adding support is welcome.
 	- The function of chassis open detection needs more tests.
	- If you have ASUS server board and chip was not found: Then you will
	  need to upgrade to latest (or beta) BIOS. If it does not help please
	  contact us.

Fan control
-----------

Manual mode
-----------

Works as expected. You just need to specify desired PWM/DC value (fan speed)
in appropriate pwm# file.

Thermal cruise
--------------

In this mode, W83792D provides the Smart Fan system to automatically control
fan speed to keep the temperatures of CPU and the system within specific
range. At first a wanted temperature and interval must be set. This is done
via thermal_cruise# file. The tolerance# file serves to create T +- tolerance
interval. The fan speed will be lowered as long as the current temperature
remains below the thermal_cruise# +- tolerance# value. Once the temperature
exceeds the high limit (T+tolerance), the fan will be turned on with a
specific speed set by pwm# and automatically controlled its PWM duty cycle
with the temperature varying. Three conditions may occur:

(1) If the temperature still exceeds the high limit, PWM duty
cycle will increase slowly.

(2) If the temperature goes below the high limit, but still above the low
limit (T-tolerance), the fan speed will be fixed at the current speed because
the temperature is in the target range.

(3) If the temperature goes below the low limit, PWM duty cycle will decrease
slowly to 0 or a preset stop value until the temperature exceeds the low
limit. (The preset stop value handling is not yet implemented in driver)

Smart Fan II
------------

W83792D also provides a special mode for fan. Four temperature points are
available. When related temperature sensors detects the temperature in preset
temperature region (sf2_point@_fan# +- tolerance#) it will cause fans to run
on programmed value from sf2_level@_fan#. You need to set four temperatures
for each fan.


/sys files
----------

pwm[1-7] - this file stores PWM duty cycle or DC value (fan speed) in range:
	0 (stop) to 255 (full)
pwm[1-3]_enable - this file controls mode of fan/temperature control:
            * 0 Disabled
            * 1 Manual mode
            * 2 Smart Fan II
            * 3 Thermal Cruise
pwm[1-7]_mode - Select PWM or DC mode
            * 0 DC
            * 1 PWM
thermal_cruise[1-3] - Selects the desired temperature for cruise (degC)
tolerance[1-3] - Value in degrees of Celsius (degC) for +- T
sf2_point[1-4]_fan[1-3] - four temperature points for each fan for Smart Fan II
sf2_level[1-3]_fan[1-3] - three PWM/DC levels for each fan for Smart Fan II
