hwmon: add vt1211
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-cyclediff -uprN -X linux-2.6.18-rc4-mm-vanilla/Documentation/dontdiff -x drivers -x
MAINTAINERS-x usr -xdwarf2-defs.hlinux-2.6.18-rc4-mm-vanilla/include/linux/utsrelease.hlinux-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