From 7cc03f5029126c416029dcb69e0c6e91b9954ce2 Mon Sep 17 00:00:00 2001 From: Jean Delvare Date: Tue, 3 Jul 2007 13:22:28 +0000 Subject: [PATCH] Drop VRM reporting and selection support from libsensors. Since kernel 2.6.9, the right VID conversion formula is selected automatically depending on the CPU model, so the user shouldn't have to care. git-svn-id: http://lm-sensors.org/svn/lm-sensors/branches/lm-sensors-3.0.0@4543 7894878c-1315-0410-8ee3-d5d059ff63e0 --- doc/FAQ | 6 +-- doc/lm_sensors-FAQ.html | 5 +-- doc/lm_sensors-FAQ.texi | 5 +-- doc/vid | 74 +++--------------------------------- etc/sensors.conf.eg | 28 -------------- lib/access.c | 4 -- lib/sensors.h | 1 - lib/sysfs.c | 2 - prog/sensors/chips.c | 9 ++--- prog/sensors/chips.h | 2 +- prog/sensors/chips_generic.c | 19 +-------- 11 files changed, 17 insertions(+), 138 deletions(-) diff --git a/doc/FAQ b/doc/FAQ index 64d088bc..0af9111c 100644 --- a/doc/FAQ +++ b/doc/FAQ @@ -691,10 +691,8 @@ settings for the Processor Core voltage (often in0_min and in0_max) in that file so that they don't depend on vid. The CPU nominal voltage is computed from VID lines according to a -formula that depends on the CPU type. Most chips that report a VID -value can be configured to use either VRM 8.2 (for Pentium III) or VRM -9.0 (for Pentium 4 and Athlon). You chose which one you want through -`/etc/sensors.conf'. See `doc/vid' for more information. +formula that depends on the CPU type. Since Linux 2.6.14, the right +formula is selected automatically. See `doc/vid' for more information. 4.8 I read sensor values several times a second, but they are only updated only each second or so. Why? ======================================================================================================= diff --git a/doc/lm_sensors-FAQ.html b/doc/lm_sensors-FAQ.html index dcc3c65d..4ddf2902 100644 --- a/doc/lm_sensors-FAQ.html +++ b/doc/lm_sensors-FAQ.html @@ -1106,9 +1106,8 @@ and change the min and max settings for the Processor Core voltage (often in0_min and in0_max) in that file so that they don't depend on vid.

The CPU nominal voltage is computed from VID lines according to a formula -that depends on the CPU type. Most chips that report a VID value can be -configured to use either VRM 8.2 (for Pentium III) or VRM 9.0 (for Pentium 4 -and Athlon). You chose which one you want through /etc/sensors.conf. +that depends on the CPU type. Since Linux 2.6.14, the right formula is +selected automatically. See doc/vid for more information.

