diff --git a/kernel/chips/lm87.c b/kernel/chips/lm87.c index 17f292a2..b04ae721 100644 --- a/kernel/chips/lm87.c +++ b/kernel/chips/lm87.c @@ -346,15 +346,17 @@ static ctl_table lm87_dir_table_template[] = { &sensors_sysctl_real, NULL, &lm87_in}, {LM87_SYSCTL_IN5, "in5", NULL, 0, 0644, NULL, &sensors_proc_real, &sensors_sysctl_real, NULL, &lm87_in}, - {LM87_SYSCTL_FAN, "fan1", NULL, 0, 0644, NULL, &sensors_proc_real, + {LM87_SYSCTL_FAN1, "fan1", NULL, 0, 0644, NULL, &sensors_proc_real, &sensors_sysctl_real, NULL, &lm87_fan}, - {LM87_SYSCTL_FRNT_TEMP, "temp1", NULL, + {LM87_SYSCTL_FAN2, "fan2", NULL, 0, 0644, NULL, &sensors_proc_real, + &sensors_sysctl_real, NULL, &lm87_fan}, + {LM87_SYSCTL_TEMP1, "temp1", NULL, 0, 0644, NULL, &sensors_proc_real, + &sensors_sysctl_real, NULL, &lm87_temp}, + {LM87_SYSCTL_TEMP2, "temp2", NULL, 0, 0644, NULL, &sensors_proc_real, + &sensors_sysctl_real, NULL, &lm87_temp}, + {LM87_SYSCTL_TEMP3, "temp3", NULL, 0, 0644, NULL, &sensors_proc_real, &sensors_sysctl_real, NULL, &lm87_temp}, - {LM87_SYSCTL_CPU_TEMP, "temp2", NULL, 0, 0644, NULL, &sensors_proc_real, - &sensors_sysctl_real, NULL, &lm87_temp}, - {LM87_SYSCTL_INT_TEMP, "temp3", NULL, 0, 0644, NULL, &sensors_proc_real, - &sensors_sysctl_real, NULL, &lm87_temp}, {LM87_SYSCTL_FAN_DIV, "fan_div", NULL, 0, 0644, NULL, &sensors_proc_real, &sensors_sysctl_real, NULL, &lm87_fan_div}, @@ -730,7 +732,10 @@ void lm87_fan(struct i2c_client *client, int operation, int ctl_name, int *nrels_mag, long *results) { struct lm87_data *data = client->data; - int nr = ctl_name - LM87_SYSCTL_FAN + 1; /* not sure +1 needed */ +/* + need to fix this function to handle both fans + int nr = ctl_name - LM87_SYSCTL_FAN + 1; +*/ if (operation == SENSORS_PROC_REAL_INFO) *nrels_mag = 0; @@ -765,19 +770,19 @@ void lm87_temp(struct i2c_client *client, int operation, int ctl_name, lm87_update_client(client); /* find out which temp. is being requested */ - if (ctl_name == LM87_SYSCTL_FRNT_TEMP) + if (ctl_name == LM87_SYSCTL_TEMP3) { results[0] = TEMP_LIMIT_FROM_REG(data->front_amb_temp_max); results[1] = TEMP_LIMIT_FROM_REG(data->front_amb_temp_min); results[2] = TEMP_FROM_REG(data->front_amb_temp); } - else if(ctl_name == LM87_SYSCTL_CPU_TEMP) + else if(ctl_name == LM87_SYSCTL_TEMP2) { results[0] = TEMP_LIMIT_FROM_REG(data->cpu_temp_max); results[1] = TEMP_LIMIT_FROM_REG(data->cpu_temp_min); results[2] = TEMP_FROM_REG(data->cpu_temp); } - else if(ctl_name == LM87_SYSCTL_INT_TEMP) + else if(ctl_name == LM87_SYSCTL_TEMP1) { results[0] = TEMP_LIMIT_FROM_REG(data->int_temp_max); results[1] = TEMP_LIMIT_FROM_REG(data->int_temp_min); @@ -786,36 +791,36 @@ void lm87_temp(struct i2c_client *client, int operation, int ctl_name, *nrels_mag = 3; } else if (operation == SENSORS_PROC_REAL_WRITE) { if (*nrels_mag >= 1) { - if (ctl_name == LM87_SYSCTL_FRNT_TEMP) { + if (ctl_name == LM87_SYSCTL_TEMP3) { data->front_amb_temp_max = TEMP_LIMIT_TO_REG(results[0]); lm87_write_value(client, LM87_REG_2_5V_EXT_TEMP_2_HIGH, data->front_amb_temp_max); } - if (ctl_name == LM87_SYSCTL_CPU_TEMP) { + if (ctl_name == LM87_SYSCTL_TEMP2) { data->cpu_temp_max = TEMP_LIMIT_TO_REG(results[0]); lm87_write_value(client, LM87_REG_EXT_TEMP_1_HIGH, data->int_temp_max); } - if (ctl_name == LM87_SYSCTL_INT_TEMP) { + if (ctl_name == LM87_SYSCTL_TEMP1) { data->int_temp_max = TEMP_LIMIT_TO_REG(results[0]); lm87_write_value(client, LM87_REG_INT_TEMP_HIGH, data->int_temp_max); } } if (*nrels_mag >= 2) { - if (ctl_name == LM87_SYSCTL_FRNT_TEMP) { + if (ctl_name == LM87_SYSCTL_TEMP3) { data->front_amb_temp_min = TEMP_LIMIT_TO_REG(results[0]); lm87_write_value(client, LM87_REG_2_5V_EXT_TEMP_2_LOW, data->front_amb_temp_min); } - if (ctl_name == LM87_SYSCTL_CPU_TEMP) { + if (ctl_name == LM87_SYSCTL_TEMP2) { data->cpu_temp_min = TEMP_LIMIT_TO_REG(results[0]); lm87_write_value(client, LM87_REG_EXT_TEMP_1_LOW, data->int_temp_min); } - if (ctl_name == LM87_SYSCTL_INT_TEMP) { + if (ctl_name == LM87_SYSCTL_TEMP1) { data->int_temp_min = TEMP_LIMIT_TO_REG(results[1]); lm87_write_value(client, LM87_REG_INT_TEMP_LOW, data->int_temp_min); diff --git a/kernel/include/sensors.h b/kernel/include/sensors.h index 200d1f3b..1e7690c0 100644 --- a/kernel/include/sensors.h +++ b/kernel/include/sensors.h @@ -756,10 +756,11 @@ struct sensors_chips_data { #define LM87_SYSCTL_IN3 1003 #define LM87_SYSCTL_IN4 1004 #define LM87_SYSCTL_IN5 1005 -#define LM87_SYSCTL_FAN 1102 -#define LM87_SYSCTL_FRNT_TEMP 1250 /* Degrees Celcius * 100 */ -#define LM87_SYSCTL_CPU_TEMP 1251 /* Degrees Celcius * 100 */ -#define LM87_SYSCTL_INT_TEMP 1252 /* Degrees Celcius * 100 */ +#define LM87_SYSCTL_FAN1 1101 +#define LM87_SYSCTL_FAN2 1102 +#define LM87_SYSCTL_TEMP1 1250 /* Degrees Celcius * 100 */ +#define LM87_SYSCTL_TEMP2 1251 /* Degrees Celcius * 100 */ +#define LM87_SYSCTL_TEMP3 1252 /* Degrees Celcius * 100 */ #define LM87_SYSCTL_FAN_DIV 2000 /* 1, 2, 4 or 8 */ #define LM87_SYSCTL_ALARMS 2001 /* bitvector */ #define LM87_SYSCTL_ANALOG_OUT 2002 @@ -771,9 +772,11 @@ struct sensors_chips_data { #define LM87_ALARM_IN3 0x0008 #define LM87_ALARM_IN4 0x0100 #define LM87_ALARM_IN5 0x0200 -#define LM87_ALARM_AMB_TEMP 0x0040 +#define LM87_ALARM_TEMP1 0x0010 +#define LM87_ALARM_TEMP2 0x4020 /* include D1 fault */ +#define LM87_ALARM_TEMP3 0x8001 /* include D2 fault */ +#define LM87_ALARM_FAN1 0x0040 #define LM87_ALARM_FAN2 0x0080 -#define LM87_ALARM_INT_TEMP 0x0010 #define LM87_ALARM_CHAS 0x1000 #define PCF8574_SYSCTL_STAT 1000 diff --git a/lib/chips.c b/lib/chips.c index 9d536913..cc9ae42d 100644 --- a/lib/chips.c +++ b/lib/chips.c @@ -1824,31 +1824,48 @@ static sensors_chip_feature lm87_features[] = { SENSORS_LM87_IN5_MAX, "Vccp2_max", SENSORS_LM87_IN5, SENSORS_LM87_IN5, SENSORS_MODE_RW, LM87_SYSCTL_IN5, VALUE(2), 2 }, - { SENSORS_LM87_FAN2_AIN2, "fan", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, - SENSORS_MODE_R, LM87_SYSCTL_FAN, VALUE(2), 0 }, - { SENSORS_LM87_FAN1_AIN1_LIMIT, "fan1/ain1_limit", SENSORS_LM87_FAN1_AIN1, - SENSORS_LM87_FAN1_AIN1, SENSORS_MODE_RW, - LM87_SYSCTL_FAN, VALUE(1), 0 }, - { SENSORS_LM87_FAN2_AIN2_LIMIT, "fan2/ain2_limit", SENSORS_LM87_FAN2_AIN2, - SENSORS_LM87_FAN2_AIN2, SENSORS_MODE_RW, - LM87_SYSCTL_FAN, VALUE(1), 0 }, - { SENSORS_LM87_FRONT_TEMP, "frnt_amb_temp", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, - SENSORS_MODE_R, LM87_SYSCTL_FRNT_TEMP, VALUE(3), 1 }, - { SENSORS_LM87_CPU_TEMP, "CPU_Temp", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, - SENSORS_MODE_R, LM87_SYSCTL_CPU_TEMP, VALUE(3), 1 }, - { SENSORS_LM87_INT_TEMP, "int_temp", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, - SENSORS_MODE_R, LM87_SYSCTL_INT_TEMP, VALUE(3), 1 }, - { SENSORS_LM87_INT_TEMP_HYST, "temp_hyst", SENSORS_LM87_INT_TEMP, - SENSORS_LM87_INT_TEMP, SENSORS_MODE_RW, - LM87_SYSCTL_INT_TEMP, VALUE(2), 1 }, - { SENSORS_LM87_INT_TEMP_OVER, "temp_over", SENSORS_LM87_INT_TEMP, - SENSORS_LM87_INT_TEMP, SENSORS_MODE_RW, - LM87_SYSCTL_INT_TEMP, VALUE(1), 1 }, + { SENSORS_LM87_FAN1, "fan1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, + SENSORS_MODE_R, LM87_SYSCTL_FAN1, VALUE(2), 0 }, + { SENSORS_LM87_FAN2, "fan2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, + SENSORS_MODE_R, LM87_SYSCTL_FAN2, VALUE(2), 0 }, + { SENSORS_LM87_FAN1_MIN, "fan1 min", SENSORS_LM87_FAN1, + SENSORS_LM87_FAN1, SENSORS_MODE_RW, + LM87_SYSCTL_FAN1, VALUE(1), 0 }, + { SENSORS_LM87_FAN2_MIN, "fan2 min", SENSORS_LM87_FAN2, + SENSORS_LM87_FAN2, SENSORS_MODE_RW, + LM87_SYSCTL_FAN2, VALUE(1), 0 }, + { SENSORS_LM87_TEMP3, "temp3", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, + SENSORS_MODE_R, LM87_SYSCTL_TEMP3, VALUE(3), 1 }, + { SENSORS_LM87_TEMP2, "CPU Temp", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, + SENSORS_MODE_R, LM87_SYSCTL_TEMP2, VALUE(3), 1 }, + { SENSORS_LM87_TEMP1, "temp1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, + SENSORS_MODE_R, LM87_SYSCTL_TEMP1, VALUE(3), 1 }, + { SENSORS_LM87_TEMP1_HYST, "temp_hyst", SENSORS_LM87_TEMP1, + SENSORS_LM87_TEMP1, SENSORS_MODE_RW, + LM87_SYSCTL_TEMP1, VALUE(2), 1 }, + { SENSORS_LM87_TEMP1_OVER, "temp_over", SENSORS_LM87_TEMP1, + SENSORS_LM87_TEMP1, SENSORS_MODE_RW, + LM87_SYSCTL_TEMP1, VALUE(1), 1 }, + { SENSORS_LM87_TEMP2_HYST, "temp_hyst", SENSORS_LM87_TEMP2, + SENSORS_LM87_TEMP2, SENSORS_MODE_RW, + LM87_SYSCTL_TEMP2, VALUE(2), 1 }, + { SENSORS_LM87_TEMP2_OVER, "temp_over", SENSORS_LM87_TEMP2, + SENSORS_LM87_TEMP2, SENSORS_MODE_RW, + LM87_SYSCTL_TEMP2, VALUE(1), 1 }, + { SENSORS_LM87_TEMP3_HYST, "temp_hyst", SENSORS_LM87_TEMP3, + SENSORS_LM87_TEMP3, SENSORS_MODE_RW, + LM87_SYSCTL_TEMP3, VALUE(2), 1 }, + { SENSORS_LM87_TEMP3_OVER, "temp_over", SENSORS_LM87_TEMP3, + SENSORS_LM87_TEMP3, SENSORS_MODE_RW, + LM87_SYSCTL_TEMP3, VALUE(1), 1 }, { SENSORS_LM87_VID, "vid", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, SENSORS_MODE_R, LM87_SYSCTL_VID, VALUE(1), 2 }, - { SENSORS_LM87_FAN_DIV, "fan_div", SENSORS_LM87_FAN2_AIN2, + { SENSORS_LM87_FAN1_DIV, "fan_div", SENSORS_LM87_FAN1, SENSORS_NO_MAPPING, SENSORS_MODE_RW, LM87_SYSCTL_FAN_DIV, VALUE(1), 0 }, + { SENSORS_LM87_FAN2_DIV, "fan_div", SENSORS_LM87_FAN2, + SENSORS_NO_MAPPING, SENSORS_MODE_RW, + LM87_SYSCTL_FAN_DIV, VALUE(2), 0 }, { SENSORS_LM87_ALARMS, "alarms", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, SENSORS_MODE_R, LM87_SYSCTL_ALARMS, VALUE(1), 0 }, { SENSORS_LM87_ANALOG_OUT, "analog_out", SENSORS_NO_MAPPING, diff --git a/lib/chips.h b/lib/chips.h index 75e1edcf..7f7ed1cf 100644 --- a/lib/chips.h +++ b/lib/chips.h @@ -840,17 +840,22 @@ #define SENSORS_LM87_IN3_MAX 24 /* RW */ #define SENSORS_LM87_IN4_MAX 25 /* RW */ #define SENSORS_LM87_IN5_MAX 26 /* RW */ -#define SENSORS_LM87_FAN1_AIN1 31 /* R */ -#define SENSORS_LM87_FAN2_AIN2 32 /* R */ -#define SENSORS_LM87_FAN1_AIN1_LIMIT 41 /* RW */ -#define SENSORS_LM87_FAN2_AIN2_LIMIT 42 /* RW */ -#define SENSORS_LM87_FRONT_TEMP 51 /* R */ -#define SENSORS_LM87_CPU_TEMP 52 /* R */ -#define SENSORS_LM87_INT_TEMP 53 /* R */ -#define SENSORS_LM87_INT_TEMP_HYST 54 /* RW */ -#define SENSORS_LM87_INT_TEMP_OVER 55 /* RW */ +#define SENSORS_LM87_FAN1 31 /* R */ +#define SENSORS_LM87_FAN2 32 /* R */ +#define SENSORS_LM87_FAN1_MIN 41 /* RW */ +#define SENSORS_LM87_FAN2_MIN 42 /* RW */ +#define SENSORS_LM87_TEMP1 51 /* R */ +#define SENSORS_LM87_TEMP2 52 /* R */ +#define SENSORS_LM87_TEMP3 53 /* R */ +#define SENSORS_LM87_TEMP1_HYST 54 /* RW */ +#define SENSORS_LM87_TEMP1_OVER 55 /* RW */ +#define SENSORS_LM87_TEMP2_HYST 56 /* RW */ +#define SENSORS_LM87_TEMP2_OVER 57 /* RW */ +#define SENSORS_LM87_TEMP3_HYST 58 /* RW */ +#define SENSORS_LM87_TEMP3_OVER 59 /* RW */ #define SENSORS_LM87_VID 61 /* R */ -#define SENSORS_LM87_FAN_DIV 71 /* RW */ +#define SENSORS_LM87_FAN1_DIV 71 /* RW */ +#define SENSORS_LM87_FAN2_DIV 72 /* RW */ #define SENSORS_LM87_ALARMS 81 /* R */ #define SENSORS_LM87_ANALOG_OUT 82 /* RW */ diff --git a/prog/sensors/chips.c b/prog/sensors/chips.c index ed204ede..62a233d1 100644 --- a/prog/sensors/chips.c +++ b/prog/sensors/chips.c @@ -1277,6 +1277,167 @@ void print_lm80(const sensors_chip_name *name) free_the_label(&label); } +void print_lm87(const sensors_chip_name *name) +{ + char *label = NULL; + double cur,min,max,fdiv; + int alarms,valid; + + if (!sensors_get_feature(*name,SENSORS_LM87_ALARMS,&cur)) + alarms = cur + 0.5; + else { + printf("ERROR: Can't get alarm data!\n"); + alarms = 0; + } + + + if (!sensors_get_label_and_valid(*name,SENSORS_LM87_IN0,&label,&valid) && + !sensors_get_feature(*name,SENSORS_LM87_IN0,&cur) && + !sensors_get_feature(*name,SENSORS_LM87_IN0_MIN,&min) && + !sensors_get_feature(*name,SENSORS_LM87_IN0_MAX,&max)) { + if (valid) { + print_label(label,10); + printf("%+6.2f V (min = %+6.2f V, max = %+6.2f V) %s\n", + cur,min,max,alarms&LM87_ALARM_IN0?"ALARM":""); + } + } else + printf("ERROR: Can't get IN0 data!\n"); + free_the_label(&label); + if (!sensors_get_label_and_valid(*name,SENSORS_LM87_IN1,&label,&valid) && + !sensors_get_feature(*name,SENSORS_LM87_IN1,&cur) && + !sensors_get_feature(*name,SENSORS_LM87_IN1_MIN,&min) && + !sensors_get_feature(*name,SENSORS_LM87_IN1_MAX,&max)) { + if (valid) { + print_label(label,10); + printf("%+6.2f V (min = %+6.2f V, max = %+6.2f V) %s\n", + cur,min,max,alarms&LM87_ALARM_IN1?"ALARM":""); + } + } else + printf("ERROR: Can't get IN1 data!\n"); + free_the_label(&label); + if (!sensors_get_label_and_valid(*name,SENSORS_LM87_IN2,&label,&valid) && + !sensors_get_feature(*name,SENSORS_LM87_IN2,&cur) && + !sensors_get_feature(*name,SENSORS_LM87_IN2_MIN,&min) && + !sensors_get_feature(*name,SENSORS_LM87_IN2_MAX,&max)) { + if (valid) { + print_label(label,10); + printf("%+6.2f V (min = %+6.2f V, max = %+6.2f V) %s\n", + cur,min,max,alarms&LM87_ALARM_IN2?"ALARM":""); + } + } else + printf("ERROR: Can't get IN2 data!\n"); + free_the_label(&label); + if (!sensors_get_label_and_valid(*name,SENSORS_LM87_IN3,&label,&valid) && + !sensors_get_feature(*name,SENSORS_LM87_IN3,&cur) && + !sensors_get_feature(*name,SENSORS_LM87_IN3_MIN,&min) && + !sensors_get_feature(*name,SENSORS_LM87_IN3_MAX,&max)) { + if (valid) { + print_label(label,10); + printf("%+6.2f V (min = %+6.2f V, max = %+6.2f V) %s\n", + cur,min,max,alarms&LM87_ALARM_IN3?"ALARM":""); + } + } else + printf("ERROR: Can't get IN3 data!\n"); + free_the_label(&label); + if (!sensors_get_label_and_valid(*name,SENSORS_LM87_IN4,&label,&valid) && + !sensors_get_feature(*name,SENSORS_LM87_IN4,&cur) && + !sensors_get_feature(*name,SENSORS_LM87_IN4_MIN,&min) && + !sensors_get_feature(*name,SENSORS_LM87_IN4_MAX,&max)) { + if (valid) { + print_label(label,10); + printf("%+6.2f V (min = %+6.2f V, max = %+6.2f V) %s\n", + cur,min,max,alarms&LM87_ALARM_IN4?"ALARM":""); + } + } else + printf("ERROR: Can't get IN4 data!\n"); + free_the_label(&label); + if (!sensors_get_label_and_valid(*name,SENSORS_LM87_IN5,&label,&valid) && + !sensors_get_feature(*name,SENSORS_LM87_IN5,&cur) && + !sensors_get_feature(*name,SENSORS_LM87_IN5_MIN,&min) && + !sensors_get_feature(*name,SENSORS_LM87_IN5_MAX,&max)) { + if (valid) { + print_label(label,10); + printf("%+6.2f V (min = %+6.2f V, max = %+6.2f V) %s\n", + cur,min,max,alarms&LM87_ALARM_IN5?"ALARM":""); + } + } else + printf("ERROR: Can't get IN5 data!\n"); + free_the_label(&label); + + if (!sensors_get_label_and_valid(*name,SENSORS_LM87_FAN1,&label,&valid) && + !sensors_get_feature(*name,SENSORS_LM87_FAN1,&cur) && + !sensors_get_feature(*name,SENSORS_LM87_FAN1_DIV,&fdiv) && + !sensors_get_feature(*name,SENSORS_LM87_FAN1_MIN,&min)) { + if (valid) { + print_label(label,10); + printf("%4.0f RPM (min = %4.0f RPM, div = %1.0f) %s\n", + cur,min,fdiv, alarms&LM87_ALARM_FAN1?"ALARM":""); + } + } else + printf("ERROR: Can't get FAN1 data!\n"); + free_the_label(&label); + if (!sensors_get_label_and_valid(*name,SENSORS_LM87_FAN2,&label,&valid) && + !sensors_get_feature(*name,SENSORS_LM87_FAN2,&cur) && + !sensors_get_feature(*name,SENSORS_LM87_FAN2_DIV,&fdiv) && + !sensors_get_feature(*name,SENSORS_LM87_FAN2_MIN,&min)) { + if (valid) { + print_label(label,10); + printf("%4.0f RPM (min = %4.0f RPM, div = %1.0f) %s\n", + cur,min,fdiv, alarms&LM87_ALARM_FAN2 ?"ALARM":""); + } + } else + printf("ERROR: Can't get FAN2 data!\n"); + free_the_label(&label); + + if (!sensors_get_label_and_valid(*name,SENSORS_LM87_TEMP1,&label,&valid) && + !sensors_get_feature(*name,SENSORS_LM87_TEMP1,&cur) && + !sensors_get_feature(*name,SENSORS_LM87_TEMP1_HYST,&min) && + !sensors_get_feature(*name,SENSORS_LM87_TEMP1_OVER,&max)) { + if (valid) { + print_label(label,10); + print_temp_info( cur, max, min, MINMAX ); + printf(" %s\n", alarms&LM87_ALARM_TEMP1?"ALARM":""); + } + } else + printf("ERROR: Can't get TEMP1 data!\n"); + free_the_label(&label); + + if (!sensors_get_label_and_valid(*name,SENSORS_LM87_TEMP2,&label,&valid) && + !sensors_get_feature(*name,SENSORS_LM87_TEMP2,&cur) && + !sensors_get_feature(*name,SENSORS_LM87_TEMP2_HYST,&min) && + !sensors_get_feature(*name,SENSORS_LM87_TEMP2_OVER,&max)) { + if (valid) { + print_label(label,10); + print_temp_info( cur, max, min, MINMAX ); + printf(" %s\n", alarms&LM87_ALARM_TEMP2?"ALARM":""); + } + } else + printf("ERROR: Can't get TEMP2 data!\n"); + free_the_label(&label); + + if (!sensors_get_label_and_valid(*name,SENSORS_LM87_TEMP3,&label,&valid) && + !sensors_get_feature(*name,SENSORS_LM87_TEMP3,&cur) && + !sensors_get_feature(*name,SENSORS_LM87_TEMP3_HYST,&min) && + !sensors_get_feature(*name,SENSORS_LM87_TEMP3_OVER,&max)) { + if (valid) { + print_label(label,10); + print_temp_info( cur, max, min, MINMAX ); + printf(" %s\n", alarms&LM87_ALARM_TEMP3?"ALARM":""); + } + } else + printf("ERROR: Can't get TEMP3 data!\n"); + free_the_label(&label); + + if (!sensors_get_label_and_valid(*name,SENSORS_LM87_VID,&label,&valid) && + !sensors_get_feature(*name,SENSORS_LM87_VID,&cur)) { + if (valid) { + print_label(label,10); + printf("%+6.2f V\n",cur); + } + } + free_the_label(&label); +} + void print_mtp008(const sensors_chip_name *name) { char *label = NULL; diff --git a/prog/sensors/main.c b/prog/sensors/main.c index 3a5448fc..15347e9c 100644 --- a/prog/sensors/main.c +++ b/prog/sensors/main.c @@ -294,6 +294,8 @@ void do_a_print(sensors_chip_name name) print_via686a(&name); else if (!strcmp(name.prefix,"lm80")) print_lm80(&name); + else if (!strcmp(name.prefix,"lm87")) + print_lm87(&name); else if (!strcmp(name.prefix,"gl518sm")) print_gl518(&name); else if (!strcmp(name.prefix,"adm1025"))