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
==== =========
