diff --git a/lib/chips.c b/lib/chips.c index 057c616e..56ceb151 100644 --- a/lib/chips.c +++ b/lib/chips.c @@ -1985,6 +1985,16 @@ static sensors_chip_feature w83627ehf_features[] = R, NOSYSCTL, VALUE(2), 0 }, { SENSORS_W83627EHF_FAN5, "fan5", NOMAP, NOMAP, R, NOSYSCTL, VALUE(2), 0 }, + { SENSORS_W83627EHF_FAN1_ALARM, "fan1_alarm", SENSORS_W83627EHF_FAN1, + NOMAP, R, NOSYSCTL, VALUE(1), 0 }, + { SENSORS_W83627EHF_FAN2_ALARM, "fan2_alarm", SENSORS_W83627EHF_FAN2, + NOMAP, R, NOSYSCTL, VALUE(1), 0 }, + { SENSORS_W83627EHF_FAN3_ALARM, "fan3_alarm", SENSORS_W83627EHF_FAN3, + NOMAP, R, NOSYSCTL, VALUE(1), 0 }, + { SENSORS_W83627EHF_FAN4_ALARM, "fan4_alarm", SENSORS_W83627EHF_FAN4, + NOMAP, R, NOSYSCTL, VALUE(1), 0 }, + { SENSORS_W83627EHF_FAN5_ALARM, "fan5_alarm", SENSORS_W83627EHF_FAN5, + NOMAP, R, NOSYSCTL, VALUE(1), 0 }, { SENSORS_W83627EHF_FAN1_MIN, "fan1_min", SENSORS_W83627EHF_FAN1, SENSORS_W83627EHF_FAN1, RW, NOSYSCTL, VALUE(1), 0 }, @@ -2021,6 +2031,12 @@ static sensors_chip_feature w83627ehf_features[] = R, NOSYSCTL, VALUE(3), 1 }, { SENSORS_W83627EHF_TEMP3, "temp3", NOMAP, NOMAP, R, NOSYSCTL, VALUE(3), 1 }, + { SENSORS_W83627EHF_TEMP1_ALARM, "temp1_alarm", SENSORS_W83627EHF_TEMP1, + NOMAP, R, NOSYSCTL, VALUE(1), 0 }, + { SENSORS_W83627EHF_TEMP2_ALARM, "temp2_alarm", SENSORS_W83627EHF_TEMP2, + NOMAP, R, NOSYSCTL, VALUE(1), 0 }, + { SENSORS_W83627EHF_TEMP3_ALARM, "temp3_alarm", SENSORS_W83627EHF_TEMP3, + NOMAP, R, NOSYSCTL, VALUE(1), 0 }, { SENSORS_W83627EHF_TEMP1_OVER, "temp1_over", SENSORS_W83627EHF_TEMP1, SENSORS_W83627EHF_TEMP1, RW, NOSYSCTL, VALUE(1), 0 }, diff --git a/lib/chips.h b/lib/chips.h index cfb51988..b2ef280d 100644 --- a/lib/chips.h +++ b/lib/chips.h @@ -894,6 +894,11 @@ #define SENSORS_W83627EHF_FAN3 33 /* R */ #define SENSORS_W83627EHF_FAN4 34 /* R */ #define SENSORS_W83627EHF_FAN5 35 /* R */ +#define SENSORS_W83627EHF_FAN1_ALARM 131 /* R */ +#define SENSORS_W83627EHF_FAN2_ALARM 132 /* R */ +#define SENSORS_W83627EHF_FAN3_ALARM 133 /* R */ +#define SENSORS_W83627EHF_FAN4_ALARM 134 /* R */ +#define SENSORS_W83627EHF_FAN5_ALARM 135 /* R */ #define SENSORS_W83627EHF_FAN1_MIN 41 /* RW */ #define SENSORS_W83627EHF_FAN2_MIN 42 /* RW */ #define SENSORS_W83627EHF_FAN3_MIN 43 /* RW */ @@ -907,6 +912,9 @@ #define SENSORS_W83627EHF_TEMP1 61 /* R */ #define SENSORS_W83627EHF_TEMP2 62 /* R */ #define SENSORS_W83627EHF_TEMP3 63 /* R */ +#define SENSORS_W83627EHF_TEMP1_ALARM 161 /* R */ +#define SENSORS_W83627EHF_TEMP2_ALARM 162 /* R */ +#define SENSORS_W83627EHF_TEMP3_ALARM 163 /* R */ #define SENSORS_W83627EHF_TEMP1_OVER 71 /* RW */ #define SENSORS_W83627EHF_TEMP2_OVER 72 /* RW */ #define SENSORS_W83627EHF_TEMP3_OVER 73 /* RW */ diff --git a/prog/sensors/chips.c b/prog/sensors/chips.c index 38a6adc8..e1dc1c32 100644 --- a/prog/sensors/chips.c +++ b/prog/sensors/chips.c @@ -2815,7 +2815,6 @@ void print_w83627ehf(const sensors_chip_name *name) int i, valid; double cur, min, div, max, alarm, over, hyst; - for (i = 0; i < 10; i++) { if (!sensors_get_label_and_valid(*name,SENSORS_W83627EHF_IN0+i, &label,&valid) @@ -2828,8 +2827,9 @@ void print_w83627ehf(const sensors_chip_name *name) printf("%+6.2f V (min = %+6.2f V, max = %+6.2f V) %s\n", cur,min,max,alarm ? "ALARM" : ""); } - } else - printf("ERROR: Can't get IN%d data!\n",i + 1); + } + /* Earlier versions of the driver did not have voltage support, so we + keep quiet on error */ free(label); } @@ -2843,7 +2843,11 @@ void print_w83627ehf(const sensors_chip_name *name) printf("%4.0f RPM (min = %4.0f RPM", cur, min); if (!sensors_get_feature(*name, SENSORS_W83627EHF_FAN1_DIV+i, &div)) printf(", div = %1.0f", div); - printf(")\n"); + printf(")"); + if (!sensors_get_feature(*name, SENSORS_W83627EHF_FAN1_ALARM+i, + &alarm) && alarm) + printf(" ALARM"); + printf("\n"); } } else if (i < 3) printf("ERROR: Can't get FAN%d data!\n", i + 1); @@ -2859,6 +2863,9 @@ void print_w83627ehf(const sensors_chip_name *name) if (valid) { print_label(label,10); print_temp_info(cur, over, hyst, HYST, i ? 1 : 0, i ? 1 : 0); + if (!sensors_get_feature(*name, SENSORS_W83627EHF_TEMP1_ALARM+i, + &alarm) && alarm) + printf(" ALARM"); printf("\n"); } } else