diff --git a/doc/chips/gl518sm b/doc/chips/gl518sm index 943bcdf8..7fdadd68 100644 --- a/doc/chips/gl518sm +++ b/doc/chips/gl518sm @@ -5,15 +5,16 @@ Status: Complete and well-tested Supported chips: * Genesys Logic GL518SM release 0x00 - Prefix `gl518sm-r00' + Prefix `gl518sm' Addresses scanned: I2C 0x2c and 0x2d Datasheet: Not openly available * Genesys Logic GL518SM release 0x80 - Prefix `gl518sm-r80' + Prefix `gl518sm' Addresses scanned: I2C 0x2c and 0x2d - Datasheet: Not available + Datasheet: Not openly available -Author: Frodo Looijaard +Author: Frodo Looijaard , + Kyösti Mälkki Module Parameters @@ -91,7 +92,7 @@ will do no harm, but will return 'old' values. Chip Features ------------- -Chip `gl518sm-r00' +Chip `gl518sm' LABEL LABEL CLASS COMPUTE CLASS ACCESS MAGNITUDE vdd NONE NONE R 2 vin1 NONE NONE R 2 @@ -118,84 +119,29 @@ Chip `gl518sm-r00' beep_enable alarms NONE RW 0 beeps alarms alarms RW 0 - LABEL FEATURE SYMBOL SYSCTL FILE:NR - vdd SENSORS_GL518R00_VDD vdd:3 - vin1 SENSORS_GL518R00_VIN1 vin1:3 - vin2 SENSORS_GL518R00_VIN2 vin2:3 - vin3 SENSORS_GL518R00_VIN3 vin3:3 - vdd_min SENSORS_GL518R00_VDD_MIN vdd:1 - vin1_min SENSORS_GL518R00_VIN1_MIN vin1:1 - vin2_min SENSORS_GL518R00_VIN2_MIN vin2:1 - vin3_min SENSORS_GL518R00_VIN3_MIN vin3:1 - vdd_max SENSORS_GL518R00_VDD_MAX vdd:2 - vin1_max SENSORS_GL518R00_VIN1_MAX vin1:2 - vin2_max SENSORS_GL518R00_VIN2_MAX vin2:2 - vin3_max SENSORS_GL518R00_VIN3_MAX vin3:2 - fan1 SENSORS_GL518R00_FAN1 fan1:2 - fan2 SENSORS_GL518R00_FAN2 fan2:2 - fan1_min SENSORS_GL518R00_FAN1_MIN fan1:1 - fan2_min SENSORS_GL518R00_FAN2_MIN fan2:1 - temp SENSORS_GL518R00_TEMP temp:3 - temp_hyst SENSORS_GL518R00_TEMP_HYST temp:2 - temp_over SENSORS_GL518R00_TEMP_OVER temp:1 - fan1_div SENSORS_GL518R00_FAN1_DIV fan_div:1 - fan2_div SENSORS_GL518R00_FAN2_DIV fan_div:2 - alarms SENSORS_GL518R00_ALARMS alarms:1 - beep_enable SENSORS_GL518R00_BEEP_ENABLE beep:1 - beeps SENSORS_GL518R00_BEEPS beep:2 - - -Chip `gl518sm-r80' - LABEL LABEL CLASS COMPUTE CLASS ACCESS MAGNITUDE - vdd NONE NONE R 2 - vin1 NONE NONE R 2 - vin2 NONE NONE R 2 - vin3 NONE NONE R 2 - vdd_min vdd vdd RW 2 - vin1_min vin1 vin1 RW 2 - vin2_min vin2 vin2 RW 2 - vin3_min vin3 vin3 RW 2 - vdd_max vdd vdd RW 2 - vin1_max vin1 vin1 RW 2 - vin2_max vin2 vin2 RW 2 - vin3_max vin3 vin3 RW 2 - fan1 NONE NONE R 0 - fan2 NONE NONE R 0 - fan1_min fan1 fan1 RW 0 - fan2_min fan2 fan2 RW 0 - temp NONE NONE R 1 - temp_hyst temp temp RW 1 - temp_over temp temp RW 1 - fan1_div fan1 NONE RW 0 - fan2_div fan2 NONE RW 0 - alarms NONE NONE R 0 - beep_enable alarms NONE RW 0 - beeps alarms alarms RW 0 - - LABEL FEATURE SYMBOL SYSCTL FILE:NR - vdd SENSORS_GL518R80_VDD vdd:3 - vin1 SENSORS_GL518R80_VIN1 vin1:3 - vin2 SENSORS_GL518R80_VIN2 vin2:3 - vin3 SENSORS_GL518R80_VIN3 vin3:3 - vdd_min SENSORS_GL518R80_VDD_MIN vdd:1 - vin1_min SENSORS_GL518R80_VIN1_MIN vin1:1 - vin2_min SENSORS_GL518R80_VIN2_MIN vin2:1 - vin3_min SENSORS_GL518R80_VIN3_MIN vin3:1 - vdd_max SENSORS_GL518R80_VDD_MAX vdd:2 - vin1_max SENSORS_GL518R80_VIN1_MAX vin1:2 - vin2_max SENSORS_GL518R80_VIN2_MAX vin2:2 - vin3_max SENSORS_GL518R80_VIN3_MAX vin3:2 - fan1 SENSORS_GL518R80_FAN1 fan1:2 - fan2 SENSORS_GL518R80_FAN2 fan2:2 - fan1_min SENSORS_GL518R80_FAN1_MIN fan1:1 - fan2_min SENSORS_GL518R80_FAN2_MIN fan2:1 - temp SENSORS_GL518R80_TEMP temp:3 - temp_hyst SENSORS_GL518R80_TEMP_HYST temp:2 - temp_over SENSORS_GL518R80_TEMP_OVER temp:1 - fan1_div SENSORS_GL518R80_FAN1_DIV fan_div:1 - fan2_div SENSORS_GL518R80_FAN2_DIV fan_div:2 - alarms SENSORS_GL518R80_ALARMS alarms:1 - beep_enable SENSORS_GL518R80_BEEP_ENABLE beep:1 - beeps SENSORS_GL518R80_BEEPS beep:2 - + LABEL FEATURE SYMBOL SYSCTL FILE:NR + vdd SENSORS_GL518_VDD vdd:3 + vin1 SENSORS_GL518_VIN1 vin1:3 + vin2 SENSORS_GL518_VIN2 vin2:3 + vin3 SENSORS_GL518_VIN3 vin3:3 + vdd_min SENSORS_GL518_VDD_MIN vdd:1 + vin1_min SENSORS_GL518_VIN1_MIN vin1:1 + vin2_min SENSORS_GL518_VIN2_MIN vin2:1 + vin3_min SENSORS_GL518_VIN3_MIN vin3:1 + vdd_max SENSORS_GL518_VDD_MAX vdd:2 + vin1_max SENSORS_GL518_VIN1_MAX vin1:2 + vin2_max SENSORS_GL518_VIN2_MAX vin2:2 + vin3_max SENSORS_GL518_VIN3_MAX vin3:2 + fan1 SENSORS_GL518_FAN1 fan1:2 + fan2 SENSORS_GL518_FAN2 fan2:2 + fan1_min SENSORS_GL518_FAN1_MIN fan1:1 + fan2_min SENSORS_GL518_FAN2_MIN fan2:1 + temp SENSORS_GL518_TEMP temp:3 + temp_hyst SENSORS_GL518_TEMP_HYST temp:2 + temp_over SENSORS_GL518_TEMP_OVER temp:1 + fan1_div SENSORS_GL518_FAN1_DIV fan_div:1 + fan2_div SENSORS_GL518_FAN2_DIV fan_div:2 + alarms SENSORS_GL518_ALARMS alarms:1 + beep_enable SENSORS_GL518_BEEP_ENABLE beep:1 + beeps SENSORS_GL518_BEEPS beep:2 diff --git a/etc/sensors.conf.eg b/etc/sensors.conf.eg index 369a7d7d..b57e6bcd 100644 --- a/etc/sensors.conf.eg +++ b/etc/sensors.conf.eg @@ -275,6 +275,40 @@ chip "gl518sm-*" set vin2_max 13.0 set vin3_min 2.10 set vin3_max 2.30 + set fan1_off 0 + set iterate 0 + +chip "gl520sm-*" + +# Factors and labels taken from GL520SM datasheet + + label vdd "+5V" + label vin1 "+3.3V" + label vin2 "+12V" + label vin3 "Vcore" + label vin4 "-12V" + +# vin1 and vin3 require no scaling +# vin2 depends on external resistors (4,7k and 15k assumed) + +# vin4 = ((R1+R2)/R2)*@ - (R1/R2)*vdd +# +# -12 --| R1 |---t---| R2 |-- +5 +# | +# vin4 +# + + compute vin2 (197/47)*@ , @/(197/47) + compute vin4 (5*@)-(4*vdd) , (@+4*vdd)/5 + + set vdd_min 4.8 + set vdd_max 5.2 + set vin1_min 3.20 + set vin1_max 3.40 + set vin2_min 11.0 + set vin2_max 13.0 + set vin3_min 2.10 + set vin3_max 2.30 chip "lm80-*" diff --git a/kernel/chips/gl520sm.c b/kernel/chips/gl520sm.c index 916f38fe..7f54e052 100644 --- a/kernel/chips/gl520sm.c +++ b/kernel/chips/gl520sm.c @@ -200,6 +200,8 @@ static void gl520_alarms(struct i2c_client *client, int operation, int ctl_name, int *nrels_mag, long *results); static void gl520_beep(struct i2c_client *client, int operation, int ctl_name, int *nrels_mag, long *results); +static void gl520_fan1off(struct i2c_client *client, int operation, + int ctl_name, int *nrels_mag, long *results); static void gl520_config(struct i2c_client *client, int operation, int ctl_name, int *nrels_mag, long *results); @@ -247,6 +249,8 @@ static ctl_table gl520_dir_table_template[] = { &sensors_sysctl_real, NULL, &gl520_alarms }, { GL520_SYSCTL_BEEP, "beep", NULL, 0, 0644, NULL, &sensors_proc_real, &sensors_sysctl_real, NULL, &gl520_beep }, + { GL520_SYSCTL_FAN1OFF, "fan1off", NULL, 0, 0644, NULL, &sensors_proc_real, + &sensors_sysctl_real, NULL, &gl520_fan1off }, { GL520_SYSCTL_CONFIG, "config", NULL, 0, 0644, NULL, &sensors_proc_real, &sensors_sysctl_real, NULL, &gl520_config }, { 0 } @@ -742,6 +746,25 @@ void gl520_vid(struct i2c_client *client, int operation, int ctl_name, } } +void gl520_fan1off(struct i2c_client *client, int operation, int ctl_name, + int *nrels_mag, long *results) +{ + int old; + if (operation == SENSORS_PROC_REAL_INFO) + *nrels_mag = 0; + else if (operation == SENSORS_PROC_REAL_READ) { + results[0] = ((gl520_read_value(client, GL520_REG_MISC) & 0x04) !=0); + *nrels_mag = 1; + } else if (operation == SENSORS_PROC_REAL_WRITE) { + if (*nrels_mag >= 1) { + old = gl520_read_value(client, GL520_REG_MISC) & 0xfb; + if (results[0]) + old |= 0x04; + gl520_write_value(client,GL520_REG_MISC,old); + } + } +} + void gl520_config(struct i2c_client *client, int operation, int ctl_name, int *nrels_mag, long *results) { @@ -749,22 +772,15 @@ void gl520_config(struct i2c_client *client, int operation, int ctl_name, if (operation == SENSORS_PROC_REAL_INFO) *nrels_mag = 0; else if (operation == SENSORS_PROC_REAL_READ) { - results[0] = ((gl520_read_value(client, GL520_REG_CONF) & 0x10) !=0); - results[1] = ((gl520_read_value(client, GL520_REG_MISC) & 0x08) !=0); - *nrels_mag = 2; + results[0] = ((gl520_read_value(client, GL520_REG_CONF) & 0x10)==0); + *nrels_mag = 1; } else if (operation == SENSORS_PROC_REAL_WRITE) { if (*nrels_mag >= 1) { old = gl520_read_value(client, GL520_REG_CONF) & 0xef; - if (results[1]) + if (! results[1]) old |= 0x10; gl520_write_value(client,GL520_REG_CONF,old); } - if (*nrels_mag >= 2) { - old = gl520_read_value(client, GL520_REG_MISC) & 0xf7; - if (results[0]) - old |= 0x08; - gl520_write_value(client,GL520_REG_MISC,old); - } } } diff --git a/kernel/include/sensors.h b/kernel/include/sensors.h index 38905e1e..4bfbc6c8 100644 --- a/kernel/include/sensors.h +++ b/kernel/include/sensors.h @@ -425,7 +425,6 @@ struct sensors_chips_data { #define GL518_SYSCTL_FAN1 1101 /* RPM */ #define GL518_SYSCTL_FAN2 1102 #define GL518_SYSCTL_TEMP 1200 /* Degrees Celcius * 10 */ -#define GL518_SYSCTL_VID 1300 #define GL518_SYSCTL_FAN_DIV 2000 /* 1, 2, 4 or 8 */ #define GL518_SYSCTL_ALARMS 2001 /* bitvector */ #define GL518_SYSCTL_BEEP 2002 /* bitvector */ @@ -453,7 +452,8 @@ struct sensors_chips_data { #define GL520_SYSCTL_FAN_DIV 2000 /* 1, 2, 4 or 8 */ #define GL520_SYSCTL_ALARMS 2001 /* bitvector */ #define GL520_SYSCTL_BEEP 2002 /* bitvector */ -#define GL520_SYSCTL_CONFIG 2003 +#define GL520_SYSCTL_FAN1OFF 2003 +#define GL520_SYSCTL_CONFIG 2004 #define GL520_ALARM_VDD 0x01 #define GL520_ALARM_VIN1 0x02 diff --git a/lib/chips.c b/lib/chips.c index 57a45b00..5f545fc3 100644 --- a/lib/chips.c +++ b/lib/chips.c @@ -382,7 +382,7 @@ static sensors_chip_feature max1617a_features[] = { 0 } }; -static sensors_chip_feature gl518r00_features[] = +static sensors_chip_feature gl518_features[] = { { SENSORS_GL518_VDD, "vdd", SENSORS_NO_MAPPING,SENSORS_NO_MAPPING, SENSORS_MODE_R, GL518_SYSCTL_VDD, VALUE(3), 2 }, @@ -451,6 +451,111 @@ static sensors_chip_feature gl518r00_features[] = { SENSORS_GL518_BEEPS, "beeps", SENSORS_GL518_ALARMS, SENSORS_GL518_ALARMS, SENSORS_MODE_RW, GL518_SYSCTL_BEEP, VALUE(2), 0 }, + { SENSORS_GL518_FAN1OFF, "fan1_off", SENSORS_GL518_FAN1, + SENSORS_NO_MAPPING, SENSORS_MODE_RW, + GL518_SYSCTL_FAN1OFF, VALUE(1), 0 }, + { SENSORS_GL518_FAN1PIN, "fan1_off_pin", SENSORS_GL518_FAN1OFF, + SENSORS_NO_MAPPING, SENSORS_MODE_RW, + GL518_SYSCTL_FAN1OFF, VALUE(2), 0 }, + { SENSORS_GL518_ITERATE, "iterate", SENSORS_NO_MAPPING, + SENSORS_NO_MAPPING, SENSORS_MODE_RW, + GL518_SYSCTL_ITERATE, VALUE(1), 0 }, + { 0 } + }; + +static sensors_chip_feature gl520_features[] = + { + { SENSORS_GL520_VDD, "vdd", SENSORS_NO_MAPPING,SENSORS_NO_MAPPING, + SENSORS_MODE_R, GL520_SYSCTL_VDD, VALUE(3), 2 }, + { SENSORS_GL520_VIN1, "vin1", SENSORS_NO_MAPPING,SENSORS_NO_MAPPING, + SENSORS_MODE_R, GL520_SYSCTL_VIN1, VALUE(3), + 2 }, + { SENSORS_GL520_VIN2, "vin2", SENSORS_NO_MAPPING,SENSORS_NO_MAPPING, + SENSORS_MODE_R, GL520_SYSCTL_VIN2, VALUE(3), + 2 }, + { SENSORS_GL520_VIN3, "vin3", SENSORS_NO_MAPPING,SENSORS_NO_MAPPING, + SENSORS_MODE_R, GL520_SYSCTL_VIN3, VALUE(3), 2 }, + { SENSORS_GL520_VIN4, "vin4", SENSORS_NO_MAPPING,SENSORS_NO_MAPPING, + SENSORS_MODE_R, GL520_SYSCTL_VIN4, VALUE(3), 2 }, + { SENSORS_GL520_VDD_MIN, "vdd_min", SENSORS_GL520_VDD, + SENSORS_GL520_VDD, SENSORS_MODE_RW, + GL520_SYSCTL_VDD, VALUE(1), 2 }, + { SENSORS_GL520_VIN1_MIN, "vin1_min", SENSORS_GL520_VIN1, + SENSORS_GL520_VIN1, SENSORS_MODE_RW, + GL520_SYSCTL_VIN1, VALUE(1), 2 }, + { SENSORS_GL520_VIN2_MIN, "vin2_min", SENSORS_GL520_VIN2, + SENSORS_GL520_VIN2, SENSORS_MODE_RW, + GL520_SYSCTL_VIN2, VALUE(1), 2 }, + { SENSORS_GL520_VIN3_MIN, "vin3_min", SENSORS_GL520_VIN3, + SENSORS_GL520_VIN3, SENSORS_MODE_RW, + GL520_SYSCTL_VIN3, VALUE(1), 2 }, + { SENSORS_GL520_VIN4_MIN, "vin4_min", SENSORS_GL520_VIN4, + SENSORS_GL520_VIN4, SENSORS_MODE_RW, + GL520_SYSCTL_VIN4, VALUE(1), 2 }, + { SENSORS_GL520_VDD_MAX, "vdd_max", SENSORS_GL520_VDD, + SENSORS_GL520_VDD, SENSORS_MODE_RW, + GL520_SYSCTL_VDD, VALUE(2), 2 }, + { SENSORS_GL520_VIN1_MAX, "vin1_max", SENSORS_GL520_VIN1, + SENSORS_GL520_VIN1, SENSORS_MODE_RW, + GL520_SYSCTL_VIN1, VALUE(2), 2 }, + { SENSORS_GL520_VIN2_MAX, "vin2_max", SENSORS_GL520_VIN2, + SENSORS_GL520_VIN2, SENSORS_MODE_RW, + GL520_SYSCTL_VIN2, VALUE(2), 2 }, + { SENSORS_GL520_VIN3_MAX, "vin3_max", SENSORS_GL520_VIN3, + SENSORS_GL520_VIN3, SENSORS_MODE_RW, + GL520_SYSCTL_VIN3, VALUE(2), 2 }, + { SENSORS_GL520_VIN4_MAX, "vin4_max", SENSORS_GL520_VIN4, + SENSORS_GL520_VIN4, SENSORS_MODE_RW, + GL520_SYSCTL_VIN4, VALUE(2), 2 }, + { SENSORS_GL520_FAN1, "fan1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, + SENSORS_MODE_R, GL520_SYSCTL_FAN1, VALUE(2), 0 }, + { SENSORS_GL520_FAN2, "fan2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, + SENSORS_MODE_R, GL520_SYSCTL_FAN2, VALUE(2), 0 }, + { SENSORS_GL520_FAN1_MIN, "fan1_min", SENSORS_GL520_FAN1, + SENSORS_GL520_FAN1, SENSORS_MODE_RW, + GL520_SYSCTL_FAN1, VALUE(1), 0 }, + { SENSORS_GL520_FAN2_MIN, "fan2_min", SENSORS_GL520_FAN2, + SENSORS_GL520_FAN2, SENSORS_MODE_RW, + GL520_SYSCTL_FAN2, VALUE(1), 0 }, + { SENSORS_GL520_TEMP1, "temp1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, + SENSORS_MODE_R, GL520_SYSCTL_TEMP1, VALUE(3), 1 }, + { SENSORS_GL520_TEMP1_HYST, "temp1_hyst", SENSORS_GL520_TEMP1, + SENSORS_GL520_TEMP1, SENSORS_MODE_RW, + GL520_SYSCTL_TEMP1, VALUE(2), 1 }, + { SENSORS_GL520_TEMP1_OVER, "temp1_over", SENSORS_GL520_TEMP1, + SENSORS_GL520_TEMP1, SENSORS_MODE_RW, + GL520_SYSCTL_TEMP1, VALUE(1), 1 }, + { SENSORS_GL520_TEMP2, "temp2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, + SENSORS_MODE_R, GL520_SYSCTL_TEMP2, VALUE(3), 1 }, + { SENSORS_GL520_TEMP2_HYST, "temp2_hyst", SENSORS_GL520_TEMP2, + SENSORS_GL520_TEMP2, SENSORS_MODE_RW, + GL520_SYSCTL_TEMP2, VALUE(2), 1 }, + { SENSORS_GL520_TEMP2_OVER, "temp2_over", SENSORS_GL520_TEMP2, + SENSORS_GL520_TEMP2, SENSORS_MODE_RW, + GL520_SYSCTL_TEMP2, VALUE(1), 1 }, + { SENSORS_GL520_VID, "vid", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, + SENSORS_MODE_R, GL520_SYSCTL_VID, VALUE(1), 2 }, + { SENSORS_GL520_FAN1_DIV, "fan1_div", SENSORS_GL520_FAN1, + SENSORS_NO_MAPPING, SENSORS_MODE_RW, + GL520_SYSCTL_FAN_DIV, VALUE(1), 0 }, + { SENSORS_GL520_FAN2_DIV, "fan2_div", SENSORS_GL520_FAN2, + SENSORS_NO_MAPPING, SENSORS_MODE_RW, + GL520_SYSCTL_FAN_DIV, VALUE(2), 0 }, + { SENSORS_GL520_ALARMS, "alarms", SENSORS_NO_MAPPING, + SENSORS_NO_MAPPING, SENSORS_MODE_R, + GL520_SYSCTL_ALARMS, VALUE(1), 0 }, + { SENSORS_GL520_BEEP_ENABLE, "beep_enable", SENSORS_GL520_ALARMS, + SENSORS_NO_MAPPING, SENSORS_MODE_RW, + GL520_SYSCTL_BEEP, VALUE(1), 0 }, + { SENSORS_GL520_BEEPS, "beeps", SENSORS_GL520_ALARMS, + SENSORS_GL520_ALARMS, SENSORS_MODE_RW, + GL520_SYSCTL_BEEP, VALUE(2), 0 }, + { SENSORS_GL520_FAN1OFF, "fan1_off", SENSORS_GL520_FAN1, + SENSORS_NO_MAPPING, SENSORS_MODE_RW, + GL520_SYSCTL_FAN1OFF, VALUE(1), 0 }, + { SENSORS_GL520_TWOTEMPS, "two_temps", SENSORS_NO_MAPPING, + SENSORS_NO_MAPPING, SENSORS_MODE_RW, + GL520_SYSCTL_CONFIG, VALUE(1), 0 }, { 0 } }; @@ -1423,7 +1528,8 @@ sensors_chip_features sensors_chip_features_list[] = { SENSORS_LM78J_PREFIX, lm78j_features }, { SENSORS_LM79_PREFIX, lm79_features }, { SENSORS_LM75_PREFIX, lm75_features }, - { SENSORS_GL518_PREFIX, gl518r00_features }, + { SENSORS_GL518_PREFIX, gl518_features }, + { SENSORS_GL520_PREFIX, gl520_features }, { SENSORS_LM80_PREFIX, lm80_features }, { SENSORS_W83781D_PREFIX, w83781d_features }, { SENSORS_W83782D_PREFIX, w83782d_features }, diff --git a/lib/chips.h b/lib/chips.h index 0e02b639..743bc62c 100644 --- a/lib/chips.h +++ b/lib/chips.h @@ -231,6 +231,47 @@ #define SENSORS_GL518_ALARMS 81 /* R */ #define SENSORS_GL518_BEEP_ENABLE 82 /* RW */ #define SENSORS_GL518_BEEPS 83 /* RW */ +#define SENSORS_GL518_ITERATE 84 /* RW */ +#define SENSORS_GL518_FAN1OFF 85 /* RW */ +#define SENSORS_GL518_FAN1PIN 86 /* RW */ + +/* GL520SM chips */ + +#define SENSORS_GL520_PREFIX "gl520sm" + +#define SENSORS_GL520_VDD 1 /* R */ +#define SENSORS_GL520_VIN1 2 /* R */ +#define SENSORS_GL520_VIN2 3 /* R */ +#define SENSORS_GL520_VIN3 4 /* R */ +#define SENSORS_GL520_VIN4 4 /* R */ +#define SENSORS_GL520_VDD_MIN 11 /* RW */ +#define SENSORS_GL520_VIN1_MIN 12 /* RW */ +#define SENSORS_GL520_VIN2_MIN 13 /* RW */ +#define SENSORS_GL520_VIN3_MIN 14 /* RW */ +#define SENSORS_GL520_VIN4_MIN 15 /* RW */ +#define SENSORS_GL520_VDD_MAX 21 /* RW */ +#define SENSORS_GL520_VIN1_MAX 22 /* RW */ +#define SENSORS_GL520_VIN2_MAX 23 /* RW */ +#define SENSORS_GL520_VIN3_MAX 24 /* RW */ +#define SENSORS_GL520_VIN4_MAX 25 /* RW */ +#define SENSORS_GL520_FAN1 31 /* R */ +#define SENSORS_GL520_FAN2 32 /* R */ +#define SENSORS_GL520_FAN1_MIN 41 /* RW */ +#define SENSORS_GL520_FAN2_MIN 42 /* RW */ +#define SENSORS_GL520_TEMP1 51 /* R */ +#define SENSORS_GL520_TEMP1_HYST 52 /* RW */ +#define SENSORS_GL520_TEMP1_OVER 53 /* RW */ +#define SENSORS_GL520_TEMP2 54 /* R */ +#define SENSORS_GL520_TEMP2_HYST 55 /* RW */ +#define SENSORS_GL520_TEMP2_OVER 56 /* RW */ +#define SENSORS_GL520_VID 61 /* R */ +#define SENSORS_GL520_FAN1_DIV 71 /* RW */ +#define SENSORS_GL520_FAN2_DIV 72 /* RW */ +#define SENSORS_GL520_ALARMS 81 /* R */ +#define SENSORS_GL520_BEEP_ENABLE 82 /* RW */ +#define SENSORS_GL520_BEEPS 83 /* RW */ +#define SENSORS_GL520_TWOTEMPS 84 /* RW */ +#define SENSORS_GL520_FAN1OFF 85 /* RW */ /* LM80 chips */