Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

3 Commits   0 Branches   0 Tags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   1) Kernel driver w83781d
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   2) =====================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   3) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   4) Supported chips:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   5) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   6)   * Winbond W83781D
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   7) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   8)     Prefix: 'w83781d'
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   9) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  10)     Addresses scanned: I2C 0x28 - 0x2f, ISA 0x290 (8 I/O ports)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  11) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  12)     Datasheet: http://www.winbond-usa.com/products/winbond_products/pdfs/PCIC/w83781d.pdf
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  13) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  14)   * Winbond W83782D
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  15) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  16)     Prefix: 'w83782d'
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  17) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  18)     Addresses scanned: I2C 0x28 - 0x2f, ISA 0x290 (8 I/O ports)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  19) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  20)     Datasheet: https://www.winbond.com
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  21) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  22)   * Winbond W83783S
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  23) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  24)     Prefix: 'w83783s'
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  25) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  26)     Addresses scanned: I2C 0x2d
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  27) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  28)     Datasheet: http://www.winbond-usa.com/products/winbond_products/pdfs/PCIC/w83783s.pdf
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  29) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  30)   * Asus AS99127F
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  31) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  32)     Prefix: 'as99127f'
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  33) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  34)     Addresses scanned: I2C 0x28 - 0x2f
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  35) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  36)     Datasheet: Unavailable from Asus
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  37) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  38) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  39) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  40) Authors:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  41) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  42)       - Frodo Looijaard <frodol@dds.nl>,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  43)       - Philip Edelbrock <phil@netroedge.com>,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  44)       - Mark Studebaker <mdsxyz123@yahoo.com>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  45) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  46) Module parameters
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  47) -----------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  48) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  49) * init int
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  50)     (default 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  51) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  52)     Use 'init=0' to bypass initializing the chip.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  53)     Try this if your computer crashes when you load the module.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  54) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  55) * reset int
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  56)     (default 0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  57)     The driver used to reset the chip on load, but does no more. Use
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  58)     'reset=1' to restore the old behavior. Report if you need to do this.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  59) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  60) force_subclients=bus,caddr,saddr,saddr
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  61)   This is used to force the i2c addresses for subclients of
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  62)   a certain chip. Typical usage is `force_subclients=0,0x2d,0x4a,0x4b`
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  63)   to force the subclients of chip 0x2d on bus 0 to i2c addresses
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  64)   0x4a and 0x4b. This parameter is useful for certain Tyan boards.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  65) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  66) Description
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  67) -----------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  68) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  69) This driver implements support for the Winbond W83781D, W83782D, W83783S
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  70) chips, and the Asus AS99127F chips. We will refer to them collectively as
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  71) W8378* chips.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  72) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  73) There is quite some difference between these chips, but they are similar
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  74) enough that it was sensible to put them together in one driver.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  75) The Asus chips are similar to an I2C-only W83782D.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  76) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  77) +----------+---------+--------+-------+-------+---------+--------+------+-----+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  78) | Chip     | #vin    | #fanin | #pwm  | #temp | wchipid | vendid | i2c  | ISA |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  79) +----------+---------+--------+-------+-------+---------+--------+------+-----+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  80) | as99127f | 7       | 3      | 0     | 3     | 0x31    | 0x12c3 | yes  |  no |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  81) +----------+---------+--------+-------+-------+---------+--------+------+-----+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  82) | as99127f rev.2 (type_name = as99127f)       | 0x31    | 0x5ca3 | yes  |  no |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  83) +----------+---------+--------+-------+-------+---------+--------+------+-----+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  84) | w83781d  | 7       | 3      | 0     | 3     | 0x10-1  | 0x5ca3 | yes  | yes |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  85) +----------+---------+--------+-------+-------+---------+--------+------+-----+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  86) | w83782d  | 9       | 3      | 2-4   | 3     | 0x30    | 0x5ca3 | yes  | yes |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  87) +----------+---------+--------+-------+-------+---------+--------+------+-----+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  88) | w83783s  | 5-6     | 3      | 2     |  1-2  | 0x40    | 0x5ca3 | yes  |  no |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  89) +----------+---------+--------+-------+-------+---------+--------+------+-----+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  90) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  91) Detection of these chips can sometimes be foiled because they can be in
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  92) an internal state that allows no clean access. If you know the address
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  93) of the chip, use a 'force' parameter; this will put them into a more
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  94) well-behaved state first.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  95) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  96) The W8378* implements temperature sensors (three on the W83781D and W83782D,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  97) two on the W83783S), three fan rotation speed sensors, voltage sensors
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  98) (seven on the W83781D, nine on the W83782D and six on the W83783S), VID
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  99) lines, alarms with beep warnings, and some miscellaneous stuff.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) Temperatures are measured in degrees Celsius. There is always one main
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) temperature sensor, and one (W83783S) or two (W83781D and W83782D) other
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) sensors. An alarm is triggered for the main sensor once when the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) Overtemperature Shutdown limit is crossed; it is triggered again as soon as
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) it drops below the Hysteresis value. A more useful behavior
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) can be found by setting the Hysteresis value to +127 degrees Celsius; in
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) this case, alarms are issued during all the time when the actual temperature
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) is above the Overtemperature Shutdown value. The driver sets the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) hysteresis value for temp1 to 127 at initialization.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) For the other temperature sensor(s), an alarm is triggered when the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) temperature gets higher then the Overtemperature Shutdown value; it stays
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) on until the temperature falls below the Hysteresis value. But on the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114) W83781D, there is only one alarm that functions for both other sensors!
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) Temperatures are guaranteed within a range of -55 to +125 degrees. The
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) main temperature sensors has a resolution of 1 degree; the other sensor(s)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117) of 0.5 degree.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119) Fan rotation speeds are reported in RPM (rotations per minute). An alarm is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120) triggered if the rotation speed has dropped below a programmable limit. Fan
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121) readings can be divided by a programmable divider (1, 2, 4 or 8 for the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122) W83781D; 1, 2, 4, 8, 16, 32, 64 or 128 for the others) to give
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123) the readings more range or accuracy. Not all RPM values can accurately
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124) be represented, so some rounding is done. With a divider of 2, the lowest
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125) representable value is around 2600 RPM.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127) Voltage sensors (also known as IN sensors) report their values in volts.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128) An alarm is triggered if the voltage has crossed a programmable minimum
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129) or maximum limit. Note that minimum in this case always means 'closest to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130) zero'; this is important for negative voltage measurements. All voltage
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131) inputs can measure voltages between 0 and 4.08 volts, with a resolution
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132) of 0.016 volt.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134) The VID lines encode the core voltage value: the voltage level your processor
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135) should work with. This is hardcoded by the mainboard and/or processor itself.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136) It is a value in volts. When it is unconnected, you will often find the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 137) value 3.50 V here.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 138) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 139) The W83782D and W83783S temperature conversion machine understands about
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 140) several kinds of temperature probes. You can program the so-called
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 141) beta value in the sensor files. '1' is the PII/Celeron diode, '2' is the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 142) TN3904 transistor, and 3435 the default thermistor value. Other values
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 143) are (not yet) supported.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 144) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 145) In addition to the alarms described above, there is a CHAS alarm on the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 146) chips which triggers if your computer case is open.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 147) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 148) When an alarm goes off, you can be warned by a beeping signal through
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 149) your computer speaker. It is possible to enable all beeping globally,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 150) or only the beeping for some alarms.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 151) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 152) Individual alarm and beep bits:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 153) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 154) ======== ==========================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 155) 0x000001 in0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 156) 0x000002 in1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 157) 0x000004 in2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 158) 0x000008 in3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 159) 0x000010 temp1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 160) 0x000020 temp2 (+temp3 on W83781D)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 161) 0x000040 fan1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 162) 0x000080 fan2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 163) 0x000100 in4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 164) 0x000200 in5
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 165) 0x000400 in6
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 166) 0x000800 fan3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 167) 0x001000 chassis
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 168) 0x002000 temp3 (W83782D only)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 169) 0x010000 in7 (W83782D only)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 170) 0x020000 in8 (W83782D only)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 171) ======== ==========================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 172) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 173) If an alarm triggers, it will remain triggered until the hardware register
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 174) is read at least once. This means that the cause for the alarm may
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 175) already have disappeared! Note that in the current implementation, all
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 176) hardware registers are read whenever any data is read (unless it is less
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 177) than 1.5 seconds since the last update). This means that you can easily
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 178) miss once-only alarms.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 179) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 180) The chips only update values each 1.5 seconds; reading them more often
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 181) will do no harm, but will return 'old' values.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 182) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 183) AS99127F PROBLEMS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 184) -----------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 185) The as99127f support was developed without the benefit of a datasheet.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 186) In most cases it is treated as a w83781d (although revision 2 of the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 187) AS99127F looks more like a w83782d).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 188) This support will be BETA until a datasheet is released.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 189) One user has reported problems with fans stopping
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 190) occasionally.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 191) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 192) Note that the individual beep bits are inverted from the other chips.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 193) The driver now takes care of this so that user-space applications
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 194) don't have to know about it.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 195) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 196) Known problems:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 197) 	- Problems with diode/thermistor settings (supported?)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 198) 	- One user reports fans stopping under high server load.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 199) 	- Revision 2 seems to have 2 PWM registers but we don't know
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 200) 	  how to handle them. More details below.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 201) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 202) These will not be fixed unless we get a datasheet.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 203) If you have problems, please lobby Asus to release a datasheet.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 204) Unfortunately several others have without success.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 205) Please do not send mail to us asking for better as99127f support.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 206) We have done the best we can without a datasheet.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 207) Please do not send mail to the author or the sensors group asking for
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 208) a datasheet or ideas on how to convince Asus. We can't help.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 209) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 210) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 211) NOTES
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 212) -----
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 213)   783s has no in1 so that in[2-6] are compatible with the 781d/782d.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 214) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 215)   783s pin is programmable for -5V or temp1; defaults to -5V,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 216)   no control in driver so temp1 doesn't work.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 217) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 218)   782d and 783s datasheets differ on which is pwm1 and which is pwm2.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 219)   We chose to follow 782d.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 220) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 221)   782d and 783s pin is programmable for fan3 input or pwm2 output;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 222)   defaults to fan3 input.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 223)   If pwm2 is enabled (with echo 255 1 > pwm2), then
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 224)   fan3 will report 0.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 225) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 226)   782d has pwm1-2 for ISA, pwm1-4 for i2c. (pwm3-4 share pins with
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 227)   the ISA pins)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 228) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 229) Data sheet updates
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 230) ------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 231) 	- PWM clock registers:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 232) 		* 000: master /  512
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 233) 		* 001: master / 1024
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 234) 		* 010: master / 2048
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 235) 		* 011: master / 4096
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 236) 		* 100: master / 8192
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 237) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 238) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 239) Answers from Winbond tech support
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 240) ---------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 241) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 242) ::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 243) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 244)   >
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 245)   > 1) In the W83781D data sheet section 7.2 last paragraph, it talks about
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 246)   >    reprogramming the R-T table if the Beta of the thermistor is not
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 247)   >    3435K. The R-T table is described briefly in section 8.20.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 248)   >    What formulas do I use to program a new R-T table for a given Beta?
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 249)   >
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 250) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 251)   We are sorry that the calculation for R-T table value is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 252)   confidential. If you have another Beta value of thermistor, we can help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 253)   to calculate the R-T table for you. But you should give us real R-T
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 254)   Table which can be gotten by thermistor vendor. Therefore we will calculate
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 255)   them and obtain 32-byte data, and you can fill the 32-byte data to the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 256)   register in Bank0.CR51 of W83781D.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 257) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 258) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 259)   > 2) In the W83782D data sheet, it mentions that pins 38, 39, and 40 are
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 260)   >    programmable to be either thermistor or Pentium II diode inputs.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 261)   >    How do I program them for diode inputs? I can't find any register
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 262)   >    to program these to be diode inputs.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 263) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 264)   You may program Bank0 CR[5Dh] and CR[59h] registers.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 265) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 266)   =============================== =============== ============== ============
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 267) 	CR[5Dh]    		bit 1(VTIN1)    bit 2(VTIN2)   bit 3(VTIN3)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 268) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 269) 		thermistor                0		 0		0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 270) 	diode 			  1		 1		1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 271) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 272) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 273)   (error) CR[59h] 		bit 4(VTIN1)	bit 2(VTIN2)   bit 3(VTIN3)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 274)   (right) CR[59h] 		bit 4(VTIN1)	bit 5(VTIN2)   bit 6(VTIN3)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 275) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 276) 	PII thermal diode         1		 1		1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 277) 	2N3904	diode		  0		 0		0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 278)   =============================== =============== ============== ============
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 279) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 280) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 281) Asus Clones
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 282) -----------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 283) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 284) We have no datasheets for the Asus clones (AS99127F and ASB100 Bach).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 285) Here are some very useful information that were given to us by Alex Van
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 286) Kaam about how to detect these chips, and how to read their values. He
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 287) also gives advice for another Asus chipset, the Mozart-2 (which we
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 288) don't support yet). Thanks Alex!
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 289) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 290) I reworded some parts and added personal comments.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 291) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 292) Detection
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 293) ^^^^^^^^^
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 294) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 295) AS99127F rev.1, AS99127F rev.2 and ASB100:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 296) - I2C address range: 0x29 - 0x2F
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 297) - If register 0x58 holds 0x31 then we have an Asus (either ASB100 or AS99127F)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 298) - Which one depends on register 0x4F (manufacturer ID):
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 299) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 300)   - 0x06 or 0x94: ASB100
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 301)   - 0x12 or 0xC3: AS99127F rev.1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 302)   - 0x5C or 0xA3: AS99127F rev.2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 303) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 304)   Note that 0x5CA3 is Winbond's ID (WEC), which let us think Asus get their
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 305)   AS99127F rev.2 direct from Winbond. The other codes mean ATT and DVC,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 306)   respectively. ATT could stand for Asustek something (although it would be
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 307)   very badly chosen IMHO), I don't know what DVC could stand for. Maybe
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 308)   these codes simply aren't meant to be decoded that way.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 309) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 310) Mozart-2:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 311) - I2C address: 0x77
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 312) - If register 0x58 holds 0x56 or 0x10 then we have a Mozart-2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 313) - Of the Mozart there are 3 types:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 314) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 315)   - 0x58=0x56, 0x4E=0x94, 0x4F=0x36: Asus ASM58 Mozart-2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 316)   - 0x58=0x56, 0x4E=0x94, 0x4F=0x06: Asus AS2K129R Mozart-2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 317)   - 0x58=0x10, 0x4E=0x5C, 0x4F=0xA3: Asus ??? Mozart-2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 318) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 319)   You can handle all 3 the exact same way :)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 320) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 321) Temperature sensors
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 322) ^^^^^^^^^^^^^^^^^^^
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 323) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 324) ASB100:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 325)   - sensor 1: register 0x27
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 326)   - sensor 2 & 3 are the 2 LM75's on the SMBus
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 327)   - sensor 4: register 0x17
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 328) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 329) Remark:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 330) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 331)   I noticed that on Intel boards sensor 2 is used for the CPU
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 332)   and 4 is ignored/stuck, on AMD boards sensor 4 is the CPU and sensor 2 is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 333)   either ignored or a socket temperature.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 334) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 335) AS99127F (rev.1 and 2 alike):
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 336)   - sensor 1: register 0x27
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 337)   - sensor 2 & 3 are the 2 LM75's on the SMBus
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 338) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 339) Remark:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 340) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 341)   Register 0x5b is suspected to be temperature type selector. Bit 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 342)   would control temp1, bit 3 temp2 and bit 5 temp3.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 343) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 344) Mozart-2:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 345)   - sensor 1: register 0x27
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 346)   - sensor 2: register 0x13
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 347) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 348) Fan sensors
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 349) ^^^^^^^^^^^
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 350) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 351) ASB100, AS99127F (rev.1 and 2 alike):
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 352)   - 3 fans, identical to the W83781D
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 353) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 354) Mozart-2:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 355)   - 2 fans only, 1350000/RPM/div
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 356)   - fan 1: register 0x28,  divisor on register 0xA1 (bits 4-5)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 357)   - fan 2: register 0x29,  divisor on register 0xA1 (bits 6-7)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 358) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 359) Voltages
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 360) ^^^^^^^^
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 361) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 362) This is where there is a difference between AS99127F rev.1 and 2.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 363) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 364) Remark:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 365) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 366)   The difference is similar to the difference between
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 367)   W83781D and W83782D.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 368) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 369) ASB100:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 370)   - in0=r(0x20)*0.016
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 371)   - in1=r(0x21)*0.016
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 372)   - in2=r(0x22)*0.016
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 373)   - in3=r(0x23)*0.016*1.68
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 374)   - in4=r(0x24)*0.016*3.8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 375)   - in5=r(0x25)*(-0.016)*3.97
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 376)   - in6=r(0x26)*(-0.016)*1.666
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 377) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 378) AS99127F rev.1:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 379)   - in0=r(0x20)*0.016
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 380)   - in1=r(0x21)*0.016
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 381)   - in2=r(0x22)*0.016
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 382)   - in3=r(0x23)*0.016*1.68
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 383)   - in4=r(0x24)*0.016*3.8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 384)   - in5=r(0x25)*(-0.016)*3.97
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 385)   - in6=r(0x26)*(-0.016)*1.503
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 386) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 387) AS99127F rev.2:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 388)   - in0=r(0x20)*0.016
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 389)   - in1=r(0x21)*0.016
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 390)   - in2=r(0x22)*0.016
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 391)   - in3=r(0x23)*0.016*1.68
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 392)   - in4=r(0x24)*0.016*3.8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 393)   - in5=(r(0x25)*0.016-3.6)*5.14+3.6
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 394)   - in6=(r(0x26)*0.016-3.6)*3.14+3.6
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 395) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 396) Mozart-2:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 397)   - in0=r(0x20)*0.016
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 398)   - in1=255
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 399)   - in2=r(0x22)*0.016
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 400)   - in3=r(0x23)*0.016*1.68
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 401)   - in4=r(0x24)*0.016*4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 402)   - in5=255
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 403)   - in6=255
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 404) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 405) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 406) PWM
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 407) ^^^
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 408) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 409) * Additional info about PWM on the AS99127F (may apply to other Asus
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 410)   chips as well) by Jean Delvare as of 2004-04-09:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 411) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 412) AS99127F revision 2 seems to have two PWM registers at 0x59 and 0x5A,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 413) and a temperature sensor type selector at 0x5B (which basically means
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 414) that they swapped registers 0x59 and 0x5B when you compare with Winbond
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 415) chips).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 416) Revision 1 of the chip also has the temperature sensor type selector at
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 417) 0x5B, but PWM registers have no effect.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 418) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 419) We don't know exactly how the temperature sensor type selection works.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 420) Looks like bits 1-0 are for temp1, bits 3-2 for temp2 and bits 5-4 for
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 421) temp3, although it is possible that only the most significant bit matters
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 422) each time. So far, values other than 0 always broke the readings.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 423) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 424) PWM registers seem to be split in two parts: bit 7 is a mode selector,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 425) while the other bits seem to define a value or threshold.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 426) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 427) When bit 7 is clear, bits 6-0 seem to hold a threshold value. If the value
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 428) is below a given limit, the fan runs at low speed. If the value is above
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 429) the limit, the fan runs at full speed. We have no clue as to what the limit
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 430) represents. Note that there seem to be some inertia in this mode, speed
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 431) changes may need some time to trigger. Also, an hysteresis mechanism is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 432) suspected since walking through all the values increasingly and then
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 433) decreasingly led to slightly different limits.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 434) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 435) When bit 7 is set, bits 3-0 seem to hold a threshold value, while bits 6-4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 436) would not be significant. If the value is below a given limit, the fan runs
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 437) at full speed, while if it is above the limit it runs at low speed (so this
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 438) is the contrary of the other mode, in a way). Here again, we don't know
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 439) what the limit is supposed to represent.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 440) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 441) One remarkable thing is that the fans would only have two or three
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 442) different speeds (transitional states left apart), not a whole range as
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 443) you usually get with PWM.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 444) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 445) As a conclusion, you can write 0x00 or 0x8F to the PWM registers to make
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 446) fans run at low speed, and 0x7F or 0x80 to make them run at full speed.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 447) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 448) Please contact us if you can figure out how it is supposed to work. As
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 449) long as we don't know more, the w83781d driver doesn't handle PWM on
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 450) AS99127F chips at all.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 451) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 452) * Additional info about PWM on the AS99127F rev.1 by Hector Martin:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 453) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 454) I've been fiddling around with the (in)famous 0x59 register and
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 455) found out the following values do work as a form of coarse pwm:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 456) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 457) 0x80
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 458)  - seems to turn fans off after some time(1-2 minutes)... might be
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 459)    some form of auto-fan-control based on temp? hmm (Qfan? this mobo is an
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 460)    old ASUS, it isn't marketed as Qfan. Maybe some beta pre-attempt at Qfan
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 461)    that was dropped at the BIOS)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 462) 0x81
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 463)  - off
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 464) 0x82
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 465)  - slightly "on-ner" than off, but my fans do not get to move. I can
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 466)    hear the high-pitched PWM sound that motors give off at too-low-pwm.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 467) 0x83
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 468)  - now they do move. Estimate about 70% speed or so.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 469) 0x84-0x8f
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 470)  - full on
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 471) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 472) Changing the high nibble doesn't seem to do much except the high bit
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 473) (0x80) must be set for PWM to work, else the current pwm doesn't seem to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 474) change.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 475) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 476) My mobo is an ASUS A7V266-E. This behavior is similar to what I got
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 477) with speedfan under Windows, where 0-15% would be off, 15-2x% (can't
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 478) remember the exact value) would be 70% and higher would be full on.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 479) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 480) * Additional info about PWM on the AS99127F rev.1 from lm-sensors
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 481)   ticket #2350:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 482) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 483) I conducted some experiment on Asus P3B-F motherboard with AS99127F
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 484) (Ver. 1).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 485) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 486) I confirm that 0x59 register control the CPU_Fan Header on this
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 487) motherboard, and 0x5a register control PWR_Fan.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 488) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 489) In order to reduce the dependency of specific fan, the measurement is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 490) conducted with a digital scope without fan connected. I found out that
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 491) P3B-F actually output variable DC voltage on fan header center pin,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 492) looks like PWM is filtered on this motherboard.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 493) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 494) Here are some of measurements:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 495) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 496) ==== =========
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 497) 0x80     20 mV
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 498) 0x81     20 mV
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 499) 0x82    232 mV
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 500) 0x83   1.2  V
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 501) 0x84   2.31 V
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 502) 0x85   3.44 V
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 503) 0x86   4.62 V
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 504) 0x87   5.81 V
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 505) 0x88   7.01 V
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 506) 9x89   8.22 V
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 507) 0x8a   9.42 V
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 508) 0x8b  10.6  V
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 509) 0x8c  11.9  V
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 510) 0x8d  12.4  V
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 511) 0x8e  12.4  V
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 512) 0x8f  12.4  V
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 513) ==== =========