diff --git a/doc/lm_sensors-FAQ.texi b/doc/lm_sensors-FAQ.texi index 1f1a2fff..b480091f 100644 --- a/doc/lm_sensors-FAQ.texi +++ b/doc/lm_sensors-FAQ.texi @@ -716,9 +716,8 @@ and change the min and max settings for the Processor Core voltage (often in0_min and in0_max) in that file so that they don't depend on vid. The CPU nominal voltage is computed from VID lines according to a formula -that depends on the CPU type. Most chips that report a VID value can be -configured to use either VRM 8.2 (for Pentium III) or VRM 9.0 (for Pentium 4 -and Athlon). You chose which one you want through @file{/etc/sensors.conf}. +that depends on the CPU type. Since Linux 2.6.9, the right formula is +selected automatically. See @file{doc/vid} for more information. diff --git a/doc/vid b/doc/vid index 8995dee0..565774d3 100644 --- a/doc/vid +++ b/doc/vid @@ -43,76 +43,14 @@ Document Version Voltage Range Increment Processors AMD Opteron 24x processors. Note that versions 8.1 - 8.4 are compatible. -lm_sensors versions through 2.6.3 support only the VRM 8.2 standard. - -Starting in lm_sensors 2.6.4 the VRM version is configurable. -To configure the sensor chip for the correct voltage range, -you must set the "vrm" correctly either via /proc, /sys, or sensors.conf. - -To be compatible with previous lm_sensors versions, the vrm defaults -to version 8.2. Generally, for recent motherboards, this will not -be correct. Try 9.0 first. - -To change the vrm version to 9.0, for example, do the following -after the chip module (in this example, w83781d) is loaded: - - (kernel 2.4) - echo 9.0 > /proc/sys/dev/sensors/w83781d-isa-0290/vrm - (kernel 2.6) - echo 90 > /sys/bus/i2c/devices/0-0290/vrm - -Alternatively, add a line in /etc/sensors.conf in the w83781d section -(you should put this line BEFORE any line that uses vid in a calculation): - - set vrm 9.0 - -and then, after the chip module is loaded, do: - - sensors -s - -After this, reading the vid either by - - (kernel 2.4) - cat /proc/sys/dev/sensors/w83781d-isa-0290/vid - (kernel 2.6 - divide the output by 1000) - cat /sys/bus/i2c/devices/0-0290/in0_ref - -or by - - sensors - -should show the new vid value. - - -The following values are legal vrm values. Other values will be -allowed but will result in using the 8.2 standard. - - 2.4, 8.1-8.5, 9.0, 9.1, 10.0 - +Since Linux 2.6.9, the correct VRM version is selected automatically +based on the CPU brand and model. Thus you shouldn't have to care about +it. If you are using a brand new CPU and even the latest kernel complains +("Unknown VRM version of your CPU"), this means that the kernel must be +taught about this new CPU model. Please report to us in this case. Remember, the VID pins on the sensor chips are inputs only. -That means they can't be changed and there shouldn't be -any problems if you experiment with the vrm values until you -get it right. You cannot manipulate the actual processor core -voltage through lm_sensors drivers. - -Not all sensor chips have VID inputs. -For those that do, the VRM support status is listed below. - -The following chip drivers support all the VRM versions via -/etc/sensors.conf and the vrm entry in /proc or /sys: - - adm1025, adm1026, asb100, lm85, lm87, - vt1211, vt8231, w83627hf, w83781d - - -The following chip drivers support only VRM 8.2 and cannot be changed: - - adm1024, it87, mtp008 - adm9240, gl520sm, lm78, maxilife - -If you have a board with one of these chips which needs advanced -VRM support please email us. +You cannot use them to manipulate the actual processor core voltage. ------------------ Copyright (c) 2002-2004 Mark D. Studebaker diff --git a/etc/sensors.conf.eg b/etc/sensors.conf.eg index 1f616ee7..06dd49c6 100644 --- a/etc/sensors.conf.eg +++ b/etc/sensors.conf.eg @@ -234,7 +234,6 @@ # This is a library dependency. # A 'set fan1_div' statement must go before a 'set fan1_min' statement, # because the driver uses the divisor in calculating the minimum. -# Also, one should set vrm prior to using vid in any formula. # # # BUS LINES @@ -475,9 +474,6 @@ chip "w83782d-*" "w83627hf-*" compute in6 (3.14 * @) - 7.71 , (@ + 7.71) / 3.14 compute in7 ((6.8/10)+1)*@ , @/((6.8/10)+1) -# adjust this if your vid is wrong; see doc/vid -# set vrm 9.0 - # set limits to 5% for the critical voltages # set limits to 10% for the non-critical voltages # set limits to 20% for the battery voltage @@ -538,9 +534,6 @@ chip "w83783s-*" compute in5 (5.14 * @) - 14.91 , (@ + 14.91) / 5.14 compute in6 (3.14 * @) - 7.71 , (@ + 7.71) / 3.14 -# adjust this if your vid is wrong; see doc/vid -# set vrm 9.0 - # set limits to 5% for the critical voltages # set limits to 10% for the non-critical voltages # set limits to 20% for the battery voltage @@ -688,9 +681,6 @@ chip "w83627thf-*" "w83637hf-*" compute in4 (5.14*@)-14.91, (@+14.91)/5.14 compute in7 ((6.8/10)+1)*@ , @/((6.8/10)+1) -# adjust this if your vid is wrong; see doc/vid -# set vrm 9.0 - # set limits to 5% for the critical voltages # set limits to 10% for the non-critical voltages # set limits to 20% for the battery voltage @@ -886,9 +876,6 @@ chip "as99127f-*" # label temp3 "CPU 2 Temp" # ignore temp3 -# adjust this if your vid is wrong; see doc/vid -# set vrm 9.0 - # set limits to 5% for the critical voltages # set limits to 10% for the non-critical voltages # set limits to 20% for the battery voltage @@ -1336,9 +1323,6 @@ chip "adm1025-*" "ne1619-*" label in4 "+12V" label in5 "VCC" -# Adjust this if your vid is wrong; see doc/vid -# set vrm 9.0 - # Tolerate a 5% deviance for CPU power-supply # set in1_min vid * 0.95 # set in1_max vid * 1.05 @@ -2095,9 +2079,6 @@ chip "vt1211-*" 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 3.3 * 0.95 # set in0_max 3.3 * 1.05 # set in1_min 2.5 * 0.95 @@ -2330,8 +2311,6 @@ chip "smsc47m192-*" # This example was tested vs. Asus P4S333 # chip "asb100-*" -# adjust this if your vid is wrong; see doc/vid - #set vrm 9.0 label in0 "VCore 1" #set in0_min vid * 0.95 @@ -2449,10 +2428,6 @@ chip "lm85c-*" "adm1027-*" "adt7463-*" "lm85-*" "lm85b-*" # ignore fan3 # ignore fan4 -# Set VRM version -# adjust this if your vid is wrong; see doc/vid -# set vrm 9.1 # Pentium 4 - # Set voltage limits # set in0_min 1.5 * 0.95 # set in0_max 1.5 * 1.05 @@ -2480,9 +2455,6 @@ chip "pc87366-*" # Voltage inputs -# Set VRM version (default 9.0) -# set vrm 9.0 - label in7 "Vsb" label in8 "Vdd" label in9 "Vbat" diff --git a/lib/access.c b/lib/access.c index f0b9dfb6..f7bac9cb 100644 --- a/lib/access.c +++ b/lib/access.c @@ -553,10 +553,6 @@ sensors_feature_type sensors_feature_get_type( int i, nr, count; struct feature_type_match *submatches; - /* vrm is special */ - if (!strcmp(feature->name, "vrm")) - return SENSORS_FEATURE_VRM; - for(i = 0; matches[i].name != 0; i++) if ((count = sscanf(feature->name, matches[i].name, &nr, &c))) break; diff --git a/lib/sensors.h b/lib/sensors.h index 9fb6ad4f..8f804dd4 100644 --- a/lib/sensors.h +++ b/lib/sensors.h @@ -176,7 +176,6 @@ typedef enum sensors_feature_type { SENSORS_FEATURE_TEMP_SENS, SENSORS_FEATURE_VID = 0x300, - SENSORS_FEATURE_VRM, SENSORS_FEATURE_UNKNOWN = INT_MAX, diff --git a/lib/sysfs.c b/lib/sysfs.c index 1f39d88e..3cb63b1d 100644 --- a/lib/sysfs.c +++ b/lib/sysfs.c @@ -52,8 +52,6 @@ int get_type_scaling(int type) switch (type) { case SENSORS_FEATURE_VID: return 3; - case SENSORS_FEATURE_VRM: - return 1; default: return 0; } diff --git a/prog/sensors/chips.c b/prog/sensors/chips.c index 6e25116e..c949456d 100644 --- a/prog/sensors/chips.c +++ b/prog/sensors/chips.c @@ -101,20 +101,17 @@ int sensors_get_label_and_valid(sensors_chip_name name, int feature, char **labe return err; } -void print_vid_info_real(const sensors_chip_name *name, int f_vid, int f_vrm, int label_size) +void print_vid_info(const sensors_chip_name *name, int f_vid, int label_size) { char *label; int valid; - double vid, vrm; + double vid; if (!sensors_get_label_and_valid(*name,f_vid,&label,&valid) && !sensors_get_feature(*name,f_vid,&vid) ) { if (valid) { print_label(label, label_size); - if(!sensors_get_feature(*name,f_vrm,&vrm)) - printf("%+6.3f V (VRM Version %.1f)\n",vid,vrm); - else - printf("%+6.3f V\n",vid); + printf("%+6.3f V\n", vid); } } free(label); diff --git a/prog/sensors/chips.h b/prog/sensors/chips.h index 26fa2e0a..de854021 100644 --- a/prog/sensors/chips.h +++ b/prog/sensors/chips.h @@ -34,7 +34,7 @@ extern void print_unknown_chip(const sensors_chip_name *name); void print_temp_info(float n_cur, float n_over, float n_hyst, int minmax, int curprec, int limitprec); -void print_vid_info_real(const sensors_chip_name *name, int f_vid, int f_vrm, int label_size); +void print_vid_info(const sensors_chip_name *name, int f_vid, int label_size); void print_label(const char *label, int space); diff --git a/prog/sensors/chips_generic.c b/prog/sensors/chips_generic.c index 6e99c4f2..dc2b7583 100644 --- a/prog/sensors/chips_generic.c +++ b/prog/sensors/chips_generic.c @@ -337,23 +337,6 @@ static void print_generic_chip_fan(const sensors_chip_name *name, printf("\n"); } -static void print_generic_chip_vid(const sensors_chip_name *name, - const sensors_feature_data *feature, - int i, int j, int label_size) -{ - const sensors_feature_data *vrm_feature; - - while((vrm_feature = sensors_get_all_features(*name, &i, &j))) { - if (sensors_feature_get_type(vrm_feature) == SENSORS_FEATURE_VRM) - break; - } - - if (vrm_feature != NULL) - print_vid_info_real(name, feature->number, vrm_feature->number, label_size); - else - print_vid_info_real(name, feature->number, -1, label_size); -} - void print_generic_chip(const sensors_chip_name *name) { const sensors_feature_data *feature; @@ -374,7 +357,7 @@ void print_generic_chip(const sensors_chip_name *name) case SENSORS_FEATURE_FAN: print_generic_chip_fan(name, feature, i, j, label_size); break; case SENSORS_FEATURE_VID: - print_generic_chip_vid(name, feature, i, j, label_size); break; + print_vid_info(name, feature->number, label_size); break; default: continue; } }