Changeset 4939
- Timestamp:
- 10/12/07 10:16:23 (1 year ago)
- Files:
-
- lm-sensors/trunk/lib/chips.c (modified) (5 diffs)
- lm-sensors/trunk/lib/chips.h (modified) (1 diff)
- lm-sensors/trunk/lib/proc.c (modified) (4 diffs)
- lm-sensors/trunk/prog/sensors/chips.c (modified) (4 diffs)
- lm-sensors/trunk/prog/sensors/chips.h (modified) (1 diff)
- lm-sensors/trunk/prog/sensors/main.c (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
lm-sensors/trunk/lib/chips.c
r4933 r4939 4302 4302 SENSORS_FSCPOS_WDOG_PRESET, RW }, 4303 4303 FSCPOS_SYSCTL_WDOG, VALUE(3), 0 }, 4304 /* below this line are features only exported with the new fschmd drv */ 4305 { { SENSORS_FSCHMD_TEMP_ALARM(1), "temp1_alarm", SENSORS_FSCPOS_TEMP1, 4306 NOMAP, R }, NOSYSCTL, VALUE(1), 0 }, 4307 { { SENSORS_FSCHMD_TEMP_ALARM(2), "temp2_alarm", SENSORS_FSCPOS_TEMP2, 4308 NOMAP, R }, NOSYSCTL, VALUE(1), 0 }, 4309 { { SENSORS_FSCHMD_TEMP_ALARM(3), "temp3_alarm", SENSORS_FSCPOS_TEMP3, 4310 NOMAP, R }, NOSYSCTL, VALUE(1), 0 }, 4311 { { SENSORS_FSCHMD_TEMP_FAULT(1), "temp1_fault", SENSORS_FSCPOS_TEMP1, 4312 NOMAP, R }, NOSYSCTL, VALUE(1), 0 }, 4313 { { SENSORS_FSCHMD_TEMP_FAULT(2), "temp2_fault", SENSORS_FSCPOS_TEMP2, 4314 NOMAP, R }, NOSYSCTL, VALUE(1), 0 }, 4315 { { SENSORS_FSCHMD_TEMP_FAULT(3), "temp3_fault", SENSORS_FSCPOS_TEMP3, 4316 NOMAP, R }, NOSYSCTL, VALUE(1), 0 }, 4317 { { SENSORS_FSCHMD_FAN_ALARM(1), "fan1_alarm", SENSORS_FSCPOS_FAN1, 4318 NOMAP, R }, NOSYSCTL, VALUE(1), 0 }, 4319 { { SENSORS_FSCHMD_FAN_ALARM(2), "fan2_alarm", SENSORS_FSCPOS_FAN2, 4320 NOMAP, R }, NOSYSCTL, VALUE(1), 0 }, 4321 { { SENSORS_FSCHMD_FAN_ALARM(3), "fan3_alarm", SENSORS_FSCPOS_FAN3, 4322 NOMAP, R }, NOSYSCTL, VALUE(1), 0 }, 4323 { { SENSORS_FSCHMD_FAN_FAULT(1), "fan1_fault", SENSORS_FSCPOS_FAN1, 4324 NOMAP, R }, NOSYSCTL, VALUE(1), 0 }, 4325 { { SENSORS_FSCHMD_FAN_FAULT(2), "fan2_fault", SENSORS_FSCPOS_FAN2, 4326 NOMAP, R }, NOSYSCTL, VALUE(1), 0 }, 4327 { { SENSORS_FSCHMD_FAN_FAULT(3), "fan3_fault", SENSORS_FSCPOS_FAN3, 4328 NOMAP, R }, NOSYSCTL, VALUE(1), 0 }, 4304 4329 { { 0 }, 0 } 4305 4330 }; … … 4449 4474 SENSORS_FSCSCY_WDOG_PRESET, RW }, 4450 4475 FSCSCY_SYSCTL_WDOG, VALUE(3), 0 }, 4476 /* below this line are features only exported with the new fschmd drv */ 4477 { { SENSORS_FSCHMD_TEMP_ALARM(1), "temp1_alarm", SENSORS_FSCSCY_TEMP1, 4478 NOMAP, R }, NOSYSCTL, VALUE(1), 0 }, 4479 { { SENSORS_FSCHMD_TEMP_ALARM(2), "temp2_alarm", SENSORS_FSCSCY_TEMP2, 4480 NOMAP, R }, NOSYSCTL, VALUE(1), 0 }, 4481 { { SENSORS_FSCHMD_TEMP_ALARM(3), "temp3_alarm", SENSORS_FSCSCY_TEMP3, 4482 NOMAP, R }, NOSYSCTL, VALUE(1), 0 }, 4483 { { SENSORS_FSCHMD_TEMP_ALARM(4), "temp4_alarm", SENSORS_FSCSCY_TEMP4, 4484 NOMAP, R }, NOSYSCTL, VALUE(1), 0 }, 4485 { { SENSORS_FSCHMD_TEMP_FAULT(1), "temp1_fault", SENSORS_FSCSCY_TEMP1, 4486 NOMAP, R }, NOSYSCTL, VALUE(1), 0 }, 4487 { { SENSORS_FSCHMD_TEMP_FAULT(2), "temp2_fault", SENSORS_FSCSCY_TEMP2, 4488 NOMAP, R }, NOSYSCTL, VALUE(1), 0 }, 4489 { { SENSORS_FSCHMD_TEMP_FAULT(3), "temp3_fault", SENSORS_FSCSCY_TEMP3, 4490 NOMAP, R }, NOSYSCTL, VALUE(1), 0 }, 4491 { { SENSORS_FSCHMD_TEMP_FAULT(4), "temp4_fault", SENSORS_FSCSCY_TEMP4, 4492 NOMAP, R }, NOSYSCTL, VALUE(1), 0 }, 4493 { { SENSORS_FSCHMD_FAN_ALARM(1), "fan1_alarm", SENSORS_FSCSCY_FAN1, 4494 NOMAP, R }, NOSYSCTL, VALUE(1), 0 }, 4495 { { SENSORS_FSCHMD_FAN_ALARM(2), "fan2_alarm", SENSORS_FSCSCY_FAN2, 4496 NOMAP, R }, NOSYSCTL, VALUE(1), 0 }, 4497 { { SENSORS_FSCHMD_FAN_ALARM(3), "fan3_alarm", SENSORS_FSCSCY_FAN3, 4498 NOMAP, R }, NOSYSCTL, VALUE(1), 0 }, 4499 { { SENSORS_FSCHMD_FAN_ALARM(4), "fan4_alarm", SENSORS_FSCSCY_FAN4, 4500 NOMAP, R }, NOSYSCTL, VALUE(1), 0 }, 4501 { { SENSORS_FSCHMD_FAN_ALARM(5), "fan5_alarm", SENSORS_FSCSCY_FAN5, 4502 NOMAP, R }, NOSYSCTL, VALUE(1), 0 }, 4503 { { SENSORS_FSCHMD_FAN_ALARM(6), "fan6_alarm", SENSORS_FSCSCY_FAN6, 4504 NOMAP, R }, NOSYSCTL, VALUE(1), 0 }, 4505 { { SENSORS_FSCHMD_FAN_FAULT(1), "fan1_fault", SENSORS_FSCSCY_FAN1, 4506 NOMAP, R }, NOSYSCTL, VALUE(1), 0 }, 4507 { { SENSORS_FSCHMD_FAN_FAULT(2), "fan2_fault", SENSORS_FSCSCY_FAN2, 4508 NOMAP, R }, NOSYSCTL, VALUE(1), 0 }, 4509 { { SENSORS_FSCHMD_FAN_FAULT(3), "fan3_fault", SENSORS_FSCSCY_FAN3, 4510 NOMAP, R }, NOSYSCTL, VALUE(1), 0 }, 4511 { { SENSORS_FSCHMD_FAN_FAULT(4), "fan4_fault", SENSORS_FSCSCY_FAN4, 4512 NOMAP, R }, NOSYSCTL, VALUE(1), 0 }, 4513 { { SENSORS_FSCHMD_FAN_FAULT(5), "fan5_fault", SENSORS_FSCSCY_FAN5, 4514 NOMAP, R }, NOSYSCTL, VALUE(1), 0 }, 4515 { { SENSORS_FSCHMD_FAN_FAULT(6), "fan6_fault", SENSORS_FSCSCY_FAN6, 4516 NOMAP, R }, NOSYSCTL, VALUE(1), 0 }, 4451 4517 { { 0 }, 0 } 4452 4518 }; … … 4519 4585 SENSORS_FSCHER_WDOG_PRESET, RW }, 4520 4586 FSCHER_SYSCTL_WDOG, VALUE(3), 0 }, 4587 /* below this line are features only exported with the new fschmd drv */ 4588 { { SENSORS_FSCHMD_TEMP_MAX(1), "temp1_max", SENSORS_FSCHER_TEMP1, 4589 SENSORS_FSCHER_TEMP1, RW }, 4590 NOSYSCTL, VALUE(1), 0 }, 4591 { { SENSORS_FSCHMD_TEMP_MAX(2), "temp2_max", SENSORS_FSCHER_TEMP2, 4592 SENSORS_FSCHER_TEMP2, RW }, 4593 NOSYSCTL, VALUE(1), 0 }, 4594 { { SENSORS_FSCHMD_TEMP_MAX(3), "temp3_max", SENSORS_FSCHER_TEMP3, 4595 SENSORS_FSCHER_TEMP3, RW }, 4596 NOSYSCTL, VALUE(1), 0 }, 4597 { { SENSORS_FSCHMD_TEMP_ALARM(1), "temp1_alarm", SENSORS_FSCHER_TEMP1, 4598 NOMAP, R }, NOSYSCTL, VALUE(1), 0 }, 4599 { { SENSORS_FSCHMD_TEMP_ALARM(2), "temp2_alarm", SENSORS_FSCHER_TEMP2, 4600 NOMAP, R }, NOSYSCTL, VALUE(1), 0 }, 4601 { { SENSORS_FSCHMD_TEMP_ALARM(3), "temp3_alarm", SENSORS_FSCHER_TEMP3, 4602 NOMAP, R }, NOSYSCTL, VALUE(1), 0 }, 4603 { { SENSORS_FSCHMD_TEMP_FAULT(1), "temp1_fault", SENSORS_FSCHER_TEMP1, 4604 NOMAP, R }, NOSYSCTL, VALUE(1), 0 }, 4605 { { SENSORS_FSCHMD_TEMP_FAULT(2), "temp2_fault", SENSORS_FSCHER_TEMP2, 4606 NOMAP, R }, NOSYSCTL, VALUE(1), 0 }, 4607 { { SENSORS_FSCHMD_TEMP_FAULT(3), "temp3_fault", SENSORS_FSCHER_TEMP3, 4608 NOMAP, R }, NOSYSCTL, VALUE(1), 0 }, 4609 { { SENSORS_FSCHMD_FAN_ALARM(1), "fan1_alarm", SENSORS_FSCHER_FAN1, 4610 NOMAP, R }, NOSYSCTL, VALUE(1), 0 }, 4611 { { SENSORS_FSCHMD_FAN_ALARM(2), "fan2_alarm", SENSORS_FSCHER_FAN2, 4612 NOMAP, R }, NOSYSCTL, VALUE(1), 0 }, 4613 { { SENSORS_FSCHMD_FAN_ALARM(3), "fan3_alarm", SENSORS_FSCHER_FAN3, 4614 NOMAP, R }, NOSYSCTL, VALUE(1), 0 }, 4615 { { SENSORS_FSCHMD_FAN_FAULT(1), "fan1_fault", SENSORS_FSCHER_FAN1, 4616 NOMAP, R }, NOSYSCTL, VALUE(1), 0 }, 4617 { { SENSORS_FSCHMD_FAN_FAULT(2), "fan2_fault", SENSORS_FSCHER_FAN2, 4618 NOMAP, R }, NOSYSCTL, VALUE(1), 0 }, 4619 { { SENSORS_FSCHMD_FAN_FAULT(3), "fan3_fault", SENSORS_FSCHER_FAN3, 4620 NOMAP, R }, NOSYSCTL, VALUE(1), 0 }, 4521 4621 { { 0 }, 0 } 4522 4622 }; … … 6219 6319 }; 6220 6320 6321 #define SENSORS_FSCHMD_IN_FEATURES(nr) \ 6322 { { SENSORS_FSCHMD_IN(nr), "in" #nr, \ 6323 NOMAP, NOMAP, R }, \ 6324 NOSYSCTL, VALUE(3), 3 } 6325 6326 #define SENSORS_FSCHMD_TEMP_FEATURES(nr) \ 6327 { { SENSORS_FSCHMD_TEMP(nr), "temp" #nr, \ 6328 NOMAP, NOMAP, R }, \ 6329 NOSYSCTL, VALUE(3), 3 }, \ 6330 { { SENSORS_FSCHMD_TEMP_MAX(nr), "temp" #nr "_max", \ 6331 SENSORS_FSCHMD_TEMP(nr), SENSORS_FSCHMD_TEMP(nr), RW }, \ 6332 NOSYSCTL, VALUE(1), 3 }, \ 6333 { { SENSORS_FSCHMD_TEMP_ALARM(nr), "temp" #nr "_alarm", \ 6334 SENSORS_FSCHMD_TEMP(nr), NOMAP, R }, \ 6335 NOSYSCTL, VALUE(1), 0 }, \ 6336 { { SENSORS_FSCHMD_TEMP_FAULT(nr), "temp" #nr "_fault", \ 6337 SENSORS_FSCHMD_TEMP(nr), NOMAP, R }, \ 6338 NOSYSCTL, VALUE(2), 0 } 6339 6340 #define SENSORS_FSCHMD_FAN_FEATURES(nr) \ 6341 { { SENSORS_FSCHMD_FAN(nr), "fan" #nr, \ 6342 NOMAP, NOMAP, R }, \ 6343 NOSYSCTL, VALUE(2), 0 }, \ 6344 { { SENSORS_FSCHMD_FAN_DIV(nr), "fan" #nr "_div", \ 6345 SENSORS_FSCHMD_FAN(nr), NOMAP, R }, \ 6346 NOSYSCTL, VALUE(1), 0 }, \ 6347 { { SENSORS_FSCHMD_FAN_ALARM(nr), "fan" #nr "_alarm", \ 6348 SENSORS_FSCHMD_FAN(nr), NOMAP, R }, \ 6349 NOSYSCTL, VALUE(1), 0 }, \ 6350 { { SENSORS_FSCHMD_FAN_FAULT(nr), "fan" #nr "_fault", \ 6351 SENSORS_FSCHMD_FAN(nr), NOMAP, R }, \ 6352 NOSYSCTL, VALUE(1), 0 } 6353 6354 static sensors_chip_feature fschmd_features[] = 6355 { 6356 SENSORS_FSCHMD_IN_FEATURES(0), 6357 SENSORS_FSCHMD_IN_FEATURES(1), 6358 SENSORS_FSCHMD_IN_FEATURES(2), 6359 SENSORS_FSCHMD_TEMP_FEATURES(1), 6360 SENSORS_FSCHMD_TEMP_FEATURES(2), 6361 SENSORS_FSCHMD_TEMP_FEATURES(3), 6362 SENSORS_FSCHMD_TEMP_FEATURES(4), 6363 SENSORS_FSCHMD_TEMP_FEATURES(5), 6364 SENSORS_FSCHMD_FAN_FEATURES(1), 6365 SENSORS_FSCHMD_FAN_FEATURES(2), 6366 SENSORS_FSCHMD_FAN_FEATURES(3), 6367 SENSORS_FSCHMD_FAN_FEATURES(4), 6368 SENSORS_FSCHMD_FAN_FEATURES(5), 6369 { { 0 }, 0 } 6370 }; 6371 6372 static sensors_chip_feature fschrc_features[] = 6373 { 6374 SENSORS_FSCHMD_IN_FEATURES(0), 6375 SENSORS_FSCHMD_IN_FEATURES(1), 6376 SENSORS_FSCHMD_IN_FEATURES(2), 6377 SENSORS_FSCHMD_TEMP_FEATURES(1), 6378 SENSORS_FSCHMD_TEMP_FEATURES(2), 6379 SENSORS_FSCHMD_TEMP_FEATURES(3), 6380 SENSORS_FSCHMD_FAN_FEATURES(1), 6381 SENSORS_FSCHMD_FAN_FEATURES(2), 6382 SENSORS_FSCHMD_FAN_FEATURES(3), 6383 SENSORS_FSCHMD_FAN_FEATURES(4), 6384 { { 0 }, 0 } 6385 }; 6386 6221 6387 sensors_chip_features sensors_chip_features_list[] = 6222 6388 { … … 6337 6503 { SENSORS_APPLESMC_PREFIX, applesmc_features }, 6338 6504 { SENSORS_F71882FG_PREFIX, f71882fg_features }, 6505 { SENSORS_FSCHMD_PREFIX, fschmd_features }, 6506 { SENSORS_FSCHRC_PREFIX, fschrc_features }, 6339 6507 { 0 } 6340 6508 }; lm-sensors/trunk/lib/chips.h
r4799 r4939 2342 2342 #define SENSORS_F71882FG_TEMP_TYPE(n) (150 + (n)) 2343 2343 2344 /* Fujitsu Siemens Computers Heimdal and Heracles */ 2345 #define SENSORS_FSCHMD_PREFIX "fscher" 2346 #define SENSORS_FSCHRC_PREFIX "fscher" 2347 2348 /* Note, we start with feature numbers of 60+ to not have any overlapping 2349 features with the old FSCPOS, FSCSCY and FSCHER feature lists, as the 2350 FSCHMD feature defines for features only exported by the new FSCHMD driver 2351 are reused in the feature lists of the FSCPOS, FSCSCY and FSCHER */ 2352 2353 /* in n from 0 to 3 */ 2354 #define SENSORS_FSCHMD_IN(n) (60 + (n)) 2355 /* fan n from 1 to 5 (4 for the hrc) */ 2356 #define SENSORS_FSCHMD_FAN(n) (70 + (n)) 2357 #define SENSORS_FSCHMD_FAN_DIV(n) (80 + (n)) 2358 #define SENSORS_FSCHMD_FAN_ALARM(n) (90 + (n)) 2359 #define SENSORS_FSCHMD_FAN_FAULT(n) (100 + (n)) 2360 /* temp n from 1 to 5 (3 for the hrc) */ 2361 #define SENSORS_FSCHMD_TEMP(n) (110 + (n)) 2362 #define SENSORS_FSCHMD_TEMP_MAX(n) (120 + (n)) 2363 #define SENSORS_FSCHMD_TEMP_ALARM(n) (130 + (n)) 2364 #define SENSORS_FSCHMD_TEMP_FAULT(n) (140 + (n)) 2365 2344 2366 #endif /* def LIB_SENSORS_CHIPS_H */ lm-sensors/trunk/lib/proc.c
r4861 r4939 273 273 Common conversions are as follows: 274 274 fan%d_min -> fan%d_min (for magnitude) 275 fan%d_state -> fan%d_status 275 fan%d_state -> fan%d_status (for old fscxxx drv) 276 fan%d_ripple -> fan%d_div (for old fscxxx drv, alt. name) 276 277 fan%d -> fan%d_input 277 278 pwm%d -> fan%d_pwm (alt. name) … … 290 291 temp%d_low -> temp%d_min 291 292 temp%d_crit -> temp%d_crit (for magnitude) 292 temp%d_state -> temp%d_status 293 temp%d_state -> temp%d_status (for old fscxxx drv) 293 294 temp%d_offset -> temp%d_offset (for magnitude) 294 295 temp%d -> temp%d_input … … 347 348 return 0; 348 349 } 350 if(sscanf(name, "fan%d_rippl%c%c", &num, &last, &check) == 2 && last == 'e') { 351 strcpy(sysname, name); 352 sprintf(altsysname, "fan%d_div", num); 353 *sysmag = 0; 354 return 0; 355 } 349 356 if(sscanf(name, "fan%d%c", &num, &check) == 1) { 350 357 sprintf(sysname, "fan%d_input", num); … … 449 456 /* give up, use old name (probably won't work though...) */ 450 457 /* known to be the same: 451 "alarms", "beep_enable", "vrm", "fan%d_div" 458 "alarms", "beep_enable", "vrm", "fan%d_div" (except old fscxxx drivers 459 which use fan%d_ripple, fixed using altsysname for new drv. GRR) 452 460 */ 453 461 strcpy(sysname, name); lm-sensors/trunk/prog/sensors/chips.c
r4938 r4939 3518 3518 int valid; 3519 3519 3520 /* Check for the non standard temp1_state sysfs attr the old driver uses 3521 if it isn't present we are talking to the new fschmd driver */ 3522 if (sensors_get_feature(*name,SENSORS_FSCPOS_TEMP1_STATE,&state) != 0) { 3523 print_fscpos_fschmd(name); 3524 return; 3525 } 3526 3527 /* no need to read TEMP1_STATE, as we just successfully did that above */ 3520 3528 if (!sensors_get_label_and_valid(*name,SENSORS_FSCPOS_TEMP1,&label,&valid) && 3521 !sensors_get_feature(*name,SENSORS_FSCPOS_TEMP1,&temp) && 3522 !sensors_get_feature(*name,SENSORS_FSCPOS_TEMP1_STATE,&state)) { 3529 !sensors_get_feature(*name,SENSORS_FSCPOS_TEMP1,&temp)) { 3523 3530 if (valid) { 3524 3531 print_label(label,10); … … 3638 3645 double voltage, temp, templim, state, fan; 3639 3646 int valid; 3640 3647 3648 /* Check for the non standard temp1_state sysfs attr the old driver uses 3649 if it isn't present we are talking to the new fschmd driver */ 3650 if (sensors_get_feature(*name,SENSORS_FSCSCY_TEMP1_STATE,&state) != 0) { 3651 print_fscscy_fschmd(name); 3652 return; 3653 } 3654 3655 /* no need to read TEMP1_STATE, as we just successfully did that above */ 3641 3656 if (!sensors_get_label_and_valid(*name,SENSORS_FSCSCY_TEMP1,&label,&valid) && 3642 3657 !sensors_get_feature(*name,SENSORS_FSCSCY_TEMP1,&temp) && 3643 !sensors_get_feature(*name,SENSORS_FSCSCY_TEMP1_LIM,&templim) && 3644 !sensors_get_feature(*name,SENSORS_FSCSCY_TEMP1_STATE,&state)) { 3658 !sensors_get_feature(*name,SENSORS_FSCSCY_TEMP1_LIM,&templim)) { 3645 3659 if (valid) { 3646 3660 print_label(label,10); … … 3820 3834 int valid; 3821 3835 3836 /* Check for the non standard temp1_state sysfs attr the old driver uses 3837 if it isn't present we are talking to the new fschmd driver */ 3838 if (sensors_get_feature(*name,SENSORS_FSCHER_TEMP1_STATE,&state) != 0) { 3839 print_fscher_fschmd(name); 3840 return; 3841 } 3842 3843 /* no need to read TEMP1_STATE, as we just successfully did that above */ 3822 3844 if (!sensors_get_label_and_valid(*name,SENSORS_FSCHER_TEMP1,&label,&valid) 3823 && !sensors_get_feature(*name,SENSORS_FSCHER_TEMP1,&temp) 3824 && !sensors_get_feature(*name,SENSORS_FSCHER_TEMP1_STATE,&state)) { 3845 && !sensors_get_feature(*name,SENSORS_FSCHER_TEMP1,&temp)) { 3825 3846 if (valid) { 3826 3847 print_label(label,10); … … 6283 6304 } 6284 6305 6306 static void print_fschmd_in(const sensors_chip_name *name, int i, 6307 int in_feature) 6308 { 6309 char *label; 6310 double cur; 6311 int valid; 6312 6313 if (!sensors_get_label_and_valid(*name, in_feature, &label, &valid) && 6314 !sensors_get_feature(*name, in_feature, &cur)) { 6315 if (valid) { 6316 print_label(label, 10); 6317 printf("%+6.2f V\n", cur); 6318 } 6319 } else { 6320 printf("ERROR: Can't get in%d data!\n", i); 6321 } 6322 free(label); 6323 } 6324 6325 static void print_fschmd_fan(const sensors_chip_name *name, int i, 6326 int fan_feature, int fan_div_feature) 6327 { 6328 char *label; 6329 double cur, div, alarm, fault; 6330 int valid; 6331 6332 if (!sensors_get_label_and_valid(*name, fan_feature, &label, &valid) && 6333 !sensors_get_feature(*name, fan_feature, &cur) && 6334 !sensors_get_feature(*name, fan_div_feature, &div) && 6335 !sensors_get_feature(*name, SENSORS_FSCHMD_FAN_ALARM(i), &alarm) && 6336 !sensors_get_feature(*name, SENSORS_FSCHMD_FAN_FAULT(i), &fault)) { 6337 if (valid) { 6338 print_label(label, 10); 6339 if (fault) 6340 printf(" FAULT\n"); 6341 else 6342 printf("%4.0f RPM (div = %1.0f) %s\n", cur, div, 6343 alarm ? "ALARM" : ""); 6344 } 6345 } 6346 /* no error on failure as we get used for various FSC chips and not all 6347 have the same amount of fan sensors */ 6348 6349 free(label); 6350 } 6351 6352 static void print_fschmd_temp(const sensors_chip_name *name, int i, 6353 int temp_feature, int temp_max_feature) 6354 { 6355 char *label; 6356 double cur, max, alarm, fault; 6357 int valid; 6358 6359 if (!sensors_get_label_and_valid(*name, temp_feature, &label, &valid) && 6360 !sensors_get_feature(*name, temp_feature, &cur) && 6361 (!temp_max_feature || 6362 !sensors_get_feature(*name, temp_max_feature, &max)) && 6363 !sensors_get_feature(*name, SENSORS_FSCHMD_TEMP_ALARM(i), &alarm) && 6364 !sensors_get_feature(*name, SENSORS_FSCHMD_TEMP_FAULT(i), &fault)) { 6365 if (valid) { 6366 print_label(label, 10); 6367 if (fault) 6368 printf(" FAULT\n"); 6369 else { 6370 /* The fscpos doesn't have max temp limits */ 6371 if (temp_max_feature) 6372 print_temp_info(cur, max, 0, MAXONLY, 1, 1); 6373 else 6374 print_temp_info(cur, 0, 0, SINGLE, 1, 1); 6375 printf("%s\n", alarm ? "ALARM" : ""); 6376 } 6377 } 6378 } 6379 /* no error on failure as we get used for various FSC chips and not all 6380 have the same amount of temp sensors */ 6381 6382 free(label); 6383 } 6384 6385 void print_fschmd(const sensors_chip_name *name) 6386 { 6387 int i; 6388 6389 for (i = 0; i <= 2; i++) 6390 print_fschmd_in(name, i, SENSORS_FSCHMD_IN(i)); 6391 6392 for (i = 1; i <= 6; i++) 6393 print_fschmd_fan(name, i, SENSORS_FSCHMD_FAN(i), 6394 SENSORS_FSCHMD_FAN_DIV(i)); 6395 6396 for (i = 1; i <= 5; i++) 6397 print_fschmd_temp(name, i, SENSORS_FSCHMD_TEMP(i), 6398 SENSORS_FSCHMD_TEMP_MAX(i)); 6399 } 6400 6401 void print_fscpos_fschmd(const sensors_chip_name *name) 6402 { 6403 int i; 6404 6405 for (i = 0; i < 3; i++) 6406 print_fschmd_in(name, i, SENSORS_FSCPOS_VOLTAGE1 + i); 6407 6408 for (i = 0; i < 3; i++) 6409 print_fschmd_fan(name, i + 1, SENSORS_FSCPOS_FAN1 + i, 6410 SENSORS_FSCPOS_FAN1_RIPPLE + i); 6411 6412 for (i = 0; i < 3; i++) 6413 print_fschmd_temp(name, i + 1, SENSORS_FSCPOS_TEMP1 + i, 0); 6414 } 6415 6416 void print_fscscy_fschmd(const sensors_chip_name *name) 6417 { 6418 int i; 6419 6420 for (i = 0; i < 3; i++) 6421 print_fschmd_in(name, i, SENSORS_FSCSCY_VOLTAGE1 + i); 6422 6423 for (i = 0; i < 6; i++) 6424 print_fschmd_fan(name, i + 1, SENSORS_FSCSCY_FAN1 + i, 6425 SENSORS_FSCSCY_FAN1_RIPPLE + i); 6426 6427 for (i = 0; i < 4; i++) 6428 print_fschmd_temp(name, i + 1, SENSORS_FSCSCY_TEMP1 + i, 6429 SENSORS_FSCSCY_TEMP1_MAX + i); 6430 } 6431 6432 void print_fscher_fschmd(const sensors_chip_name *name) 6433 { 6434 int i; 6435 6436 for (i = 0; i < 3; i++) 6437 print_fschmd_in(name, i, SENSORS_FSCHER_VOLTAGE1 + i); 6438 6439 for (i = 0; i < 3; i++) 6440 print_fschmd_fan(name, i + 1, SENSORS_FSCHER_FAN1 + i, 6441 SENSORS_FSCHER_FAN1_RIPPLE + i); 6442 6443 for (i = 0; i < 3; i++) 6444 print_fschmd_temp(name, i + 1, SENSORS_FSCHER_TEMP1 + i, 6445 SENSORS_FSCHMD_TEMP_MAX(i + 1)); 6446 } 6447 6285 6448 void print_unknown_chip(const sensors_chip_name *name) 6286 6449 { lm-sensors/trunk/prog/sensors/chips.h
r4799 r4939 82 82 extern void print_f71882fg(const sensors_chip_name *name); 83 83 extern void print_thmc50(const sensors_chip_name *name); 84 extern void print_fschmd(const sensors_chip_name *name); 85 extern void print_fscpos_fschmd(const sensors_chip_name *name); 86 extern void print_fscscy_fschmd(const sensors_chip_name *name); 87 extern void print_fscher_fschmd(const sensors_chip_name *name); 84 88 85 89 #endif /* def PROG_SENSORS_CHIPS_H */ lm-sensors/trunk/prog/sensors/main.c
r4799 r4939 430 430 { "thmc50", print_thmc50 }, 431 431 { "adm1022", print_thmc50 }, 432 { "fschmd", print_fschmd }, 433 { "fschrc", print_fschmd }, 432 434 { NULL, NULL } 433 435 };
