summaryrefslogtreecommitdiff
path: root/Documentation/hwmon/w83781d
diff options
context:
space:
mode:
authorMauro Carvalho Chehab <mchehab+samsung@kernel.org>2019-04-17 12:46:29 +0300
committerGuenter Roeck <linux@roeck-us.net>2019-04-17 20:37:23 +0300
commit7ebd8b66dd9e5a0b65e5ee5e2b8e7ca382ec97b7 (patch)
tree9db30159bd32bec125c7d49e80a79bb7c4da0c8e /Documentation/hwmon/w83781d
parentb04f2f7d387b3160883c2a1f5e2285483a791e82 (diff)
downloadlinux-7ebd8b66dd9e5a0b65e5ee5e2b8e7ca382ec97b7.tar.xz
docs: hwmon: Add an index file and rename docs to *.rst
Now that all files were converted to ReST format, rename them and add an index. Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org> Signed-off-by: Guenter Roeck <linux@roeck-us.net>
Diffstat (limited to 'Documentation/hwmon/w83781d')
-rw-r--r--Documentation/hwmon/w83781d513
1 files changed, 0 insertions, 513 deletions
diff --git a/Documentation/hwmon/w83781d b/Documentation/hwmon/w83781d
deleted file mode 100644
index f36d33dfb704..000000000000
--- a/Documentation/hwmon/w83781d
+++ /dev/null
@@ -1,513 +0,0 @@
-Kernel driver w83781d
-=====================
-
-Supported chips:
-
- * Winbond W83781D
-
- Prefix: 'w83781d'
-
- Addresses scanned: I2C 0x28 - 0x2f, ISA 0x290 (8 I/O ports)
-
- Datasheet: http://www.winbond-usa.com/products/winbond_products/pdfs/PCIC/w83781d.pdf
-
- * Winbond W83782D
-
- Prefix: 'w83782d'
-
- Addresses scanned: I2C 0x28 - 0x2f, ISA 0x290 (8 I/O ports)
-
- Datasheet: http://www.winbond.com
-
- * Winbond W83783S
-
- Prefix: 'w83783s'
-
- Addresses scanned: I2C 0x2d
-
- Datasheet: http://www.winbond-usa.com/products/winbond_products/pdfs/PCIC/w83783s.pdf
-
- * Asus AS99127F
-
- Prefix: 'as99127f'
-
- Addresses scanned: I2C 0x28 - 0x2f
-
- Datasheet: Unavailable from Asus
-
-
-
-Authors:
-
- - Frodo Looijaard <frodol@dds.nl>,
- - Philip Edelbrock <phil@netroedge.com>,
- - Mark Studebaker <mdsxyz123@yahoo.com>
-
-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.
-
-* reset int
- (default 0)
- The driver used to reset the chip on load, but does no more. Use
- 'reset=1' to restore the old behavior. Report if you need to do this.
-
-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.
-
-Description
------------
-
-This driver implements support for the Winbond W83781D, W83782D, W83783S
-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 Asus chips are similar to an I2C-only W83782D.
-
-+----------+---------+--------+-------+-------+---------+--------+------+-----+
-| Chip | #vin | #fanin | #pwm | #temp | wchipid | vendid | i2c | ISA |
-+----------+---------+--------+-------+-------+---------+--------+------+-----+
-| as99127f | 7 | 3 | 0 | 3 | 0x31 | 0x12c3 | yes | no |
-+----------+---------+--------+-------+-------+---------+--------+------+-----+
-| as99127f rev.2 (type_name = as99127f) | 0x31 | 0x5ca3 | yes | no |
-+----------+---------+--------+-------+-------+---------+--------+------+-----+
-| w83781d | 7 | 3 | 0 | 3 | 0x10-1 | 0x5ca3 | yes | yes |
-+----------+---------+--------+-------+-------+---------+--------+------+-----+
-| w83782d | 9 | 3 | 2-4 | 3 | 0x30 | 0x5ca3 | yes | yes |
-+----------+---------+--------+-------+-------+---------+--------+------+-----+
-| w83783s | 5-6 | 3 | 2 | 1-2 | 0x40 | 0x5ca3 | yes | no |
-+----------+---------+--------+-------+-------+---------+--------+------+-----+
-
-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 Celsius. 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 behavior
-can be found by setting the Hysteresis value to +127 degrees Celsius; 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. 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.
-
-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.
-
-Individual alarm and beep bits:
-
-======== ==========================
-0x000001 in0
-0x000002 in1
-0x000004 in2
-0x000008 in3
-0x000010 temp1
-0x000020 temp2 (+temp3 on W83781D)
-0x000040 fan1
-0x000080 fan2
-0x000100 in4
-0x000200 in5
-0x000400 in6
-0x000800 fan3
-0x001000 chassis
-0x002000 temp3 (W83782D only)
-0x010000 in7 (W83782D only)
-0x020000 in8 (W83782D only)
-======== ==========================
-
-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.
-
-AS99127F PROBLEMS
------------------
-The as99127f support was developed without the benefit of a datasheet.
-In most cases it is treated as a w83781d (although revision 2 of the
-AS99127F looks more like a w83782d).
-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.
-The driver now takes care of this so that user-space applications
-don't have to know about it.
-
-Known problems:
- - Problems with diode/thermistor settings (supported?)
- - One user reports fans stopping under high server load.
- - Revision 2 seems to have 2 PWM registers but we don't know
- how to handle them. More details below.
-
-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.
-
-
-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)
-
-Data sheet updates
-------------------
- - 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
- =============================== =============== ============== ============
-
-
-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 difference 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
-
-
-PWM
-^^^
-
-* Additional info about PWM on the AS99127F (may apply to other Asus
- chips as well) by Jean Delvare as of 2004-04-09:
-
-AS99127F revision 2 seems to have two PWM registers at 0x59 and 0x5A,
-and a temperature sensor type selector at 0x5B (which basically means
-that they swapped registers 0x59 and 0x5B when you compare with Winbond
-chips).
-Revision 1 of the chip also has the temperature sensor type selector at
-0x5B, but PWM registers have no effect.
-
-We don't know exactly how the temperature sensor type selection works.
-Looks like bits 1-0 are for temp1, bits 3-2 for temp2 and bits 5-4 for
-temp3, although it is possible that only the most significant bit matters
-each time. So far, values other than 0 always broke the readings.
-
-PWM registers seem to be split in two parts: bit 7 is a mode selector,
-while the other bits seem to define a value or threshold.
-
-When bit 7 is clear, bits 6-0 seem to hold a threshold value. If the value
-is below a given limit, the fan runs at low speed. If the value is above
-the limit, the fan runs at full speed. We have no clue as to what the limit
-represents. Note that there seem to be some inertia in this mode, speed
-changes may need some time to trigger. Also, an hysteresis mechanism is
-suspected since walking through all the values increasingly and then
-decreasingly led to slightly different limits.
-
-When bit 7 is set, bits 3-0 seem to hold a threshold value, while bits 6-4
-would not be significant. If the value is below a given limit, the fan runs
-at full speed, while if it is above the limit it runs at low speed (so this
-is the contrary of the other mode, in a way). Here again, we don't know
-what the limit is supposed to represent.
-
-One remarkable thing is that the fans would only have two or three
-different speeds (transitional states left apart), not a whole range as
-you usually get with PWM.
-
-As a conclusion, you can write 0x00 or 0x8F to the PWM registers to make
-fans run at low speed, and 0x7F or 0x80 to make them run at full speed.
-
-Please contact us if you can figure out how it is supposed to work. As
-long as we don't know more, the w83781d driver doesn't handle PWM on
-AS99127F chips at all.
-
-* Additional info about PWM on the AS99127F rev.1 by Hector Martin:
-
-I've been fiddling around with the (in)famous 0x59 register and
-found out the following values do work as a form of coarse pwm:
-
-0x80
- - seems to turn fans off after some time(1-2 minutes)... might be
- some form of auto-fan-control based on temp? hmm (Qfan? this mobo is an
- old ASUS, it isn't marketed as Qfan. Maybe some beta pre-attempt at Qfan
- that was dropped at the BIOS)
-0x81
- - off
-0x82
- - slightly "on-ner" than off, but my fans do not get to move. I can
- hear the high-pitched PWM sound that motors give off at too-low-pwm.
-0x83
- - now they do move. Estimate about 70% speed or so.
-0x84-0x8f
- - full on
-
-Changing the high nibble doesn't seem to do much except the high bit
-(0x80) must be set for PWM to work, else the current pwm doesn't seem to
-change.
-
-My mobo is an ASUS A7V266-E. This behavior is similar to what I got
-with speedfan under Windows, where 0-15% would be off, 15-2x% (can't
-remember the exact value) would be 70% and higher would be full on.
-
-* Additional info about PWM on the AS99127F rev.1 from lm-sensors
- ticket #2350:
-
-I conducted some experiment on Asus P3B-F motherboard with AS99127F
-(Ver. 1).
-
-I confirm that 0x59 register control the CPU_Fan Header on this
-motherboard, and 0x5a register control PWR_Fan.
-
-In order to reduce the dependency of specific fan, the measurement is
-conducted with a digital scope without fan connected. I found out that
-P3B-F actually output variable DC voltage on fan header center pin,
-looks like PWM is filtered on this motherboard.
-
-Here are some of measurements:
-
-==== =========
-0x80 20 mV
-0x81 20 mV
-0x82 232 mV
-0x83 1.2 V
-0x84 2.31 V
-0x85 3.44 V
-0x86 4.62 V
-0x87 5.81 V
-0x88 7.01 V
-9x89 8.22 V
-0x8a 9.42 V
-0x8b 10.6 V
-0x8c 11.9 V
-0x8d 12.4 V
-0x8e 12.4 V
-0x8f 12.4 V
-==== =========