(Kyösti)

* gl518sm document simplified for rev 0x00 & 0x80
 * gl518sm & gl520sm libsensors interface updates

 BTW: Revision is no longer part of the name, so old sensors.conf
      will not work at all with gl518sm.


git-svn-id: http://lm-sensors.org/svn/lm-sensors/trunk@511 7894878c-1315-0410-8ee3-d5d059ff63e0
This commit is contained in:
Kyosti Malkki committed 1999-07-22 21:19:14 +00:00
1 parent 41c6e871a4
commit c9e71cd9df
6 files changed
+242 -99

No files matched your search

+31 -85
View File
@@ -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 <frodol@dds.nl>
Author: Frodo Looijaard <frodol@dds.nl>,
Kyösti Mälkki <kmalkki@cc.hut.fi>
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
+34
View File
@@ -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-*"
+26 -10
View File
@@ -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);
}
}
}
+2 -2
View File
@@ -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
+108 -2
View File
@@ -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 },
+41
View File
@@ -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 */