forked from Minki/linux
0ea6e61122
Below you will find an updated version from the original series bunching all patches into one big patch updating broken web addresses that are located in Documentation/* Some of the addresses date as far far back as 1995 etc... so searching became a bit difficult, the best way to deal with these is to use web.archive.org to locate these addresses that are outdated. Now there are also some addresses pointing to .spec files some are located, but some(after searching on the companies site)where still no where to be found. In this case I just changed the address to the company site this way the users can contact the company and they can locate them for the users. Signed-off-by: Justin P. Mattock <justinmattock@gmail.com> Signed-off-by: Thomas Weber <weber@corscience.de> Signed-off-by: Mike Frysinger <vapier.adi@gmail.com> Cc: Paulo Marques <pmarques@grupopie.com> Cc: Randy Dunlap <rdunlap@xenotime.net> Cc: Michael Neuling <mikey@neuling.org> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
175 lines
5.9 KiB
Plaintext
175 lines
5.9 KiB
Plaintext
Kernel driver w83792d
|
||
=====================
|
||
|
||
Supported chips:
|
||
* Winbond W83792D
|
||
Prefix: 'w83792d'
|
||
Addresses scanned: I2C 0x2c - 0x2f
|
||
Datasheet: http://www.winbond.com.tw
|
||
|
||
Author: Chunhao Huang
|
||
Contact: DZShen <DZShen@Winbond.com.tw>
|
||
|
||
|
||
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.
|
||
Automatic fan control mode is possible only for fan1-fan3. Fan4-fan7 can run
|
||
synchronized with selected fan (fan1-fan3). This functionality and manual PWM
|
||
control for fan4-fan7 is not yet implemented.
|
||
|
||
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-3] - 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-3]_mode - Select PWM of 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
|