Kernel driver w83781d
=====================

Supported chips:
  * Winbond W83781D
    Prefix: 'w83781d'
    Addresses scanned: I2C 0x20 - 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 0x20 - 0x2f, ISA 0x290 (8 I/O ports)
    Datasheet: http://www.winbond.com/PDF/sheet/w83782d.pdf
  * Winbond W83783S
    Prefix: 'w83783s'
    Addresses scanned: I2C 0x2d
    Datasheet: http://www.winbond-usa.com/products/winbond_products/pdfs/PCIC/w83783s.pdf
  * Winbond W83627HF
    Prefix: 'w83627hf'
    Addresses scanned: I2C 0x20 - 0x2f, ISA 0x290 (8 I/O ports)
    Datasheet: http://www.winbond.com/PDF/sheet/w83627hf.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,
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.

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
w83627hf    9       3       2       3       0x21    0x5ca3  yes     yes(LPC)
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 and W83627HF only)
0x010000: in7 (W83782D and W83627HF only)
0x020000: in8 (W83782D and W83627HF 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-attemp 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.
