From 887ace586ddb62235040d9ea010cf77c1c163c2c Mon Sep 17 00:00:00 2001 From: "Mark D. Studebaker" Date: Sun, 7 Jul 2002 16:41:23 +0000 Subject: [PATCH] add smsc47m1 to library and 'sensors' git-svn-id: http://lm-sensors.org/svn/lm-sensors/trunk@1428 7894878c-1315-0410-8ee3-d5d059ff63e0 --- etc/sensors.conf.eg | 5 +++++ lib/chips.c | 26 ++++++++++++++++++++++++++ lib/chips.h | 9 +++++++++ prog/sensors/chips.c | 41 +++++++++++++++++++++++++++++++++++++++++ prog/sensors/chips.h | 1 + prog/sensors/main.c | 2 ++ 6 files changed, 84 insertions(+) diff --git a/etc/sensors.conf.eg b/etc/sensors.conf.eg index 83ec4119..cb82da83 100644 --- a/etc/sensors.conf.eg +++ b/etc/sensors.conf.eg @@ -1401,3 +1401,8 @@ chip "vt1211-*" set fan1_min 3000 set fan2_min 3000 + +chip "smsc47m1-*" + + set fan1_min 3000 + set fan2_min 3000 diff --git a/lib/chips.c b/lib/chips.c index 9aa89b3e..dc4edb86 100644 --- a/lib/chips.c +++ b/lib/chips.c @@ -2766,6 +2766,31 @@ static sensors_chip_feature vt1211_features[] = { 0 } }; +static sensors_chip_feature smsc47m1_features[] = + { + { SENSORS_SMSC47M1_FAN1, "fan1", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, + SENSORS_MODE_R, SMSC47M1_SYSCTL_FAN1, VALUE(2), 0 }, + { SENSORS_SMSC47M1_FAN2, "fan2", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, + SENSORS_MODE_R, SMSC47M1_SYSCTL_FAN2, VALUE(2), 0 }, + { SENSORS_SMSC47M1_FAN1_MIN, "fan1_min", SENSORS_SMSC47M1_FAN1, + SENSORS_SMSC47M1_FAN1, + SENSORS_MODE_RW, SMSC47M1_SYSCTL_FAN1, VALUE(1), 0 }, + { SENSORS_SMSC47M1_FAN2_MIN, "fan2_min", SENSORS_SMSC47M1_FAN2, + SENSORS_SMSC47M1_FAN2, + SENSORS_MODE_RW, SMSC47M1_SYSCTL_FAN2, VALUE(1), 0 }, + { SENSORS_SMSC47M1_FAN1_DIV, "fan1_div", SENSORS_SMSC47M1_FAN1, + SENSORS_NO_MAPPING, + SENSORS_MODE_RW, SMSC47M1_SYSCTL_FAN_DIV, VALUE(1), + 0 }, + { SENSORS_SMSC47M1_FAN2_DIV, "fan2_div", SENSORS_SMSC47M1_FAN2, + SENSORS_NO_MAPPING, + SENSORS_MODE_RW, SMSC47M1_SYSCTL_FAN_DIV, VALUE(2), + 0 }, + { SENSORS_SMSC47M1_ALARMS, "alarms", SENSORS_NO_MAPPING, SENSORS_NO_MAPPING, + SENSORS_MODE_R, SMSC47M1_SYSCTL_ALARMS, VALUE(1), 0 }, + { 0 } + }; + sensors_chip_features sensors_chip_features_list[] = { { SENSORS_LM78_PREFIX, lm78_features }, @@ -2818,5 +2843,6 @@ sensors_chip_features sensors_chip_features_list[] = { SENSORS_FSCSCY_PREFIX, fscscy_features }, { SENSORS_PCF8591_PREFIX, pcf8591_features }, { SENSORS_VT1211_PREFIX, vt1211_features }, + { SENSORS_SMSC47M1_PREFIX, smsc47m1_features }, { 0 } }; diff --git a/lib/chips.h b/lib/chips.h index 471b0568..9bc4d32a 100644 --- a/lib/chips.h +++ b/lib/chips.h @@ -1185,5 +1185,14 @@ #define SENSORS_VT1211_ALARMS 81 /* R */ #define SENSORS_VT1211_VID 82 /* R */ +#define SENSORS_SMSC47M1_PREFIX "smsc47m1" + +#define SENSORS_SMSC47M1_FAN1 31 /* R */ +#define SENSORS_SMSC47M1_FAN2 32 /* R */ +#define SENSORS_SMSC47M1_FAN1_MIN 41 /* RW */ +#define SENSORS_SMSC47M1_FAN2_MIN 42 /* RW */ +#define SENSORS_SMSC47M1_FAN1_DIV 75 /* RW */ +#define SENSORS_SMSC47M1_FAN2_DIV 76 /* RW */ +#define SENSORS_SMSC47M1_ALARMS 81 /* R */ #endif /* def LIB_SENSORS_CHIPS_H */ diff --git a/prog/sensors/chips.c b/prog/sensors/chips.c index 973e82f8..a15325fa 100644 --- a/prog/sensors/chips.c +++ b/prog/sensors/chips.c @@ -3269,6 +3269,47 @@ void print_vt1211(const sensors_chip_name *name) } +void print_smsc47m1(const sensors_chip_name *name) +{ + char *label = NULL; + double cur,min,fdiv; + int alarms,valid; + + if (!sensors_get_feature(*name,SENSORS_SMSC47M1_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_SMSC47M1_FAN1,&label,&valid) && + !sensors_get_feature(*name,SENSORS_SMSC47M1_FAN1,&cur) && + !sensors_get_feature(*name,SENSORS_SMSC47M1_FAN1_DIV,&fdiv) && + !sensors_get_feature(*name,SENSORS_SMSC47M1_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&SMSC47M1_ALARM_FAN1?"ALARM":""); + } + } else + printf("ERROR: Can't get FAN1 data!\n"); + free_the_label(&label); + + if (!sensors_get_label_and_valid(*name,SENSORS_SMSC47M1_FAN2,&label,&valid) && + !sensors_get_feature(*name,SENSORS_SMSC47M1_FAN2,&cur) && + !sensors_get_feature(*name,SENSORS_SMSC47M1_FAN2_DIV,&fdiv) && + !sensors_get_feature(*name,SENSORS_SMSC47M1_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&SMSC47M1_ALARM_FAN2?"ALARM":""); + } + } else + printf("ERROR: Can't get FAN2 data!\n"); + free_the_label(&label); + +} + void print_unknown_chip(const sensors_chip_name *name) { int a,b,valid; diff --git a/prog/sensors/chips.h b/prog/sensors/chips.h index 461c20db..e47f3e48 100644 --- a/prog/sensors/chips.h +++ b/prog/sensors/chips.h @@ -46,5 +46,6 @@ extern void print_fscpos(const sensors_chip_name *name); extern void print_fscscy(const sensors_chip_name *name); extern void print_pcf8591(const sensors_chip_name *name); extern void print_vt1211(const sensors_chip_name *name); +extern void print_smsc47m1(const sensors_chip_name *name); #endif /* def PROG_SENSORS_CHIPS_H */ diff --git a/prog/sensors/main.c b/prog/sensors/main.c index 3b03394d..8eb746cb 100644 --- a/prog/sensors/main.c +++ b/prog/sensors/main.c @@ -349,6 +349,8 @@ void do_a_print(sensors_chip_name name) print_pcf8591(&name); else if (!strcmp(name.prefix,"vt1211")) print_vt1211(&name); + else if (!strcmp(name.prefix,"smsc47m1")) + print_smsc47m1(&name); else print_unknown_chip(&name); printf("\n");