From a4fc9253af61eb1b9b952c6c5004f08dbd6e80d4 Mon Sep 17 00:00:00 2001 From: Jean Delvare Date: Sat, 23 Sep 2006 09:32:29 +0000 Subject: [PATCH] vt1211: Rework the voltage and temperature conversions and the temperature input order to match the Linux 2.6 driver. libsensors: Change vt1211 temp3-7 magnitude from 1 to 3. sensors.conf.eg: Adjust the vt1211 section to match the new driver interface. git-svn-id: http://lm-sensors.org/svn/lm-sensors/trunk@4168 7894878c-1315-0410-8ee3-d5d059ff63e0 --- CHANGES | 5 ++ etc/sensors.conf.eg | 162 ++++++++++++++++++++++++------------------ kernel/chips/vt1211.c | 101 ++++++++++++++------------ lib/chips.c | 30 ++++---- 4 files changed, 168 insertions(+), 130 deletions(-) diff --git a/CHANGES b/CHANGES index fed74658..9f2622d7 100644 --- a/CHANGES +++ b/CHANGES @@ -8,6 +8,8 @@ lm_sensors CHANGES file Comment out all set statements Add an it8716 section Add a w83793 section + Adjust the vt1211 section to match the new driver + interface Library: Fix device scan when no i2c support is present Add support for W83627EHF voltage inputs and alarms Add support for the smsc47m192 driver @@ -17,6 +19,7 @@ lm_sensors CHANGES file Add support for the W83793 chip (Yuan Mu) Map the 2.6 adm1026's fan8 to fan0 Missing sysfs busses and classes are not errors + Change vt1211 temp3-7 magnitude from 1 to 3 Makefile: Don't grep autoconf.h on user-space targets Fix depmod on non-running kernel version Remove empty include directories on make user_uninstall @@ -36,6 +39,8 @@ lm_sensors CHANGES file Add VT8237A and VT8251 Module lm83: Add LM82 support (2.6 backport) Module vt1211: The VT1211 has no in6 + Rework the voltage and temperature conversions and the + temperature input order to match the Linux 2.6 driver Module w83781d: Use real-time alarm registers when possible (2.6 backport) Add specific alarm and beep defines for the W83791D Module w83792d: Fix PWM range (2.6 backport) diff --git a/etc/sensors.conf.eg b/etc/sensors.conf.eg index 20a4fb0c..fe3b15f1 100644 --- a/etc/sensors.conf.eg +++ b/etc/sensors.conf.eg @@ -2037,107 +2037,129 @@ chip "lm63-*" chip "vt1211-*" -# + # 1 for temp, 0 for volt. # Sensor Voltage Mode Temp Mode config bit # -------- ------------ --------- -------------- -# Reading 1 temp3 -# Reading 3 temp1 -# UCH1/Reading2 in0 temp2 0x04 (4) +# Reading 1 temp1 +# Reading 3 temp2 +# UCH1/Reading2 in0 temp3 0x04 (4) # UCH2 in1 temp4 0x08 (8) # UCH3 in2 temp5 0x10 (16) # UCH4 in3 temp6 0x20 (32) # UCH5 in4 temp7 0x40 (64) # 3.3V in5 -# -# set uch1-2 to temp mode, uch3-5 to voltage mode -# -# set config 12 - ignore in0 - ignore in1 + +# Set uch1-2 to temp mode, uch3-5 to voltage mode. This works only +# for the 2.4 driver. For the 2.6 driver use the uch_config module parameter. +# If the value doesn't match the hardware wiring, you'll get weird readings! +# set config 12 + +# The 2.6 driver will automatically ignore the inputs which are not +# configured, but the 2.4 driver will not so you'll need to add ignore +# statements depending on the config value above. +# ignore in0 +# ignore in1 +# ignore temp3 +# ignore temp4 ignore temp5 ignore temp6 ignore temp7 -# IMPORTANT: If you get "ERROR: Can't get TEMPX data!" from "sensors", -# where X is 2, 4, 5, 6 or 7, although you have this UCH set to -# temperature, this generally means that this UCH isn't (physically) -# used for temperature, so you should add an ignore statement for tempX -# and change the "config" value to reflect the fact that this UCH is -# probably used for voltage. - -# label in0 "unused" -# label in1 "unused" - label in2 "VCore1" + label in0 "+3.3V" + label in1 "+2.5V" + label in2 "VCore" label in3 "+5V" label in4 "+12V" label in5 "+3.3V" - label temp1 "Int Temp" - label temp2 "MB1 Temp" - label temp3 "Proc Temp" - label temp4 "MB2 Temp" -# -# All voltage calculations have the form -# ((@ * 100) - 3) / (K * 95.8), (@ * K * 0.958) + .03 -# where K = R2 / (R1 + R2). -# Use the following K values based on input voltage. -# This of course assumes the mobo has the resistors -# recommended by Via in the datasheet. -# Voltage K -# VCore 1.0 -# 2.5 0.8333 -# 3.3 (in5 internal) 0.6296 -# 3.5 (3.3V ext.) 0.5952 -# 5.0 0.4167 -# 12.0 0.1754 -# -# compute in0 ((@ * 100) - 3) / (0.5952 * 95.8), (@ * 0.5952 * 0.958) + .03 -# compute in1 ((@ * 100) - 3) / (0.8333 * 95.8), (@ * 0.8333 * 0.958) + .03 - compute in2 ((@ * 100) - 3) / (0.5952 * 95.8), (@ * 0.5952 * 0.958) + .03 - compute in3 ((@ * 100) - 3) / (0.4167 * 95.8), (@ * 0.4167 * 0.958) + .03 - compute in4 ((@ * 100) - 3) / (0.1754 * 95.8), (@ * 0.1754 * 0.958) + .03 - compute in5 ((@ * 100) - 3) / (0.6296 * 95.8), (@ * 0.6296 * 0.958) + .03 + label temp1 "CPU Temp" + label temp2 "Int Temp" -# adjust this if your vid is wrong; see doc/vid + label fan1 "Case Fan" + label fan2 "CPU Fan" + +# All voltage calculations have the form +# compute inX @ * (1 + R1 / R2), @ / (1 + R1 / R2) +# +# The following are the resistor values as recommended by VIA +# Voltage R1 R2 +# ------- ---- ---- +# VCore - - (no scaling) +# 3.3 6.8k 10k +# 2.5 2k 10k +# 5.0 14k 10k +# 12.0 47k 10k +# +# The VT1211 internal 3.3V (in5) is scaled by the driver and doesn't +# need to be adjusted here. VCore doesn't need scaling at all. + + compute in0 @ * (1 + 6.8 / 10), @ / (1 + 6.8 / 10) + compute in1 @ * (1 + 2 / 10), @ / (1 + 2 / 10) + compute in3 @ * (1 + 14 / 10), @ / (1 + 14 / 10) + compute in4 @ * (1 + 47 / 10), @ / (1 + 47 / 10) + +# Adjust this if your vid is wrong (for 2.4 only); see doc/vid # set vrm 9.1 -# set in0_min 2.5 * 0.95 -# set in0_max 2.5 * 1.05 +# set in0_min 3.3 * 0.95 +# set in0_max 3.3 * 1.05 # set in1_min 2.5 * 0.95 # set in1_max 2.5 * 1.05 +# If your vid is wrong, hardcode the CPU voltage (e.g. 1.4) # set in2_min vid * 0.97 # set in2_max vid * 1.03 # set in3_min 5.0 * 0.95 # set in3_max 5.0 * 1.05 # set in4_min 12.0 * 0.90 # set in4_max 12.0 * 1.10 -# set in5_min 3.3 * 0.95 -# set in5_max 3.3 * 1.05 + set in5_min 3.3 * 0.95 + set in5_max 3.3 * 1.05 - compute temp1 (@ - 65) / 0.9686, (@ * 0.9686) + 65 - compute temp3 (@ - 65) / 0.9686, (@ * 0.9686) + 65 +# The temperature calculations are of the form +# compute tempX (@ - Offset) / Gain, (@ * Gain) + Offset # -# thermistor calculations. -# 3435 is the thermistor beta. -# '^' is the e**x operator; '`' is the ln(x) operator -# (valid in library version 1.4.0 / lm_sensors 2.7.1 or higher) -# This assumes that the thermistor forms a resistor divider with a resistor -# equal to its nominal value @ 25C. If not, the math gets even harder. +# The following are the gain and offset values as recommended by VIA +# Diode Type Gain Offset +# ---------- ---- ------ +# Intel CPU 0.9528 88.638 +# 0.9686 65.000 *) +# VIA C3 Ezra 0.9528 83.869 +# VIA C3 Ezra-T 0.9528 73.869 # - compute temp2 (1 / (((1 / 3435) * (` ((253 - @) / (@ - 43)))) + (1 / 298.15))) - 273.15, \ - 253 - (210 / (1 + (1 / (^ (((3435 * (25 - @)) / ((@ + 273.15) * 298.15))))))) - compute temp4 (1 / (((1 / 3435) * (` ((253 - @) / (@ - 43)))) + (1 / 298.15))) - 273.15, \ - 253 - (210 / (1 + (1 / (^ (((3435 * (25 - @)) / ((@ + 273.15) * 298.15))))))) - compute temp5 (1 / (((1 / 3435) * (` ((253 - @) / (@ - 43)))) + (1 / 298.15))) - 273.15, \ - 253 - (210 / (1 + (1 / (^ (((3435 * (25 - @)) / ((@ + 273.15) * 298.15))))))) - compute temp6 (1 / (((1 / 3435) * (` ((253 - @) / (@ - 43)))) + (1 / 298.15))) - 273.15, \ - 253 - (210 / (1 + (1 / (^ (((3435 * (25 - @)) / ((@ + 273.15) * 298.15))))))) - compute temp7 (1 / (((1 / 3435) * (` ((253 - @) / (@ - 43)))) + (1 / 298.15))) - 273.15, \ - 253 - (210 / (1 + (1 / (^ (((3435 * (25 - @)) / ((@ + 273.15) * 298.15))))))) +# *) These are the values from the previous sensors.conf. I don't know +# where they came from or how they got derived. +# +# The VT1211 internal temperature (temp2) is scaled by the driver +# and doesn't need to be adjusted here. -# set temp2_hyst 40 -# set temp2_over 45 + compute temp1 (@ - 73.869) / 0.9528, (@ * 0.9528) + 73.869 + +# The thermistor calculations are of the form +# compute tempX 1 / (1 / 298.15 - (` Vmax / @ - 1)) / B) - 273.15, \ +# Vmax / (1 + (^ (B / 298.15 - B / (273.15 + @)))) +# +# B is the thermistor beta value, Vmax is the reference voltage, '^' is the +# exp() operator and '`' is the ln() operator. +# Given B = 3435 and Vmax = 2.2V and assuming that the thermistor forms a +# resistor divider with a resistor equal to the thermistor's nominal value at +# 25 degrees C, the following compute lines can be used: + + compute temp3 1 / (1 / 298.15 - (` (2.2 / @ - 1)) / 3435) - 273.15, \ + 2.2 / (1 + (^ (3435 / 298.15 - 3435 / (273.15 + @)))) + compute temp4 1 / (1 / 298.15 - (` (2.2 / @ - 1)) / 3435) - 273.15, \ + 2.2 / (1 + (^ (3435 / 298.15 - 3435 / (273.15 + @)))) + compute temp5 1 / (1 / 298.15 - (` (2.2 / @ - 1)) / 3435) - 273.15, \ + 2.2 / (1 + (^ (3435 / 298.15 - 3435 / (273.15 + @)))) + compute temp6 1 / (1 / 298.15 - (` (2.2 / @ - 1)) / 3435) - 273.15, \ + 2.2 / (1 + (^ (3435 / 298.15 - 3435 / (273.15 + @)))) + compute temp7 1 / (1 / 298.15 - (` (2.2 / @ - 1)) / 3435) - 273.15, \ + 2.2 / (1 + (^ (3435 / 298.15 - 3435 / (273.15 + @)))) + +# set temp1_hyst 80 +# set temp1_over 85 +# set temp2_hyst 60 +# set temp2_over 65 # set temp3_hyst 60 # set temp3_over 65 # set temp4_hyst 40 diff --git a/kernel/chips/vt1211.c b/kernel/chips/vt1211.c index 725d6fea..37346f1c 100644 --- a/kernel/chips/vt1211.c +++ b/kernel/chips/vt1211.c @@ -99,9 +99,9 @@ superio_exit(void) changes from via686a. Sensor Voltage Mode Temp Mode -------- ------------ --------- - Reading 1 temp3 Intel thermal diode - Reading 3 temp1 VT1211 internal thermal diode - UCH1/Reading2 in0 temp2 + Reading 1 temp1 Intel thermal diode + Reading 3 temp2 VT1211 internal thermal diode + UCH1/Reading2 in0 temp3 UCH2 in1 temp4 UCH3 in2 temp5 UCH4 in3 temp6 @@ -118,16 +118,16 @@ superio_exit(void) #define VT1211_REG_FAN_MIN(nr) (0x3a + (nr)) #define VT1211_REG_FAN(nr) (0x28 + (nr)) -static const u8 regtemp[] = { 0x20, 0x21, 0x1f, 0x22, 0x23, 0x24, 0x25 }; -static const u8 regover[] = { 0x39, 0x3d, 0x1d, 0x2b, 0x2d, 0x2f, 0x31 }; -static const u8 reghyst[] = { 0x3a, 0x3e, 0x1e, 0x2c, 0x2e, 0x30, 0x32 }; +static const u8 regtemp[] = { 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25 }; +static const u8 regover[] = { 0x39, 0x1d, 0x3d, 0x2b, 0x2d, 0x2f, 0x31 }; +static const u8 reghyst[] = { 0x3a, 0x1e, 0x3e, 0x2c, 0x2e, 0x30, 0x32 }; /* temps numbered 1-7 */ #define VT1211_REG_TEMP(nr) (regtemp[(nr) - 1]) #define VT1211_REG_TEMP_OVER(nr) (regover[(nr) - 1]) #define VT1211_REG_TEMP_HYST(nr) (reghyst[(nr) - 1]) -#define VT1211_REG_TEMP_LOW3 0x4b /* bits 7-6 */ -#define VT1211_REG_TEMP_LOW2 0x49 /* bits 5-4 */ +#define VT1211_REG_TEMP_LOW1 0x4b /* bits 7-6 */ +#define VT1211_REG_TEMP_LOW3 0x49 /* bits 5-4 */ #define VT1211_REG_TEMP_LOW47 0x4d #define VT1211_REG_CONFIG 0x40 @@ -140,10 +140,8 @@ static const u8 reghyst[] = { 0x3a, 0x3e, 0x1e, 0x2c, 0x2e, 0x30, 0x32 }; #define VT1211_REG_TEMP2_CONFIG 0x4c /* temps 1-7; voltages 0-5 */ -#define ISTEMP(i, ch_config) ((i) == 1 ? 1 : \ - (i) == 3 ? 1 : \ - (i) == 2 ? ((ch_config) >> 1) & 0x01 : \ - ((ch_config) >> ((i)-1)) & 0x01) +#define ISTEMP(i, ch_config) ((i) <= 2 ? 1 : \ + ((ch_config) >> ((i)-1)) & 1) #define ISVOLT(i, ch_config) ((i) > 4 ? 1 : !(((ch_config) >> ((i)+2)) & 0x01)) #define DIV_FROM_REG(val) (1 << (val)) @@ -151,13 +149,33 @@ static const u8 reghyst[] = { 0x3a, 0x3e, 0x1e, 0x2c, 0x2e, 0x30, 0x32 }; #define PWM_FROM_REG(val) (val) #define PWM_TO_REG(val) SENSORS_LIMIT((val), 0, 255) -#define TEMP_FROM_REG(val) ((val)*10) -#define TEMP_FROM_REG10(val) (((val)*10)/4) -#define TEMP_TO_REG(val) (SENSORS_LIMIT(((val)<0?(((val)-5)/10):\ - ((val)+5)/10),0,255)) -#define IN_FROM_REG(val) /*(((val)*10+5)/10)*/ (val) -#define IN_TO_REG(val) (SENSORS_LIMIT((((val) * 10 + 5)/10),0,255)) +/* temp1 (i = 1) is an Intel thermal diode which is scaled in user space. + temp2 (i = 2) is the internal temp diode so it's scaled in the driver + according to some measurements taken on an EPIA M10000. + temp3-7 are thermistor based so the driver returns the voltage measured at + the pin (range 0V - 2.2V). */ +#define TEMP_FROM_REG(i, reg) ((i) == 1 ? (reg) * 10 : \ + (i) == 2 ? (reg) < 51 ? 0 : \ + ((reg) - 51) * 10 : \ + ((253 - (reg)) * 2200 + 105) / 210) +/* for 10-bit temp values */ +#define TEMP_FROM_REG10(i, reg) ((i) == 1 ? (reg) * 10 / 4 : \ + (i) == 2 ? (reg) < 204 ? 0 : \ + ((reg) - 204) * 10 / 4 : \ + ((1012 - (reg)) * 550 + 105) / 210) +#define TEMP_TO_REG(i, val) SENSORS_LIMIT( \ + ((i) == 1 ? ((val) + 5) / 10 : \ + (i) == 2 ? ((val) + 5) / 10 + 51 : \ + 253 - ((val) * 210 + 1100) / 2200), 0, 255) +/* in5 (i = 5) is special. It's the internal 3.3V so it's scaled in the + driver according to the VT1211 BIOS porting guide */ +#define IN_FROM_REG(i, reg) ((reg) < 3 ? 0 : (i) == 5 ? \ + (((reg) - 3) * 15882 + 4790) / 9580 : \ + (((reg) - 3) * 10000 + 4790) / 9580) +#define IN_TO_REG(i, val) (SENSORS_LIMIT((i) == 5 ? \ + ((val) * 9580 + 7941) / 15882 + 3 : \ + ((val) * 9580 + 5000) / 10000 + 3, 0, 255)) /********* FAN RPM CONVERSIONS ********/ /* But this chip saturates back at 0, not at 255 like all the other chips. @@ -270,11 +288,11 @@ static struct i2c_driver vt1211_driver = { #define VT1211_ALARM_FAN1 0x40 #define VT1211_ALARM_FAN2 0x80 #define VT1211_ALARM_IN4 0x100 -#define VT1211_ALARM_TEMP2 0x800 +#define VT1211_ALARM_TEMP3 0x800 #define VT1211_ALARM_CHAS 0x1000 -#define VT1211_ALARM_TEMP3 0x8000 +#define VT1211_ALARM_TEMP2 0x8000 /* duplicates */ -#define VT1211_ALARM_IN0 VT1211_ALARM_TEMP2 +#define VT1211_ALARM_IN0 VT1211_ALARM_TEMP3 #define VT1211_ALARM_TEMP4 VT1211_ALARM_IN1 #define VT1211_ALARM_TEMP5 VT1211_ALARM_IN2 #define VT1211_ALARM_TEMP6 VT1211_ALARM_IN3 @@ -511,29 +529,22 @@ static void vt1211_update_client(struct i2c_client *client) VT1211_REG_TEMP(i)) << 2; switch(i) { case 1: - /* ? */ - j = 0; + j = (vt_rdval(client, + VT1211_REG_TEMP_LOW1) >> + 6) & 3; break; case 2: - j = (vt_rdval(client, - VT1211_REG_TEMP_LOW2) & - 0x30) >> 4; + j = 0; break; case 3: j = (vt_rdval(client, - VT1211_REG_TEMP_LOW3) & - 0xc0) >> 6; + VT1211_REG_TEMP_LOW3) >> + 4) & 3; break; - case 4: - case 5: - case 6: - case 7: default: j = (vt_rdval(client, VT1211_REG_TEMP_LOW47) >> ((i-4)*2)) & 0x03; - break; - } data->temp[i - 1] |= j; data->temp_over[i - 1] = vt_rdval(client, @@ -579,18 +590,18 @@ void vt1211_in(struct i2c_client *client, int operation, int ctl_name, *nrels_mag = 2; else if (operation == SENSORS_PROC_REAL_READ) { vt1211_update_client(client); - results[0] = IN_FROM_REG(data->in_min[nr]); - results[1] = IN_FROM_REG(data->in_max[nr]); - results[2] = IN_FROM_REG(data->in[nr]); + results[0] = IN_FROM_REG(nr, data->in_min[nr]); + results[1] = IN_FROM_REG(nr, data->in_max[nr]); + results[2] = IN_FROM_REG(nr, data->in[nr]); *nrels_mag = 3; } else if (operation == SENSORS_PROC_REAL_WRITE) { if (*nrels_mag >= 1) { - data->in_min[nr] = IN_TO_REG(results[0]); + data->in_min[nr] = IN_TO_REG(nr, results[0]); vt1211_write_value(client, VT1211_REG_IN_MIN(nr), data->in_min[nr]); } if (*nrels_mag >= 2) { - data->in_max[nr] = IN_TO_REG(results[1]); + data->in_max[nr] = IN_TO_REG(nr, results[1]); vt1211_write_value(client, VT1211_REG_IN_MAX(nr), data->in_max[nr]); } @@ -633,22 +644,22 @@ void vt1211_temp(struct i2c_client *client, int operation, int ctl_name, int nr = ctl_name - VT1211_SYSCTL_TEMP1; if (operation == SENSORS_PROC_REAL_INFO) - *nrels_mag = 1; + *nrels_mag = nr < 2 ? 1 : 3; else if (operation == SENSORS_PROC_REAL_READ) { vt1211_update_client(client); - results[0] = TEMP_FROM_REG(data->temp_over[nr]); - results[1] = TEMP_FROM_REG(data->temp_hyst[nr]); - results[2] = TEMP_FROM_REG10(data->temp[nr]); + results[0] = TEMP_FROM_REG(nr + 1, data->temp_over[nr]); + results[1] = TEMP_FROM_REG(nr + 1, data->temp_hyst[nr]); + results[2] = TEMP_FROM_REG10(nr + 1, data->temp[nr]); *nrels_mag = 3; } else if (operation == SENSORS_PROC_REAL_WRITE) { if (*nrels_mag >= 1) { - data->temp_over[nr] = TEMP_TO_REG(results[0]); + data->temp_over[nr] = TEMP_TO_REG(nr + 1, results[0]); vt1211_write_value(client, VT1211_REG_TEMP_OVER(nr + 1), data->temp_over[nr]); } if (*nrels_mag >= 2) { - data->temp_hyst[nr] = TEMP_TO_REG(results[1]); + data->temp_hyst[nr] = TEMP_TO_REG(nr + 1, results[1]); vt1211_write_value(client, VT1211_REG_TEMP_HYST(nr + 1), data->temp_hyst[nr]); diff --git a/lib/chips.c b/lib/chips.c index c140f856..cbbc8964 100644 --- a/lib/chips.c +++ b/lib/chips.c @@ -4750,45 +4750,45 @@ static sensors_chip_feature vt1211_features[] = SENSORS_VT1211_TEMP2, RW, VT1211_SYSCTL_TEMP2, VALUE(1), 1 }, { SENSORS_VT1211_TEMP3, "temp3", NOMAP, NOMAP, - R, VT1211_SYSCTL_TEMP3, VALUE(3), 1 }, + R, VT1211_SYSCTL_TEMP3, VALUE(3), 3 }, { SENSORS_VT1211_TEMP3_HYST, "temp3_hyst", SENSORS_VT1211_TEMP3, SENSORS_VT1211_TEMP3, RW, - VT1211_SYSCTL_TEMP3, VALUE(2), 1 }, + VT1211_SYSCTL_TEMP3, VALUE(2), 3 }, { SENSORS_VT1211_TEMP3_OVER, "temp3_over", SENSORS_VT1211_TEMP3, SENSORS_VT1211_TEMP3, RW, - VT1211_SYSCTL_TEMP3, VALUE(1), 1 }, + VT1211_SYSCTL_TEMP3, VALUE(1), 3 }, { SENSORS_VT1211_TEMP4, "temp4", NOMAP, NOMAP, - R, VT1211_SYSCTL_TEMP4, VALUE(3), 1 }, + R, VT1211_SYSCTL_TEMP4, VALUE(3), 3 }, { SENSORS_VT1211_TEMP4_HYST, "temp4_hyst", SENSORS_VT1211_TEMP4, SENSORS_VT1211_TEMP4, RW, - VT1211_SYSCTL_TEMP4, VALUE(2), 1 }, + VT1211_SYSCTL_TEMP4, VALUE(2), 3 }, { SENSORS_VT1211_TEMP4_OVER, "temp4_over", SENSORS_VT1211_TEMP4, SENSORS_VT1211_TEMP4, RW, - VT1211_SYSCTL_TEMP4, VALUE(1), 1 }, + VT1211_SYSCTL_TEMP4, VALUE(1), 3 }, { SENSORS_VT1211_TEMP5, "temp5", NOMAP, NOMAP, - R, VT1211_SYSCTL_TEMP5, VALUE(3), 1 }, + R, VT1211_SYSCTL_TEMP5, VALUE(3), 3 }, { SENSORS_VT1211_TEMP5_HYST, "temp5_hyst", SENSORS_VT1211_TEMP5, SENSORS_VT1211_TEMP5, RW, - VT1211_SYSCTL_TEMP5, VALUE(2), 1 }, + VT1211_SYSCTL_TEMP5, VALUE(2), 3 }, { SENSORS_VT1211_TEMP5_OVER, "temp5_over", SENSORS_VT1211_TEMP5, SENSORS_VT1211_TEMP5, RW, - VT1211_SYSCTL_TEMP5, VALUE(1), 1 }, + VT1211_SYSCTL_TEMP5, VALUE(1), 3 }, { SENSORS_VT1211_TEMP6, "temp6", NOMAP, NOMAP, - R, VT1211_SYSCTL_TEMP6, VALUE(3), 1 }, + R, VT1211_SYSCTL_TEMP6, VALUE(3), 3 }, { SENSORS_VT1211_TEMP6_HYST, "temp6_hyst", SENSORS_VT1211_TEMP6, SENSORS_VT1211_TEMP6, RW, - VT1211_SYSCTL_TEMP6, VALUE(2), 1 }, + VT1211_SYSCTL_TEMP6, VALUE(2), 3 }, { SENSORS_VT1211_TEMP6_OVER, "temp6_over", SENSORS_VT1211_TEMP6, SENSORS_VT1211_TEMP6, RW, - VT1211_SYSCTL_TEMP6, VALUE(1), 1 }, + VT1211_SYSCTL_TEMP6, VALUE(1), 3 }, { SENSORS_VT1211_TEMP7, "temp7", NOMAP, NOMAP, - R, VT1211_SYSCTL_TEMP7, VALUE(3), 1 }, + R, VT1211_SYSCTL_TEMP7, VALUE(3), 3 }, { SENSORS_VT1211_TEMP7_HYST, "temp7_hyst", SENSORS_VT1211_TEMP7, SENSORS_VT1211_TEMP7, RW, - VT1211_SYSCTL_TEMP7, VALUE(2), 1 }, + VT1211_SYSCTL_TEMP7, VALUE(2), 3 }, { SENSORS_VT1211_TEMP7_OVER, "temp7_over", SENSORS_VT1211_TEMP7, SENSORS_VT1211_TEMP7, RW, - VT1211_SYSCTL_TEMP7, VALUE(1), 1 }, + VT1211_SYSCTL_TEMP7, VALUE(1), 3 }, { SENSORS_VT1211_FAN1_DIV, "fan1_div", SENSORS_VT1211_FAN1, NOMAP, RW, VT1211_SYSCTL_FAN_DIV, VALUE(1),