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: https://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
==== =========
