linux/Documentation/hwmon/vt1211
<<
>>
Prefs
   1Kernel driver vt1211
   2====================
   3
   4Supported chips:
   5  * VIA VT1211
   6    Prefix: 'vt1211'
   7    Addresses scanned: none, address read from Super-I/O config space
   8    Datasheet: Provided by VIA upon request and under NDA
   9
  10Authors: Juerg Haefliger <juergh@gmail.com>
  11
  12This driver is based on the driver for kernel 2.4 by Mark D. Studebaker and
  13its port to kernel 2.6 by Lars Ekman.
  14
  15Thanks to Joseph Chan and Fiona Gatt from VIA for providing documentation and
  16technical support.
  17
  18
  19Module Parameters
  20-----------------
  21
  22* uch_config: int       Override the BIOS default universal channel (UCH)
  23                        configuration for channels 1-5.
  24                        Legal values are in the range of 0-31. Bit 0 maps to
  25                        UCH1, bit 1 maps to UCH2 and so on. Setting a bit to 1
  26                        enables the thermal input of that particular UCH and
  27                        setting a bit to 0 enables the voltage input.
  28
  29* int_mode: int         Override the BIOS default temperature interrupt mode.
  30                        The only possible value is 0 which forces interrupt
  31                        mode 0. In this mode, any pending interrupt is cleared
  32                        when the status register is read but is regenerated as
  33                        long as the temperature stays above the hysteresis
  34                        limit.
  35
  36Be aware that overriding BIOS defaults might cause some unwanted side effects!
  37
  38
  39Description
  40-----------
  41
  42The VIA VT1211 Super-I/O chip includes complete hardware monitoring
  43capabilities. It monitors 2 dedicated temperature sensor inputs (temp1 and
  44temp2), 1 dedicated voltage (in5) and 2 fans. Additionally, the chip
  45implements 5 universal input channels (UCH1-5) that can be individually
  46programmed to either monitor a voltage or a temperature.
  47
  48This chip also provides manual and automatic control of fan speeds (according
  49to the datasheet). The driver only supports automatic control since the manual
  50mode doesn't seem to work as advertised in the datasheet. In fact I couldn't
  51get manual mode to work at all! Be aware that automatic mode hasn't been
  52tested very well (due to the fact that my EPIA M10000 doesn't have the fans
  53connected to the PWM outputs of the VT1211 :-().
  54
  55The following table shows the relationship between the vt1211 inputs and the
  56sysfs nodes.
  57
  58Sensor          Voltage Mode   Temp Mode   Default Use (from the datasheet)
  59------          ------------   ---------   --------------------------------
  60Reading 1                      temp1       Intel thermal diode
  61Reading 3                      temp2       Internal thermal diode
  62UCH1/Reading2   in0            temp3       NTC type thermistor
  63UCH2            in1            temp4       +2.5V
  64UCH3            in2            temp5       VccP (processor core)
  65UCH4            in3            temp6       +5V
  66UCH5            in4            temp7       +12V
  67+3.3V           in5                        Internal VCC (+3.3V)
  68
  69
  70Voltage Monitoring
  71------------------
  72
  73Voltages are sampled by an 8-bit ADC with a LSB of ~10mV. The supported input
  74range is thus from 0 to 2.60V. Voltage values outside of this range need
  75external scaling resistors. This external scaling needs to be compensated for
  76via compute lines in sensors.conf, like:
  77
  78compute inx @*(1+R1/R2), @/(1+R1/R2)
  79
  80The board level scaling resistors according to VIA's recommendation are as
  81follows. And this is of course totally dependent on the actual board
  82implementation :-) You will have to find documentation for your own
  83motherboard and edit sensors.conf accordingly.
  84
  85                                      Expected
  86Voltage       R1     R2     Divider   Raw Value
  87-----------------------------------------------
  88+2.5V         2K     10K    1.2       2083 mV
  89VccP          ---    ---    1.0       1400 mV (1)
  90+5V           14K    10K    2.4       2083 mV
  91+12V          47K    10K    5.7       2105 mV
  92+3.3V (int)   2K     3.4K   1.588     3300 mV (2)
  93+3.3V (ext)   6.8K   10K    1.68      1964 mV
  94
  95(1) Depending on the CPU (1.4V is for a VIA C3 Nehemiah).
  96(2) R1 and R2 for 3.3V (int) are internal to the VT1211 chip and the driver
  97    performs the scaling and returns the properly scaled voltage value.
  98
  99Each measured voltage has an associated low and high limit which triggers an
 100alarm when crossed.
 101
 102
 103Temperature Monitoring
 104----------------------
 105
 106Temperatures are reported in millidegree Celsius. Each measured temperature
 107has a high limit which triggers an alarm if crossed. There is an associated
 108hysteresis value with each temperature below which the temperature has to drop
 109before the alarm is cleared (this is only true for interrupt mode 0). The
 110interrupt mode can be forced to 0 in case the BIOS doesn't do it
 111automatically. See the 'Module Parameters' section for details.
 112
 113All temperature channels except temp2 are external. Temp2 is the VT1211
 114internal thermal diode and the driver does all the scaling for temp2 and
 115returns the temperature in millidegree Celsius. For the external channels
 116temp1 and temp3-temp7, scaling depends on the board implementation and needs
 117to be performed in userspace via sensors.conf.
 118
 119Temp1 is an Intel-type thermal diode which requires the following formula to
 120convert between sysfs readings and real temperatures:
 121
 122compute temp1 (@-Offset)/Gain, (@*Gain)+Offset
 123
 124According to the VIA VT1211 BIOS porting guide, the following gain and offset
 125values should be used:
 126
 127Diode Type      Offset   Gain
 128----------      ------   ----
 129Intel CPU       88.638   0.9528
 130                65.000   0.9686   *)
 131VIA C3 Ezra     83.869   0.9528
 132VIA C3 Ezra-T   73.869   0.9528
 133
 134*) This is the formula from the lm_sensors 2.10.0 sensors.conf file. I don't
 135know where it comes from or how it was derived, it's just listed here for
 136completeness.
 137
 138Temp3-temp7 support NTC thermistors. For these channels, the driver returns
 139the voltages as seen at the individual pins of UCH1-UCH5. The voltage at the
 140pin (Vpin) is formed by a voltage divider made of the thermistor (Rth) and a
 141scaling resistor (Rs):
 142
 143Vpin = 2200 * Rth / (Rs + Rth)   (2200 is the ADC max limit of 2200 mV)
 144
 145The equation for the thermistor is as follows (google it if you want to know
 146more about it):
 147
 148Rth = Ro * exp(B * (1 / T - 1 / To))   (To is 298.15K (25C) and Ro is the
 149                                        nominal resistance at 25C)
 150
 151Mingling the above two equations and assuming Rs = Ro and B = 3435 yields the
 152following formula for sensors.conf:
 153
 154compute tempx 1 / (1 / 298.15 - (` (2200 / @ - 1)) / 3435) - 273.15,
 155              2200 / (1 + (^ (3435 / 298.15 - 3435 / (273.15 + @))))
 156
 157
 158Fan Speed Control
 159-----------------
 160
 161The VT1211 provides 2 programmable PWM outputs to control the speeds of 2
 162fans. Writing a 2 to any of the two pwm[1-2]_enable sysfs nodes will put the
 163PWM controller in automatic mode. There is only a single controller that
 164controls both PWM outputs but each PWM output can be individually enabled and
 165disabled.
 166
 167Each PWM has 4 associated distinct output duty-cycles: full, high, low and
 168off. Full and off are internally hard-wired to 255 (100%) and 0 (0%),
 169respectively. High and low can be programmed via
 170pwm[1-2]_auto_point[2-3]_pwm. Each PWM output can be associated with a
 171different thermal input but - and here's the weird part - only one set of
 172thermal thresholds exist that controls both PWMs output duty-cycles. The
 173thermal thresholds are accessible via pwm[1-2]_auto_point[1-4]_temp. Note
 174that even though there are 2 sets of 4 auto points each, they map to the same
 175registers in the VT1211 and programming one set is sufficient (actually only
 176the first set pwm1_auto_point[1-4]_temp is writable, the second set is
 177read-only).
 178
 179PWM Auto Point             PWM Output Duty-Cycle
 180------------------------------------------------
 181pwm[1-2]_auto_point4_pwm   full speed duty-cycle (hard-wired to 255)
 182pwm[1-2]_auto_point3_pwm   high speed duty-cycle
 183pwm[1-2]_auto_point2_pwm   low speed duty-cycle
 184pwm[1-2]_auto_point1_pwm   off duty-cycle (hard-wired to 0)
 185
 186Temp Auto Point             Thermal Threshold
 187---------------------------------------------
 188pwm[1-2]_auto_point4_temp   full speed temp
 189pwm[1-2]_auto_point3_temp   high speed temp
 190pwm[1-2]_auto_point2_temp   low speed temp
 191pwm[1-2]_auto_point1_temp   off temp
 192
 193Long story short, the controller implements the following algorithm to set the
 194PWM output duty-cycle based on the input temperature:
 195
 196Thermal Threshold             Output Duty-Cycle
 197                    (Rising Temp)           (Falling Temp)
 198----------------------------------------------------------
 199                    full speed duty-cycle   full speed duty-cycle
 200full speed temp
 201                    high speed duty-cycle   full speed duty-cycle
 202high speed temp
 203                    low speed duty-cycle    high speed duty-cycle
 204low speed temp
 205                    off duty-cycle          low speed duty-cycle
 206off temp
 207
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.