mirror of
https://github.com/lm-sensors/lm-sensors.git
synced 2026-10-19 11:19:31 +00:00
git-svn-id: http://lm-sensors.org/svn/lm-sensors/trunk@2313 7894878c-1315-0410-8ee3-d5d059ff63e0
742 lines
36 KiB
Plaintext
742 lines
36 KiB
Plaintext
Kernel driver `w83781d.o'
|
|
=========================
|
|
|
|
Status: W83781D support is complete and well-tested.
|
|
W83782D support is complete and well-tested.
|
|
W83783S support is complete but has not been well-tested.
|
|
W83791D support is BETA.
|
|
W83627HF support is complete but has not been well-tested.
|
|
W83697HF support is complete but has not been well-tested.
|
|
AS99127F support is BETA and has known problems due to lack of a
|
|
chip datasheet. SEE BELOW.
|
|
|
|
Supported chips:
|
|
* Winbond W83781D
|
|
Prefix 'w83781d'
|
|
Addresses scanned: I2C 0x20 - 0x2f (inclusive), ISA 0x290 (8 I/O ports)
|
|
Datasheet: Publicly available at the Winbond website (www.winbond.com.tw)
|
|
* Winbond W83782D
|
|
Prefix 'w83782d'
|
|
Addresses scanned: I2C 0x20 - 0x2f (inclusive), ISA 0x290 (8 I/O ports)
|
|
Datasheet: Publicly available at the Winbond website
|
|
* Winbond W83783S
|
|
Prefix 'w83783s'
|
|
Addresses scanned: I2C 0x2d
|
|
Datasheet: Publicly available at the Winbond website
|
|
* Winbond W83791D
|
|
Prefix 'w83791d'
|
|
Addresses scanned: I2C 0x2c - 0x2f (inclusive)
|
|
Datasheet: Publicly available at the Winbond website
|
|
* Winbond W83627HF
|
|
Prefix 'w83627hf'
|
|
Addresses scanned: I2C 0x20 - 0x2f (inclusive), ISA 0x290 (8 I/O ports)
|
|
Datasheet: Publicly available at the Winbond website
|
|
* Winbond W83697HF
|
|
Prefix 'w83697hf'
|
|
Addresses scanned: ISA 0x290 (8 I/O ports)
|
|
Datasheet: Publicly available at the Winbond website
|
|
* Asus AS99127F
|
|
Prefix 'as99127f'
|
|
Addresses scanned: I2C 0x28 - 0x2f (inclusive)
|
|
Datasheet: Unavailable from Asus
|
|
|
|
|
|
|
|
Authors: Frodo Looijaard <frodol@dds.nl>, Philip Edelbrock <phil@netroedge.com>,
|
|
and Mark Studebaker <mdsxyz123@yahoo.com>
|
|
|
|
|
|
Module Parameters
|
|
-----------------
|
|
|
|
* force: short array (min = 1, max = 48)
|
|
List of adapter,address pairs to boldly assume to be present
|
|
* force_w83781d: short array (min = 1, max = 48)
|
|
List of adapter,address pairs which are unquestionably assumed to contain
|
|
a `w83781d' chip
|
|
* force_w83782d:
|
|
Ditto
|
|
* force_w83783s:
|
|
Ditto
|
|
* force_w83791d:
|
|
Ditto
|
|
* force_w83627hf:
|
|
Ditto
|
|
* force_w83697hf:
|
|
Ditto
|
|
* force_as99127f:
|
|
Ditto
|
|
* force_subclients=bus,caddr,saddr,saddr
|
|
This is used to force the i2c addresses for subclients of
|
|
a certain chip. Typical usage is `force_subclients=0,0x2d,0x4a,0x4b'
|
|
to force the subclients of chip 0x2d on bus 0 to i2c addresses
|
|
0x4a and 0x4b.
|
|
This parameter is useful for certain Tyan boards.
|
|
* ignore: short array (min = 1, max = 48)
|
|
List of adapter,address pairs not to scan
|
|
* ignore_range: short array (min = 1, max = 48)
|
|
List of adapter,start-addr,end-addr triples not to scan
|
|
* probe: short array (min = 1, max = 48)
|
|
List of adapter,address pairs to scan additionally
|
|
* probe_range: short array (min = 1, max = 48)
|
|
List of adapter,start-addr,end-addr triples to scan additionally
|
|
* init=[0,1] (default 1)
|
|
Use 'init=0' to bypass initializing the chip.
|
|
Try this if your computer crashes when you load the module.
|
|
|
|
|
|
Description
|
|
-----------
|
|
|
|
This driver implements support for the Winbond W83781D, W83782D,
|
|
W8783S, and W83627HF chips, and the Asus AS99127F chips.
|
|
We will refer to them collectively as W8378* chips.
|
|
|
|
There is quite some difference between these chips, but they are similar
|
|
enough that it was sensible to put them together in one driver.
|
|
The W83627HF chip is assumed to be identical to the ISA W83782D.
|
|
The Asus chips are similar to an I2C-only W83782D.
|
|
|
|
Detection of these chips can sometimes be foiled because they can be in
|
|
an internal state that allows no clean access. If you know the address
|
|
of the chip, use a 'force' parameter; this will put them into a more
|
|
well-behaved state first.
|
|
|
|
The W8378* implements temperature sensors (three on the W83781D and W83782D,
|
|
two on the W83783S), three FAN rotation speed sensors, voltage sensors
|
|
(seven on the W83781D, nine on the W83782D and six on the W83783S), VID
|
|
lines, alarms with beep warnings, and some miscellaneous stuff.
|
|
|
|
Temperatures are measured in degrees Celcius. There is always one main
|
|
temperature sensor, and one (W83783S) or two (W83781D and W83782D) other
|
|
sensors. An alarm is triggered for the main sensor 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. The driver sets the
|
|
hysteresis value for temp1 to 127 at initialization.
|
|
|
|
For the other temperature sensor(s), an
|
|
alarm is triggered when the temperature gets higher then the Overtemperature
|
|
Shutdown value; it stays on until the temperature falls below the Hysteresis
|
|
value. But on the W83781D, there is only one alarm that functions for both
|
|
other sensors! Temperatures are guaranteed within a range of -55 to +125
|
|
degrees. The main temperature sensors has a resolution of 1 degree; the other
|
|
sensor(s) of 0.5 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 for the
|
|
W83781D; 1, 2, 4, 8, 16, 32, 64 or 128 for the others) 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.
|
|
|
|
The VID lines encode the core voltage value: the voltage level your processor
|
|
should work with. This is hardcoded by the mainboard and/or processor itself.
|
|
It is a value in volts. When it is unconnected, you will often find the
|
|
value 3.50 V here.
|
|
|
|
The W83782D and W83783S temperature conversion machine understands about
|
|
several kinds of temperature probes. You can program the so-called
|
|
beta value in the sensor files. '1' is the PII/Celeron diode, '2' is the
|
|
TN3904 transistor, and 3435 the default thermistor value. Other values
|
|
are (not yet) supported. You can program your own values through the
|
|
rt interface, but this is not very useful, because these tables are
|
|
under NDA.
|
|
|
|
In addition to the alarms described above, there is a CHAS alarm on the
|
|
chips which triggers if your computer case is open.
|
|
|
|
When an alarm goes off, 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. 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 chips only update values each 1.5 seconds; reading them more often
|
|
will do no harm, but will return 'old' values.
|
|
|
|
|
|
W8378* PROBLEMS
|
|
-----------------
|
|
Known problems:
|
|
- Some chips are misidentified.
|
|
This is caused by the chip having the wrong WCHIPID register
|
|
value, so there is no fix. The workaround is to use the
|
|
force_CHIP parameter.
|
|
(modprobe w83781d force_CHIP=BUS,0x2d where CHIP is the chip name
|
|
and BUS is your i2c bus number -
|
|
cat /proc/bus/i2c to see a list of bus numbers)
|
|
|
|
|
|
AS99127F PROBLEMS
|
|
-----------------
|
|
The as99127f support was developed without the benefit of a datasheet.
|
|
In most cases it is treated as a w83781d.
|
|
This support will be BETA until a datasheet is released.
|
|
One user has reported problems with fans stopping
|
|
occasionally.
|
|
|
|
Note that the individual beep bits are inverted from the other chips.
|
|
That is, in the second entry in the 'beep' file, a '1' bit means
|
|
disable, not enable. This may be changed in the future.
|
|
|
|
Known problems:
|
|
- Problems with diode/thermistor settings (supported?)
|
|
- fan_div register may not really be fan_div.
|
|
- One user reports fans stopping under high server load.
|
|
- Some as99127f chips are misidentified as a w83781d or w83782d.
|
|
This is caused by the chip having the wrong WCHIPID register
|
|
value, so there is no fix. The workaround is to use the
|
|
force_as99127f parameter.
|
|
(modprobe w83781d force_as99127f=BUS,0x2d where BUS is your i2c bus number)
|
|
|
|
These will not be fixed unless we get a datasheet.
|
|
If you have problems, please lobby Asus to release a datasheet.
|
|
Unfortunately several others have without success.
|
|
Please do not send mail to us asking for better as99127f support.
|
|
We have done the best we can without a datasheet.
|
|
Please do not send mail to the author or the sensors group asking for
|
|
a datasheet or ideas on how to convince Asus. We can't help.
|
|
|
|
|
|
Chip Features
|
|
-------------
|
|
|
|
Chip `w83781d'
|
|
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
|
|
in5 NONE NONE R 2
|
|
in6 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
|
|
in5_min in5 in5 RW 2
|
|
in6_min in6 in6 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
|
|
in5_max in5 in5 RW 2
|
|
in6_max in6 in6 RW 2
|
|
fan1 NONE NONE R 0
|
|
fan2 NONE NONE R 0
|
|
fan3 NONE NONE R 0
|
|
fan1_min fan1 NONE RW 0
|
|
fan2_min fan2 NONE RW 0
|
|
fan3_min fan3 NONE RW 0
|
|
temp1 NONE NONE R 1
|
|
temp1_hyst temp1 temp1 RW 1
|
|
temp1_over temp1 temp1 RW 1
|
|
temp2 NONE NONE R 1
|
|
temp2_hyst temp2 temp2 RW 1
|
|
temp2_over temp2 temp2 RW 1
|
|
temp3 NONE NONE R 1
|
|
temp3_hyst temp3 temp3 RW 1
|
|
temp3_over temp3 temp3 RW 1
|
|
vid NONE NONE R 2
|
|
fan1_div fan1 NONE RW 0
|
|
fan2_div fan2 NONE RW 0
|
|
fan3_div fan3 NONE R 0
|
|
alarms NONE NONE R 0
|
|
beep_enable alarms NONE RW 0
|
|
beeps alarms alarms RW 0
|
|
|
|
LABEL FEATURE SYMBOL SYSCTL FILE:NR
|
|
in0 SENSORS_W83781D_IN0 in0:3
|
|
in1 SENSORS_W83781D_IN1 in1:3
|
|
in2 SENSORS_W83781D_IN2 in2:3
|
|
in3 SENSORS_W83781D_IN3 in3:3
|
|
in4 SENSORS_W83781D_IN4 in4:3
|
|
in5 SENSORS_W83781D_IN5 in5:3
|
|
in6 SENSORS_W83781D_IN6 in6:3
|
|
in0_min SENSORS_W83781D_IN0_MIN in0:1
|
|
in1_min SENSORS_W83781D_IN1_MIN in1:1
|
|
in2_min SENSORS_W83781D_IN2_MIN in2:1
|
|
in3_min SENSORS_W83781D_IN3_MIN in3:1
|
|
in4_min SENSORS_W83781D_IN4_MIN in4:1
|
|
in5_min SENSORS_W83781D_IN5_MIN in5:1
|
|
in6_min SENSORS_W83781D_IN6_MIN in6:1
|
|
in0_max SENSORS_W83781D_IN0_MAX in0:2
|
|
in1_max SENSORS_W83781D_IN1_MAX in1:2
|
|
in2_max SENSORS_W83781D_IN2_MAX in2:2
|
|
in3_max SENSORS_W83781D_IN3_MAX in3:2
|
|
in4_max SENSORS_W83781D_IN4_MAX in4:2
|
|
in5_max SENSORS_W83781D_IN5_MAX in5:2
|
|
in6_max SENSORS_W83781D_IN6_MAX in6:2
|
|
fan1 SENSORS_W83781D_FAN1 fan1:2
|
|
fan2 SENSORS_W83781D_FAN2 fan2:2
|
|
fan3 SENSORS_W83781D_FAN3 fan3:2
|
|
fan1_min SENSORS_W83781D_FAN1_MIN fan1:1
|
|
fan2_min SENSORS_W83781D_FAN2_MIN fan2:1
|
|
fan3_min SENSORS_W83781D_FAN3_MIN fan3:1
|
|
temp1 SENSORS_W83781D_TEMP1 temp1:3
|
|
temp1_hyst SENSORS_W83781D_TEMP1_HYST temp1:2
|
|
temp1_over SENSORS_W83781D_TEMP1_OVER temp1:1
|
|
temp2 SENSORS_W83781D_TEMP2 temp2:3
|
|
temp2_hyst SENSORS_W83781D_TEMP2_HYST temp2:2
|
|
temp2_over SENSORS_W83781D_TEMP2_OVER temp2:1
|
|
temp3 SENSORS_W83781D_TEMP3 temp3:3
|
|
temp3_hyst SENSORS_W83781D_TEMP3_HYST temp3:2
|
|
temp3_over SENSORS_W83781D_TEMP3_OVER temp3:1
|
|
vid SENSORS_W83781D_VID vid:1
|
|
fan1_div SENSORS_W83781D_FAN1_DIV fan_div:1
|
|
fan2_div SENSORS_W83781D_FAN2_DIV fan_div:2
|
|
fan3_div SENSORS_W83781D_FAN3_DIV fan_div:3
|
|
alarms SENSORS_W83781D_ALARMS alarms:1
|
|
beep_enable SENSORS_W83781D_BEEP_ENABLE beep:1
|
|
beeps SENSORS_W83781D_BEEPS beep:2
|
|
|
|
|
|
Chip `w83782d'
|
|
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
|
|
in5 NONE NONE R 2
|
|
in6 NONE NONE R 2
|
|
in7 NONE NONE R 2
|
|
in8 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
|
|
in5_min in5 in5 RW 2
|
|
in6_min in6 in6 RW 2
|
|
in7_min in7 in7 RW 2
|
|
in8_min in8 in8 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
|
|
in5_max in5 in5 RW 2
|
|
in6_max in6 in6 RW 2
|
|
in7_max in7 in7 RW 2
|
|
in8_max in8 in8 RW 2
|
|
fan1 NONE NONE R 0
|
|
fan2 NONE NONE R 0
|
|
fan3 NONE NONE R 0
|
|
fan1_min fan1 NONE RW 0
|
|
fan2_min fan2 NONE RW 0
|
|
fan3_min fan3 NONE RW 0
|
|
temp1 NONE NONE R 1
|
|
temp1_hyst temp1 temp1 RW 1
|
|
temp1_over temp1 temp1 RW 1
|
|
temp2 NONE NONE R 1
|
|
temp2_hyst temp2 temp2 RW 1
|
|
temp2_over temp2 temp2 RW 1
|
|
temp3 NONE NONE R 1
|
|
temp3_hyst temp3 temp3 RW 1
|
|
temp3_over temp3 temp3 RW 1
|
|
vid NONE NONE R 2
|
|
fan1_div fan1 NONE RW 0
|
|
fan2_div fan2 NONE RW 0
|
|
fan3_div fan3 NONE R 0
|
|
alarms NONE NONE R 0
|
|
beep_enable alarms NONE RW 0
|
|
beeps alarms alarms RW 0
|
|
sensor1 NONE NONE RW 0
|
|
sensor2 NONE NONE RW 0
|
|
sensor3 NONE NONE RW 0
|
|
|
|
LABEL FEATURE SYMBOL SYSCTL FILE:NR
|
|
in0 SENSORS_W83782D_IN0 in0:3
|
|
in1 SENSORS_W83782D_IN1 in1:3
|
|
in2 SENSORS_W83782D_IN2 in2:3
|
|
in3 SENSORS_W83782D_IN3 in3:3
|
|
in4 SENSORS_W83782D_IN4 in4:3
|
|
in5 SENSORS_W83782D_IN5 in5:3
|
|
in6 SENSORS_W83782D_IN6 in6:3
|
|
in7 SENSORS_W83782D_IN7 in7:3
|
|
in8 SENSORS_W83782D_IN8 in8:3
|
|
in0_min SENSORS_W83782D_IN0_MIN in0:1
|
|
in1_min SENSORS_W83782D_IN1_MIN in1:1
|
|
in2_min SENSORS_W83782D_IN2_MIN in2:1
|
|
in3_min SENSORS_W83782D_IN3_MIN in3:1
|
|
in4_min SENSORS_W83782D_IN4_MIN in4:1
|
|
in5_min SENSORS_W83782D_IN5_MIN in5:1
|
|
in6_min SENSORS_W83782D_IN6_MIN in6:1
|
|
in7_min SENSORS_W83782D_IN7_MIN in7:1
|
|
in8_min SENSORS_W83782D_IN8_MIN in8:1
|
|
in0_max SENSORS_W83782D_IN0_MAX in0:2
|
|
in1_max SENSORS_W83782D_IN1_MAX in1:2
|
|
in2_max SENSORS_W83782D_IN2_MAX in2:2
|
|
in3_max SENSORS_W83782D_IN3_MAX in3:2
|
|
in4_max SENSORS_W83782D_IN4_MAX in4:2
|
|
in5_max SENSORS_W83782D_IN5_MAX in5:2
|
|
in6_max SENSORS_W83782D_IN6_MAX in6:2
|
|
in7_max SENSORS_W83782D_IN7_MAX in7:2
|
|
in8_max SENSORS_W83782D_IN8_MAX in8:2
|
|
fan1 SENSORS_W83782D_FAN1 fan1:2
|
|
fan2 SENSORS_W83782D_FAN2 fan2:2
|
|
fan3 SENSORS_W83781D_FAN3 fan3:2
|
|
fan1_min SENSORS_W83782D_FAN1_MIN fan1:1
|
|
fan2_min SENSORS_W83782D_FAN2_MIN fan2:1
|
|
fan3_min SENSORS_W83781D_FAN3_MIN fan3:1
|
|
temp1 SENSORS_W83782D_TEMP1 temp1:3
|
|
temp1_hyst SENSORS_W83782D_TEMP1_HYST temp1:2
|
|
temp1_over SENSORS_W83782D_TEMP1_OVER temp1:1
|
|
temp2 SENSORS_W83782D_TEMP2 temp2:3
|
|
temp2_hyst SENSORS_W83782D_TEMP2_HYST temp2:2
|
|
temp2_over SENSORS_W83782D_TEMP2_OVER temp2:1
|
|
temp3 SENSORS_W83782D_TEMP3 temp3:3
|
|
temp3_hyst SENSORS_W83782D_TEMP3_HYST temp3:2
|
|
temp3_over SENSORS_W83782D_TEMP3_OVER temp3:1
|
|
vid SENSORS_W83782D_VID vid:1
|
|
fan1_div SENSORS_W83782D_FAN1_DIV fan_div:1
|
|
fan2_div SENSORS_W83782D_FAN2_DIV fan_div:2
|
|
fan3_div SENSORS_W83781D_FAN3_DIV fan_div:3
|
|
alarms SENSORS_W83782D_ALARMS alarms:1
|
|
beep_enable SENSORS_W83782D_BEEP_ENABLE beep:1
|
|
beeps SENSORS_W83782D_BEEPS beep:2
|
|
sensor1 SENSORS_W83782D_SENS1 sensor1:1
|
|
sensor2 SENSORS_W83782D_SENS2 sensor2:1
|
|
sensor3 SENSORS_W83782D_SENS3 sensor3:1
|
|
|
|
|
|
Chip `w83783s'
|
|
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
|
|
in5 NONE NONE R 2
|
|
in6 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
|
|
in5_min in5 in5 RW 2
|
|
in6_min in6 in6 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
|
|
in5_max in5 in5 RW 2
|
|
in6_max in6 in6 RW 2
|
|
fan1 NONE NONE R 0
|
|
fan2 NONE NONE R 0
|
|
fan3 NONE NONE R 0
|
|
fan1_min fan1 NONE RW 0
|
|
fan2_min fan2 NONE RW 0
|
|
fan3_min fan3 NONE RW 0
|
|
temp1 NONE NONE R 1
|
|
temp1_hyst temp1 temp1 RW 1
|
|
temp1_over temp1 temp1 RW 1
|
|
temp2 NONE NONE R 1
|
|
temp2_hyst temp2 temp2 RW 1
|
|
temp2_over temp2 temp2 RW 1
|
|
vid NONE NONE R 2
|
|
fan1_div fan1 NONE RW 0
|
|
fan2_div fan2 NONE RW 0
|
|
fan3_div fan3 NONE R 0
|
|
alarms NONE NONE R 0
|
|
beep_enable alarms NONE RW 0
|
|
beeps alarms alarms RW 0
|
|
sensor1 NONE NONE RW 0
|
|
sensor2 NONE NONE RW 0
|
|
|
|
LABEL FEATURE SYMBOL SYSCTL FILE:NR
|
|
in0 SENSORS_W83783S_IN0 in0:3
|
|
in1 SENSORS_W83783S_IN1 in1:3
|
|
in2 SENSORS_W83783S_IN2 in2:3
|
|
in3 SENSORS_W83783S_IN3 in3:3
|
|
in4 SENSORS_W83783S_IN4 in4:3
|
|
in5 SENSORS_W83783S_IN5 in5:3
|
|
in6 SENSORS_W83783S_IN6 in6:3
|
|
in0_min SENSORS_W83783S_IN0_MIN in0:1
|
|
in1_min SENSORS_W83783S_IN1_MIN in1:1
|
|
in2_min SENSORS_W83783S_IN2_MIN in2:1
|
|
in3_min SENSORS_W83783S_IN3_MIN in3:1
|
|
in4_min SENSORS_W83783S_IN4_MIN in4:1
|
|
in5_min SENSORS_W83783S_IN5_MIN in5:1
|
|
in6_min SENSORS_W83783S_IN6_MIN in6:1
|
|
in0_max SENSORS_W83783S_IN0_MAX in0:2
|
|
in1_max SENSORS_W83783S_IN1_MAX in1:2
|
|
in2_max SENSORS_W83783S_IN2_MAX in2:2
|
|
in3_max SENSORS_W83783S_IN3_MAX in3:2
|
|
in4_max SENSORS_W83783S_IN4_MAX in4:2
|
|
in5_max SENSORS_W83783S_IN5_MAX in5:2
|
|
in6_max SENSORS_W83783S_IN6_MAX in6:2
|
|
fan1 SENSORS_W83783S_FAN1 fan1:2
|
|
fan2 SENSORS_W83783S_FAN2 fan2:2
|
|
fan3 SENSORS_W83783S_FAN3 fan3:2
|
|
fan1_min SENSORS_W83783S_FAN1_MIN fan1:1
|
|
fan2_min SENSORS_W83783S_FAN2_MIN fan2:1
|
|
fan3_min SENSORS_W83783S_FAN3_MIN fan3:1
|
|
temp1 SENSORS_W83783S_TEMP1 temp1:3
|
|
temp1_hyst SENSORS_W83783S_TEMP1_HYST temp1:2
|
|
temp1_over SENSORS_W83783S_TEMP1_OVER temp1:1
|
|
temp2 SENSORS_W83783S_TEMP2 temp2:3
|
|
temp2_hyst SENSORS_W83783S_TEMP2_HYST temp2:2
|
|
temp2_over SENSORS_W83783S_TEMP2_OVER temp2:1
|
|
vid SENSORS_W83783S_VID vid:1
|
|
fan1_div SENSORS_W83783S_FAN1_DIV fan_div:1
|
|
fan2_div SENSORS_W83783S_FAN2_DIV fan_div:2
|
|
fan3_div SENSORS_W83783S_FAN3_DIV fan_div:3
|
|
alarms SENSORS_W83783S_ALARMS alarms:1
|
|
beep_enable SENSORS_W83783S_BEEP_ENABLE beep:1
|
|
beeps SENSORS_W83783S_BEEPS beep:2
|
|
sensor1 SENSORS_W83783S_SENS1 sensor1:1
|
|
sensor2 SENSORS_W83783S_SENS2 sensor2:1
|
|
|
|
|
|
|
|
Miscellaneous documentation
|
|
===========================
|
|
|
|
|
|
|
|
/PROC ENTRIES
|
|
-------------
|
|
Varies depending on chip type. Most are identical to the lm78 entries.
|
|
See the lm78 documentation for details.
|
|
|
|
Additional entries not in the lm78:
|
|
|
|
pwm[1-4]: (not on w83781d)
|
|
Controls the speed of the fans with PWM (Pulse Width Modulation)
|
|
Valid values:
|
|
0 - 255. 255 = max speed.
|
|
Second value is PWM enable 0/1.
|
|
|
|
sensor[1-3]: (not on w83781d)
|
|
Controls the sensor type. To change to a different
|
|
sensor type, for example, do 'echo 2 > sensor1'.
|
|
Valid values:
|
|
1: Pentium II / Celeron diode
|
|
2: 2N3904 Transistor in a diode configuration
|
|
3435: Thermistor with Beta = 3435. Beta is a measure
|
|
of sensitivity to temperature.
|
|
Thermistors with other Betas could in theory be supported
|
|
after correspondence with Winbond. See below.
|
|
|
|
rt[1-3]: (781d only)
|
|
32-byte tables controlling the conversion from
|
|
resistance to temperature for thermistors.
|
|
For the curious only. Writing to these entries will
|
|
probably render temperature sensing insane.
|
|
Only set at initialization; not updated every 1.5 seconds.
|
|
|
|
|
|
|
|
TO DO:
|
|
-----
|
|
782d programmable pins
|
|
|
|
|
|
NOTES:
|
|
-----
|
|
783s has no in1 so that in[2-6] are compatible with the 781d/782d.
|
|
|
|
783s pin is programmable for -5V or temp1; defaults to -5V,
|
|
no control in driver so temp1 doesn't work.
|
|
|
|
782d and 783s datasheets differ on which is pwm1 and which is pwm2.
|
|
We chose to follow 782d.
|
|
|
|
782d and 783s pin is programmable for fan3 input or pwm2 output;
|
|
defaults to fan3 input.
|
|
If pwm2 is enabled (with echo 255 1 > pwm2), then
|
|
fan3 will report 0.
|
|
|
|
782d has pwm1-2 for isa, pwm1-4 for i2c. (pwm3-4 share pins with
|
|
the isa pins)
|
|
|
|
781d allowable values for fan_div are 1,2,4,8.
|
|
782d/783s allowable values for fan_div are 1,2,4,8,16,32,64,128.
|
|
|
|
|
|
|
|
Data sheet updates:
|
|
------------------
|
|
- Mask off lower bit of all ID registers.
|
|
|
|
- PWM clock registers:
|
|
|
|
000: master / 512
|
|
001: master / 1024
|
|
010: master / 2048
|
|
011: master / 4096
|
|
100: master / 8192
|
|
|
|
|
|
Answers from Winbond tech support
|
|
---------------------------------
|
|
>
|
|
> 1) In the W83781D data sheet section 7.2 last paragraph, it talks about
|
|
> reprogramming the R-T table if the Beta of the thermistor is not
|
|
> 3435K. The R-T table is described briefly in section 8.20.
|
|
> What formulas do I use to program a new R-T table for a given Beta?
|
|
>
|
|
We are sorry that the calculation for R-T table value is
|
|
confidential. If you have another Beta value of thermistor, we can help
|
|
to calculate the R-T table for you. But you should give us real R-T
|
|
Table which can be gotten by thermistor vendor. Therefore we will calculate
|
|
them and obtain 32-byte data, and you can fill the 32-byte data to the
|
|
register in Bank0.CR51 of W83781D.
|
|
|
|
|
|
> 2) In the W83782D data sheet, it mentions that pins 38, 39, and 40 are
|
|
> programmable to be either thermistor or Pentium II diode inputs.
|
|
> How do I program them for diode inputs? I can't find any register
|
|
> to program these to be diode inputs.
|
|
--> You may program Bank0 CR[5Dh] and CR[59h] registers.
|
|
|
|
CR[5Dh] bit 1(VTIN1) bit 2(VTIN2) bit 3(VTIN3)
|
|
|
|
thermistor 0 0 0
|
|
diode 1 1 1
|
|
|
|
|
|
(error) CR[59h] bit 4(VTIN1) bit 2(VTIN2) bit 3(VTIN3)
|
|
(right) CR[59h] bit 4(VTIN1) bit 5(VTIN2) bit 6(VTIN3)
|
|
|
|
PII thermal diode 1 1 1
|
|
2N3904 diode 0 0 0
|
|
|
|
|
|
Author/Maintainer
|
|
-----------------
|
|
Original 781D support: Frodo and Phil (sensors@stimpy.netroedge.com)
|
|
782D/783S support added by: Mark D. Studebaker (mdsxyz123@yahoo.com)
|
|
Send requests to the sensors@stimpy.netroedge.com mailing list.
|
|
|
|
|
|
Asus Clones
|
|
-----------
|
|
|
|
We have no datasheets for the Asus clones (AS99127F and ASB100 Bach).
|
|
Here are some very useful information that were given to us by Alex Van
|
|
Kaam about how to detect these chips, and how to read their values. He
|
|
also gives advice for another Asus chipset, the Mozart-2 (which we
|
|
don't support yet). Thanks Alex!
|
|
I reworded some parts and added personal comments.
|
|
|
|
# Detection:
|
|
|
|
AS99127F rev.1, AS99127F rev.2 and ASB100:
|
|
- I2C address range: 0x29 - 0x2F
|
|
- If register 0x58 holds 0x31 then we have an Asus (either ASB100 or
|
|
AS99127F)
|
|
- Which one depends on register 0x4F (manufacturer ID):
|
|
0x06 or 0x94: ASB100
|
|
0x12 or 0xC3: AS99127F rev.1
|
|
0x5C or 0xA3: AS99127F rev.2
|
|
Note that 0x5CA3 is Winbond's ID (WEC), which let us think Asus get their
|
|
AS99127F rev.2 direct from Winbond. The other codes mean ATT and DVC,
|
|
respectively. ATT could stand for Asustek something (although it would be
|
|
very badly chosen IMHO), I don't know what DVC could stand for. Maybe
|
|
these codes simply aren't meant to be decoded that way.
|
|
|
|
Mozart-2:
|
|
- I2C address: 0x77
|
|
- If register 0x58 holds 0x56 or 0x10 then we have a Mozart-2
|
|
- Of the mozart there are 3 types:
|
|
0x58=0x56, 0x4E=0x94, 0x4F=0x36: Asus ASM58 Mozart-2
|
|
0x58=0x56, 0x4E=0x94, 0x4F=0x06: Asus AS2K129R Mozart-2
|
|
0x58=0x10, 0x4E=0x5C, 0x4F=0xA3: Asus ??? Mozart-2
|
|
You can handle all 3 the exact same way :)
|
|
|
|
# Temperature sensors:
|
|
|
|
ASB100:
|
|
- sensor 1: register 0x27
|
|
- sensor 2 & 3 are the 2 LM75's on the SMBus
|
|
- sensor 4: register 0x17
|
|
Remark: I noticed that on Intel boards sensor 2 is used for the CPU
|
|
and 4 is ignored/stuck, on AMD boards sensor 4 is the CPU and sensor 2 is
|
|
either ignored or a socket temperature.
|
|
|
|
AS99127F (rev.1 and 2 alike):
|
|
- sensor 1: register 0x27
|
|
- sensor 2 & 3 are the 2 LM75's on the SMBus
|
|
Remark: Register 0x5b is suspected to be temperature type selector. Bit 1
|
|
would control temp1, bit 3 temp2 and bit 5 temp3.
|
|
|
|
Mozart-2:
|
|
- sensor 1: register 0x27
|
|
- sensor 2: register 0x13
|
|
|
|
# Fan sensors:
|
|
|
|
ASB100, AS99127F (rev.1 and 2 alike):
|
|
- 3 fans, identical to the W83781D
|
|
|
|
Mozart-2:
|
|
- 2 fans only, 1350000/rpm/div
|
|
- fan 1: register 0x28, divisor on register 0xA1 (bits 4-5)
|
|
- fan 2: register 0x29, divisor on register 0xA1 (bits 6-7)
|
|
|
|
# Voltages:
|
|
|
|
This is where there is a diffrence between AS99127F rev.1 and 2.
|
|
Remark: The difference is similar to the difference between
|
|
W83781D and W83782D.
|
|
|
|
ASB100:
|
|
in0=r(0x20)*0.016
|
|
in1=r(0x21)*0.016
|
|
in2=r(0x22)*0.016
|
|
in3=r(0x23)*0.016*1.68
|
|
in4=r(0x24)*0.016*3.8
|
|
in5=r(0x25)*(-0.016)*3.97
|
|
in6=r(0x26)*(-0.016)*1.666
|
|
|
|
AS99127F rev.1:
|
|
in0=r(0x20)*0.016
|
|
in1=r(0x21)*0.016
|
|
in2=r(0x22)*0.016
|
|
in3=r(0x23)*0.016*1.68
|
|
in4=r(0x24)*0.016*3.8
|
|
in5=r(0x25)*(-0.016)*3.97
|
|
in6=r(0x26)*(-0.016)*1.503
|
|
|
|
AS99127F rev.2:
|
|
in0=r(0x20)*0.016
|
|
in1=r(0x21)*0.016
|
|
in2=r(0x22)*0.016
|
|
in3=r(0x23)*0.016*1.68
|
|
in4=r(0x24)*0.016*3.8
|
|
in5=(r(0x25)*0.016-3.6)*5.14+3.6
|
|
in6=(r(0x26)*0.016-3.6)*3.14+3.6
|
|
|
|
Mozart-2:
|
|
in0=r(0x20)*0.016
|
|
in1=255
|
|
in2=r(0x22)*0.016
|
|
in3=r(0x23)*0.016*1.68
|
|
in4=r(0x24)*0.016*4
|
|
in5=255
|
|
in6=255
|