Skip to contentSkip to conversation

hwmon: add vt1211

PATCH RESEND New Jean Delvare 1 participant 1 message Aug 30, 2006

lore
Share & tools
lore
#0 lore raw

PATCH RESEND 2/2 hwmon: add vt1211

Review

Quoted 9 lines

This patch adds documentation for the new vt1211 Super-IO driver.

(quoted diff) +7 -0
+Temperature Monitoring
+----------------------
+
+Temperatures are reported in millidegree Celsius. Each measured temperature
+has a high limit which triggers an alarm if crossed. There is an associated
+hysteresis value with each temperature below which the temperature has to drop
+before the alarm is cleared.

This is actually only true in interrupt mode "0", right?

Review

Quoted 4 lines
(quoted diff) +4 -0
+
+All temperature channels except temp2 are external. Temp2 is the VT1211
+internal thermal diode and the driver does all the scaling for temp2 and
+returns the temperature in millidegree Celcius. For the external channels

Celsius

Quoted 1 line

+temp1 and temp4-temp7, scaling depends on the board implementation and needs

temp3?

Quoted 24 lines
(quoted diff) +24 -0
+to be performed in userspace via sensors.conf.
+
+Temp1 is an Intel-type thermal diode which requires the following formula to
+convert between sysfs readings and real temperatures:
+
+compute temp1 (@-Offset)/Gain, (@*Gain)+Offset
+
+According to the VIA VT1211 BIOS porting guide, the following gain and offset
+values should be used:
+
+Diode Type      Offset   Gain
+----------      ------   ----
+Intel CPU       88.638   0.9528
+                65.000   0.9686   *)
+VIA C3 Ezra     83.869   0.9528
+VIA C3 Ezra-T   73.869   0.9528
+
+*) This is the formula from the current (2.10.0) sensors.conf file. I don't
+know where it comes from or how it was derived, it's just listed here for
+completeness.
+
+Temp3-temp7 support NTC thermistors. For these channels, the driver returns the
+voltages as seen at the individual pins of UCH1-UCH5. The voltage at the pin
+(Vpin) is formed by a voltage divider made of the thermistor (Rth) and a

Review

Quoted 10 lines
(quoted diff) +10 -0
+scaling resistor (Rs):
+
+Vpin = 2200 * Rth / (Rs + Rth)   (2200 is the ADC max limit of 2200 mV)
+
+The equation for the thermistor is as follows (google it if you want to know
+more about it):
+
+Rth = Ro * exp(B * (1 / T - 1 / To))
+
+Mingling the above two equations and assuming Rs = Ro and B = 3435 yields the

and assuming To = 25 degrees C

In other words, assuming Rth = Rs at 25 degrees C...

Quoted 19 lines
(quoted diff) +19 -0
+following formula for sensors.conf:
+
+compute tempx 1 / (1 / 298.15 - (` (2200 / @ - 1)) / 3435) - 273.15,
+              2200 / (1 + (^ (3435 / 298.15 - 3435 / (273.15 + @))))
+
+
+Fan Speed Control
+-----------------
+
+The VT1211 provides 2 programmable PWM outputs to control the speeds of 2 fans.
+Writing a 2 to any of the two pwm[1-2]_enable sysfs nodes will put the PWM
+controller in automatic mode. There is only a single controller that controls
+both PWM outputs but each PWM output can be individually enabled and disabled.
+
+Each PWM has 4 associated distinct output duty-cycles: full, high, low and
+off. Full and off are internally hard-wired to 255 (100%) and 0 (0%),
+respectively. High and low can be programmed via
+pwm[1-2]_auto_point[2-3]_pwm. Each PWM output can be associated with a
+different thermal input but - and here's the weird part - only one set of

Review

Quoted 10 lines
(quoted diff) +10 -0
+thermal thresholds exist that controls both PWMs output duty-cycles. The
+thermal thresholds are accessible via pwm[1-2]_auto_point[1-4]_temp. Note
+that even though there are 2 sets of 4 auto points each, they map to the same
+registers in the VT1211 and programming one set is sufficient (actually only 
+the first set pwm1_auto_point[1-4]_temp is writable, the second set is
+read-only).
+
+PWM Auto Point             PWM Output Duty-Cycle
+------------------------------------------------
+pwm[1-2]_auto_point4_pwm   full speed duty-cyle (hard-wired to 255)

cycle

Quoted 30 lines
(quoted diff) +26 -0
+pwm[1-2]_auto_point3_pwm   high speed duty-cycle
+pwm[1-2]_auto_point2_pwm   low speed duty-cycle
+pwm[1-2]_auto_point1_pwm   off duty-cycle (hard-wired to 0)
+
+Temp Auto Point             Thermal Threshold
+---------------------------------------------
+pwm[1-2]_auto_point4_temp   full speed temp
+pwm[1-2]_auto_point3_temp   high speed temp
+pwm[1-2]_auto_point2_temp   low speed temp
+pwm[1-2]_auto_point1_temp   off temp
+
+Long story short, the controller implements the following algorithm to set the
+PWM output duty-cycle based on the input temperature:
+
+Thermal Threshold             Output Duty-Cycle
+                    (Rising Temp)           (Falling Temp)
+----------------------------------------------------------
+                    full speed duty-cycle   full speed duty-cycle
+full speed temp
+                    high speed duty-cycle   full speed duty-cycle
+high speed temp
+                    low speed duty-cycle    high speed duty-cycle
+low speed temp
+                    off duty-cycle          low speed duty-cycle
+off temp
+                    off duty-cycle          off duty-cycle

diff -uprN -X linux-2.6.18-rc4-mm-vanilla/Documentation/dontdiff -x drivers -x MAINTAINERS -x usr -x dwarf2-defs.h linux-2.6.18-rc4-mm-vanilla/include/linux/utsrelease.h linux-2.6.18-rc4-mm/include/linux/utsrelease.h

include/linux/utsrelease.h line 1

Quoted 1 line
include/linux/utsrelease.h +1 -0
@@ -0,0 +1 @@
+#define UTS_RELEASE "2.6.18-rc4-mm1"

This shouldn't have been in this patch either ;)

Thanks,

Signature · 1 line
Jean Delvare