From 8e96564659b7b2042bbce0d53dee0e7e50f649ee Mon Sep 17 00:00:00 2001 From: Jean Delvare Date: Tue, 1 Feb 2005 19:23:05 +0000 Subject: [PATCH] Add gl520sm support (Maarten Deprez). git-svn-id: http://lm-sensors.org/svn/lm-sensors/trunk@2887 7894878c-1315-0410-8ee3-d5d059ff63e0 --- prog/sensors/chips.c | 175 +++++++++++++++++++++++++++++++++++++++++++ prog/sensors/chips.h | 1 + prog/sensors/main.c | 1 + 3 files changed, 177 insertions(+) diff --git a/prog/sensors/chips.c b/prog/sensors/chips.c index 57a17f97..14032cae 100644 --- a/prog/sensors/chips.c +++ b/prog/sensors/chips.c @@ -1175,6 +1175,181 @@ void print_gl518(const sensors_chip_name *name) free_the_label(&label); } +void print_gl520(const sensors_chip_name *name) +{ + char *label = NULL; + double cur,min,max; + int alarms,beeps,valid; + int two_temps = 0; + + if (!sensors_get_feature(*name,SENSORS_GL520_ALARMS,&cur)) + alarms = cur + 0.5; + else { + printf("ERROR: Can't get ALARMS data!\n"); + alarms = 0; + } + if (!sensors_get_feature(*name,SENSORS_GL520_BEEPS,&cur)) + beeps = cur + 0.5; + else { + printf("ERROR: Can't get BEEPS data!\n"); + beeps = 0; + } + + if (!sensors_get_label_and_valid(*name,SENSORS_GL520_VID,&label,&valid) && + !sensors_get_feature(*name,SENSORS_GL520_VID,&cur)) { + if (valid) { + print_label(label,10); + printf("%+6.2f V\n",cur); + } + } else + printf("ERROR: Can't get VID data!\n"); + free_the_label(&label); + + if (!sensors_get_label_and_valid(*name,SENSORS_GL520_VDD,&label,&valid) && + !sensors_get_feature(*name,SENSORS_GL520_VDD,&cur) && + !sensors_get_feature(*name,SENSORS_GL520_VDD_MIN,&min) && + !sensors_get_feature(*name,SENSORS_GL520_VDD_MAX,&max)) { + if (valid) { + print_label(label,10); + printf("%+6.2f V ",cur); + printf( "(min = %+6.2f V, max = %+6.2f V) %s %s\n", + min,max,alarms&GL520_ALARM_VDD?"ALARM":" ", + beeps&GL520_ALARM_VDD?"(beep)":""); + } + } else + printf("ERROR: Can't get VDD data!\n"); + free_the_label(&label); + + if (!sensors_get_label_and_valid(*name,SENSORS_GL520_VIN1,&label,&valid) && + !sensors_get_feature(*name,SENSORS_GL520_VIN1,&cur) && + !sensors_get_feature(*name,SENSORS_GL520_VIN1_MIN,&min) && + !sensors_get_feature(*name,SENSORS_GL520_VIN1_MAX,&max)) { + if (valid) { + print_label(label,10); + printf("%+6.2f V ",cur); + printf("(min = %+6.2f V, max = %+6.2f V) %s %s\n", + min,max,alarms&GL520_ALARM_VIN1?"ALARM":" ", + beeps&GL520_ALARM_VIN1?"(beep)":""); + } + } else + printf("ERROR: Can't get VIN1 data!\n"); + free_the_label(&label); + + if (!sensors_get_label_and_valid(*name,SENSORS_GL520_VIN2,&label,&valid) && + !sensors_get_feature(*name,SENSORS_GL520_VIN2,&cur) && + !sensors_get_feature(*name,SENSORS_GL520_VIN2_MIN,&min) && + !sensors_get_feature(*name,SENSORS_GL520_VIN2_MAX,&max)) { + if (valid) { + print_label(label,10); + printf("%+6.2f V ",cur); + printf("(min = %+6.2f V, max = %+6.2f V) %s %s\n", + min,max,alarms&GL520_ALARM_VIN2?"ALARM":" ", + beeps&GL520_ALARM_VIN2?"(beep)":""); + } + } else + printf("ERROR: Can't get VIN2 data!\n"); + free_the_label(&label); + + if (!sensors_get_label_and_valid(*name,SENSORS_GL520_VIN3,&label,&valid) && + !sensors_get_feature(*name,SENSORS_GL520_VIN3,&cur) && + !sensors_get_feature(*name,SENSORS_GL520_VIN3_MIN,&min) && + !sensors_get_feature(*name,SENSORS_GL520_VIN3_MAX,&max)) { + if (valid) { + print_label(label,10); + printf("%+6.2f V (min = %+6.2f V, max = %+6.2f V) %s %s\n", + cur,min,max,alarms&GL520_ALARM_VIN3?"ALARM":" ", + beeps&GL520_ALARM_VIN3?"(beep)":""); + } + } else + printf("ERROR: Can't get VIN3 data!\n"); + free_the_label(&label); + + if (!sensors_get_label_and_valid(*name,SENSORS_GL520_VIN4,&label,&valid) && + !sensors_get_feature(*name,SENSORS_GL520_VIN4,&cur) && + !sensors_get_feature(*name,SENSORS_GL520_VIN4_MIN,&min) && + !sensors_get_feature(*name,SENSORS_GL520_VIN4_MAX,&max)) { + if (valid) { + print_label(label,10); + printf("%+6.2f V (min = %+6.2f V, max = %+6.2f V) %s %s\n", + cur,min,max,alarms&GL520_ALARM_VIN4?"ALARM":" ", + beeps&GL520_ALARM_VIN4?"(beep)":""); + } + } else + two_temps = 1; + free_the_label(&label); + + if (!sensors_get_label_and_valid(*name,SENSORS_GL520_FAN1,&label,&valid) && + !sensors_get_feature(*name,SENSORS_GL520_FAN1,&cur) && + !sensors_get_feature(*name,SENSORS_GL520_FAN1_DIV,&max) && + !sensors_get_feature(*name,SENSORS_GL520_FAN1_MIN,&min)) { + if (valid) { + print_label(label,10); + printf("%4.0f RPM (min = %4.0f RPM, div = %1.0f) %s %s\n", + cur,min,max, alarms&GL520_ALARM_FAN1?"ALARM":" ", + beeps&GL520_ALARM_FAN1?"(beep)":""); + } + } else + printf("ERROR: Can't get FAN1 data!\n"); + free_the_label(&label); + + if (!sensors_get_label_and_valid(*name,SENSORS_GL520_FAN2,&label,&valid) && + !sensors_get_feature(*name,SENSORS_GL520_FAN2,&cur) && + !sensors_get_feature(*name,SENSORS_GL520_FAN2_DIV,&max) && + !sensors_get_feature(*name,SENSORS_GL520_FAN2_MIN,&min)) { + if (valid) { + print_label(label,10); + printf("%4.0f RPM (min = %4.0f RPM, div = %1.0f) %s %s\n", + cur,min,max, alarms&GL520_ALARM_FAN2?"ALARM":" ", + beeps&GL520_ALARM_FAN2?"(beep)":""); + } + } else + printf("ERROR: Can't get FAN2 data!\n"); + free_the_label(&label); + + if (!sensors_get_label_and_valid(*name,SENSORS_GL520_TEMP1,&label,&valid) && + !sensors_get_feature(*name,SENSORS_GL520_TEMP1,&cur) && + !sensors_get_feature(*name,SENSORS_GL520_TEMP1_OVER,&max) && + !sensors_get_feature(*name,SENSORS_GL520_TEMP1_HYST,&min)) { + if (valid) { + print_label(label,10); + print_temp_info( cur, max, min, HYST, 1, 0); + printf("%s %s\n", alarms&GL520_ALARM_TEMP1?"ALARM":" ", + beeps&GL520_ALARM_TEMP1?"(beep)":""); + } + } else + printf("ERROR: Can't get TEMP1 data!\n"); + free_the_label(&label); + + if (two_temps) { + if (!sensors_get_label_and_valid(*name,SENSORS_GL520_TEMP2,&label,&valid) && + !sensors_get_feature(*name,SENSORS_GL520_TEMP2,&cur) && + !sensors_get_feature(*name,SENSORS_GL520_TEMP2_OVER,&max) && + !sensors_get_feature(*name,SENSORS_GL520_TEMP2_HYST,&min)) { + if (valid) { + print_label(label,10); + print_temp_info( cur, max, min, HYST, 1, 0); + printf("%s %s\n", alarms&GL520_ALARM_TEMP2?"ALARM":" ", + beeps&GL520_ALARM_TEMP2?"(beep)":""); + } + } else + printf("ERROR: Can't get TEMP2 or VIN4 data!\n"); + free_the_label(&label); + } + + if (!sensors_get_label_and_valid(*name,SENSORS_GL520_BEEP_ENABLE,&label,&valid) + && valid) { + if (!sensors_get_feature(*name,SENSORS_GL520_BEEP_ENABLE,&cur)) { + print_label(label,10); + if (cur < 0.5) + printf("Sound alarm disabled\n"); + else + printf("Sound alarm enabled\n"); + } else + printf("ERROR: Can't get BEEP ENABLE data!\n"); + } + free_the_label(&label); +} + void print_adm1025(const sensors_chip_name *name) { char *label = NULL; diff --git a/prog/sensors/chips.h b/prog/sensors/chips.h index c3d304d3..ee3203df 100644 --- a/prog/sensors/chips.h +++ b/prog/sensors/chips.h @@ -37,6 +37,7 @@ extern void print_lm78(const sensors_chip_name *name); extern void print_sis5595(const sensors_chip_name *name); extern void print_via686a(const sensors_chip_name *name); extern void print_gl518(const sensors_chip_name *name); +extern void print_gl520(const sensors_chip_name *name); extern void print_lm80(const sensors_chip_name *name); extern void print_lm85(const sensors_chip_name *name); extern void print_w83781d(const sensors_chip_name *name); diff --git a/prog/sensors/main.c b/prog/sensors/main.c index 2e332674..c2344105 100644 --- a/prog/sensors/main.c +++ b/prog/sensors/main.c @@ -349,6 +349,7 @@ struct match matches[] = { { "emc6d100", print_lm85 }, { "lm87", print_lm87 }, { "gl518sm", print_gl518 }, + { "gl520sm", print_gl520 }, { "adm1025", print_adm1025 }, { "ne1619", print_adm1025 }, { "adm1024", print_adm1024 },