Changeset 1112
- Timestamp:
- 06/03/01 23:58:26 (8 years ago)
- Files:
-
- lm-sensors/trunk/CHANGES (modified) (4 diffs)
- lm-sensors/trunk/CONTRIBUTORS (modified) (1 diff)
- lm-sensors/trunk/README (modified) (1 diff)
- lm-sensors/trunk/doc/chips/it87 (added)
- lm-sensors/trunk/etc/sensors.conf.eg (modified) (5 diffs)
- lm-sensors/trunk/kernel/chips/Module.mk (modified) (2 diffs)
- lm-sensors/trunk/kernel/chips/it87.c (added)
- lm-sensors/trunk/kernel/sensors.c (modified) (3 diffs)
- lm-sensors/trunk/prog/detect/sensors-detect (modified) (1 diff)
- lm-sensors/trunk/prog/sensors/chips.c (modified) (1 diff)
- 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/CHANGES
r1108 r1112 22 22 If your make fails because it can't find <linux/i2c-proc.h>, you 23 23 forgot this step!!! 24 File doc/FAQ: Many updates and additions24 File doc/FAQ: Many, many updates and additions 25 25 File doc/busses/i2c-sis5595: new 26 File doc/busses/i2c-tsunami: new 26 27 File doc/chips/via686a: Claim support for 686b. 27 28 File README.thinkpad: new … … 46 47 Module i2c-tsunami: New 47 48 Module i2c-via: Ensure i2c bus is tristated correctly. 49 Module it87: new driver for IT8705, IT8712, Sis950 chips 48 50 Module lm78: Recognize chipid=0x20 49 51 Module lm87: Fix in0, in1 (2.5V and Vccp1) calculations … … 63 65 Program mkpatch.pl: Fix adm9240 typos; Add more chips to Configure.help; 64 66 Remove ltc1710; Fix i2c_sis5595 typo; 65 Support kernel 2.4.5 makefile change 67 Support kernel 2.4.5 makefile change; 68 Add i2c-tsunami. 66 69 Program sens_update_rrd: new 67 70 Program sensord: Add -d (debug) and -p (pid-file) options … … 69 72 Fix swapped limit and hysteresis on 9240, 5595, 686a; 70 73 Change mtp008 temps from max/min to limit/hyst; 71 Add maxilife-nba and adm1024support.74 Add maxilife-nba, adm1024, it87xx support. 72 75 Program sensors-detect: Recognize lm78 with chipid=0x20; 73 76 Recognize SMSC Victory66 South Bridge; 74 77 Add devfs /dev/i2c/x support; 75 Add adm1024 support; Add thinkpad warning.78 Add adm1024, it87xx support; Add thinkpad warning. 76 79 Program tellerstats: new 77 80 lm-sensors/trunk/CONTRIBUTORS
r1108 r1112 61 61 * Oleg I. Vdovikin <vdovikin@jscc.ru> 62 62 Author of the DEC Tsunami bus driver. 63 * Christophe Gauthron <chrisg@0-in.com> 64 Author of the IT87 driver. lm-sensors/trunk/README
r1108 r1112 53 53 Genesys Logic GL518SM (rev 00, 80), GL520SM, GL523SM 54 54 Intel Xeon processor embedded sensors 55 ITE IT8705F, IT8712F embedded sensors 55 56 Maxim MAX1617 and MAX1617A 56 57 Myson MTP008 57 National Semico ductor LM75, LM77, LM78, LM78-J, LM79,58 LM80, LM81, LM84, and LM8759 SiS 5595 embedded sensors58 National Semiconductor LM75, LM77, LM78, LM78-J, LM79, 59 LM80, LM81, LM84, and LM87 60 SiS 5595, 950 embedded sensors 60 61 TelCom TCN75 61 62 TI THMC10 and THMC50 lm-sensors/trunk/etc/sensors.conf.eg
r1090 r1112 208 208 209 209 210 chip "lm78-*" "lm78-j-*" "lm79-*" "w83781d-*" "sis5595-*"210 chip "lm78-*" "lm78-j-*" "lm79-*" "w83781d-*" 211 211 212 212 # These are as advised in the LM78 and LM79 data sheets, and used on almost … … 273 273 set in6_max -5 * 1.05 274 274 275 # examples for lm78, lm78j, lm79, sis5595 temperature limits; 276 # for sis5595, temp_hist is really the low limit, not a hysteresis value 275 # examples for lm78, lm78j, lm79 temperature limits; 277 276 # set temp_over 40 278 277 # set temp_hyst 37 … … 286 285 # set temp3_hyst 47 287 286 287 288 chip "sis5595-*" 289 290 label in0 "VCore 1" 291 label in1 "VCore 2" 292 label in2 "+3.3V" 293 label in3 "+5V" 294 label in4 "+12V" 295 296 compute in3 ((6.8/10)+1)*@ , @/((6.8/10)+1) 297 compute in4 ((28/10)+1)*@ , @/((28/10)+1) 298 299 set in0_min 2.0 * 0.95 300 set in0_max 2.0 * 1.05 301 set in1_min 2.0 * 0.95 302 set in1_max 2.0 * 1.05 303 set in2_min 3.3 * 0.95 304 set in2_max 3.3 * 1.05 305 set in3_min 5.0 * 0.95 306 set in3_max 5.0 * 1.05 307 set in4_min 12 * 0.95 308 set in4_max 12 * 1.05 309 310 # 311 # SiS5595 temperature calculation 312 # The driver does NOT include a calculation due to the wide 313 # variation in thermistor types on SiS5595 motherboards. 314 # Look in your 'Vendor.ini' file to see which one is present 315 # on your motherboard. Look for the line like: 316 # [Temp1] 317 # ThermistorType = NTC-10KC15-1608-1P 318 # Uncomment the correct 'compute' line below to match your 319 # thermistor type. 320 # ThermistorType = NTC-10KC15-1608-1P (10K at 25C; Beta = 3435) 321 # ThermistorType = NTC-103KC15-1608-1P 322 # ThermistorType = NTC-103AT-2 (10K at 25C; Beta = 3435) 323 # ThermistorType = NTC-103JT (10K at 25C; Beta = 3435) 324 325 # examples for sis5595 temperature limits; 326 # for sis5595, temp_hist is really the low limit, not a hysteresis value 327 # set temp_over 40 328 # set temp_hyst 37 288 329 289 330 chip "w83782d-*" "w83783s-*" "w83627hf-*" … … 874 915 chip "adm9240-*" "ds1780-*" "lm81-*" 875 916 # 876 # Th is chip hasnon-standard entries in lib/chips.c so917 # These chips have non-standard entries in lib/chips.c so 877 918 # the feature names are quite different from other chips. 878 # For th is chip, libsensors anticipates the correct labeling.919 # For these chips, libsensors anticipates the correct labeling. 879 920 # This is great if it's correct but makes it a little more 880 921 # difficult if you want to change it. … … 938 979 ignore "Vccp1" 939 980 ignore "Vccp2" 981 982 983 chip "it87-*" 984 985 # The values below have been tested on Asus CUSI, CUM motherboards. 986 987 # Voltage monitors as advised in the It8705 data sheet 988 989 label in0 "VCore 1" 990 label in1 "VCore 2" 991 label in2 "+3.3V" 992 label in3 "+5V" 993 label in4 "+12V" 994 label in5 "-12V" 995 label in6 "-5V" 996 label in7 "Stdby" 997 998 set in0_min 1.5 * 0.95 999 set in0_max 1.5 * 1.05 1000 set in1_min 2.4 1001 set in1_max 2.6 1002 set in2_min 3.3 * 0.95 1003 set in2_max 3.3 * 1.05 1004 set in3_min 5.0 * 0.95 1005 set in3_max 5.0 * 1.05 1006 set in4_min 12 * 0.95 1007 set in4_max 12 * 1.05 1008 set in5_min -12 * 0.95 1009 set in5_max -12 * 1.05 1010 set in6_min -5 * 0.95 1011 set in6_max -5 * 1.05 1012 set in6_min -5 * 0.95 1013 set in6_max -5 * 1.05 1014 1015 # vid not monitored by IT8705F 1016 ignore vid 1017 1018 compute in2 (1 + 1)*@ , @/(1 + 1) 1019 compute in3 ((6.8/10)+1)*@ , @/((6.8/10)+1) 1020 compute in4 ((30/10) +1)*@ , @/((30/10) +1) 1021 compute in5 -(72/10)*@ , -@/(72/10) 1022 compute in6 -(56/10)*@ , -@/(56/10) 1023 compute in7 ((6.8/10)+1)*@ , @/((6.8/10)+1) 1024 1025 # Temperature 1026 1027 label temp1 "Temp1/MB" 1028 set temp1_over 40 1029 set temp1_hyst 20 1030 1031 label temp2 "Temp2/CPU" 1032 set temp2_over 45 1033 set temp2_hyst 25 1034 1035 ignore temp3 1036 1037 # Fans 1038 1039 set fan1_min 0 1040 set fan2_min 3000 1041 ignore fan3 1042 lm-sensors/trunk/kernel/chips/Module.mk
r1100 r1112 26 26 # These targets are NOT included in 'mkpatch' ... 27 27 KERNELCHIPSTARGETS := \ 28 $(MODULE_DIR)/adm1024.o \ 29 $(MODULE_DIR)/it87.o \ 28 30 $(MODULE_DIR)/maxilife.o \ 29 $(MODULE_DIR)/adm1024.o \30 31 $(MODULE_DIR)/mtp008.o 31 32 … … 58 59 ifneq ($(shell if grep -q '^CONFIG_SENSORS_GL520SM=y' $(LINUX)/.config; then echo 1; fi),1) 59 60 KERNELCHIPSTARGETS += $(MODULE_DIR)/gl520sm.o 61 endif 62 ifneq ($(shell if grep -q '^CONFIG_SENSORS_IT87=y' $(LINUX)/.config; then echo 1; fi),1) 63 KERNELCHIPSTARGETS += $(MODULE_DIR)/it87.o 60 64 endif 61 65 ifneq ($(shell if grep -q '^CONFIG_SENSORS_LM75=y' $(LINUX)/.config; then echo 1; fi),1) lm-sensors/trunk/kernel/sensors.c
r1080 r1112 18 18 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 19 19 */ 20 20 21 21 22 #include <linux/init.h> … … 98 99 extern int sensors_ltc1710_init(void); 99 100 #endif 101 #ifdef CONFIG_SENSORS_IT87 102 extern int sensors_it87_init(void); 103 #endif 100 104 101 105 int __init sensors_init_all(void) … … 159 163 sensors_ltc1710_init(); 160 164 #endif 165 #ifdef CONFIG_SENSORS_IT87 166 sensors_it87_init(); 167 #endif 161 168 return 0; 162 169 } lm-sensors/trunk/prog/detect/sensors-detect
r1090 r1112 629 629 { 630 630 name => "ITE IT8705F / IT8712F / SiS 950", 631 driver => "Unwritten (IT87xxF)", 632 i2c_addrs => [0x00..0x68,0x6a..0x7f], 633 i2c_driver_addrs => [0x20..0x2f], 634 i2c_detect => sub { ite_detect 0, @_}, 631 driver => "it87", 635 632 isa_addrs => [0x290], 636 633 isa_detect => sub { ite_isa_detect 0, @_ }, 637 alias_detect => sub { ite_alias_detect 0, @_ },638 634 } , 639 635 { lm-sensors/trunk/prog/sensors/chips.c
r1090 r1112 2427 2427 } 2428 2428 2429 2430 void print_it87(const sensors_chip_name *name) 2431 { 2432 char *label = NULL; 2433 double cur, min, max, fdiv; 2434 int alarms_fan, alarms_vin, alarms_temp, valid; 2435 2436 if (!sensors_get_feature(*name,SENSORS_IT87_ALARMS_FAN, &cur)) { 2437 alarms_fan = cur + 0.5; 2438 } 2439 else { 2440 printf("ERROR: Can't get fan alarm data!\n"); 2441 alarms_fan = 0; 2442 } 2443 2444 if (!sensors_get_feature(*name,SENSORS_IT87_ALARMS_VIN, &cur)) { 2445 alarms_vin = cur + 0.5; 2446 } 2447 else { 2448 printf("ERROR: Can't get vin alarm data!\n"); 2449 alarms_vin = 0; 2450 } 2451 2452 if (!sensors_get_feature(*name,SENSORS_IT87_ALARMS_TEMP, &cur)) { 2453 alarms_temp = cur + 0.5; 2454 } 2455 else { 2456 printf("ERROR: Can't get temp alarm data!\n"); 2457 alarms_temp = 0; 2458 } 2459 2460 2461 if (!sensors_get_label_and_valid(*name,SENSORS_IT87_IN0,&label,&valid) && 2462 !sensors_get_feature(*name,SENSORS_IT87_IN0,&cur) && 2463 !sensors_get_feature(*name,SENSORS_IT87_IN0_MIN,&min) && 2464 !sensors_get_feature(*name,SENSORS_IT87_IN0_MAX,&max)) { 2465 if (valid) { 2466 print_label(label,10); 2467 printf("%+6.2f V (min = %+6.2f V, max = %+6.2f V) %s\n", 2468 cur,min,max,alarms_vin&IT87_ALARM_IN0?"ALARM":""); 2469 } 2470 } else 2471 printf("ERROR: Can't get IN0 data!\n"); 2472 free_the_label(&label); 2473 if (!sensors_get_label_and_valid(*name,SENSORS_IT87_IN1,&label,&valid) && 2474 !sensors_get_feature(*name,SENSORS_IT87_IN1,&cur) && 2475 !sensors_get_feature(*name,SENSORS_IT87_IN1_MIN,&min) && 2476 !sensors_get_feature(*name,SENSORS_IT87_IN1_MAX,&max)) { 2477 if (valid) { 2478 print_label(label,10); 2479 printf("%+6.2f V (min = %+6.2f V, max = %+6.2f V) %s\n", 2480 cur,min,max,alarms_vin&IT87_ALARM_IN1?"ALARM":""); 2481 } 2482 } else 2483 printf("ERROR: Can't get IN1 data!\n"); 2484 free_the_label(&label); 2485 if (!sensors_get_label_and_valid(*name,SENSORS_IT87_IN2,&label,&valid) && 2486 !sensors_get_feature(*name,SENSORS_IT87_IN2,&cur) && 2487 !sensors_get_feature(*name,SENSORS_IT87_IN2_MIN,&min) && 2488 !sensors_get_feature(*name,SENSORS_IT87_IN2_MAX,&max)) { 2489 if (valid) { 2490 print_label(label,10); 2491 printf("%+6.2f V (min = %+6.2f V, max = %+6.2f V) %s\n", 2492 cur,min,max,alarms_vin&IT87_ALARM_IN2?"ALARM":""); 2493 } 2494 } else 2495 printf("ERROR: Can't get IN2 data!\n"); 2496 free_the_label(&label); 2497 if (!sensors_get_label_and_valid(*name,SENSORS_IT87_IN3,&label,&valid) && 2498 !sensors_get_feature(*name,SENSORS_IT87_IN3,&cur) && 2499 !sensors_get_feature(*name,SENSORS_IT87_IN3_MIN,&min) && 2500 !sensors_get_feature(*name,SENSORS_IT87_IN3_MAX,&max)) { 2501 if (valid) { 2502 print_label(label,10); 2503 printf("%+6.2f V (min = %+6.2f V, max = %+6.2f V) %s\n", 2504 cur,min,max,alarms_vin&IT87_ALARM_IN3?"ALARM":""); 2505 } 2506 } else 2507 printf("ERROR: Can't get IN3 data!\n"); 2508 free_the_label(&label); 2509 if (!sensors_get_label_and_valid(*name,SENSORS_IT87_IN4,&label,&valid) && 2510 !sensors_get_feature(*name,SENSORS_IT87_IN4,&cur) && 2511 !sensors_get_feature(*name,SENSORS_IT87_IN4_MIN,&min) && 2512 !sensors_get_feature(*name,SENSORS_IT87_IN4_MAX,&max)) { 2513 if (valid) { 2514 print_label(label,10); 2515 printf("%+6.2f V (min = %+6.2f V, max = %+6.2f V) %s\n", 2516 cur,min,max,alarms_vin&IT87_ALARM_IN4?"ALARM":""); 2517 } 2518 } else 2519 printf("ERROR: Can't get IN4 data!\n"); 2520 free_the_label(&label); 2521 if (!sensors_get_label_and_valid(*name,SENSORS_IT87_IN5,&label,&valid) && 2522 !sensors_get_feature(*name,SENSORS_IT87_IN5,&cur) && 2523 !sensors_get_feature(*name,SENSORS_IT87_IN5_MIN,&min) && 2524 !sensors_get_feature(*name,SENSORS_IT87_IN5_MAX,&max)) { 2525 if (valid) { 2526 print_label(label,10); 2527 printf("%+6.2f V (min = %+6.2f V, max = %+6.2f V) %s\n", 2528 cur,min,max,alarms_vin&IT87_ALARM_IN5?"ALARM":""); 2529 } 2530 } else 2531 printf("ERROR: Can't get IN5 data!\n"); 2532 free_the_label(&label); 2533 if (!sensors_get_label_and_valid(*name,SENSORS_IT87_IN6,&label,&valid) && 2534 !sensors_get_feature(*name,SENSORS_IT87_IN6,&cur) && 2535 !sensors_get_feature(*name,SENSORS_IT87_IN6_MIN,&min) && 2536 !sensors_get_feature(*name,SENSORS_IT87_IN6_MAX,&max)) { 2537 if (valid) { 2538 print_label(label,10); 2539 printf("%+6.2f V (min = %+6.2f V, max = %+6.2f V) %s\n", 2540 cur,min,max,alarms_vin&IT87_ALARM_IN6?"ALARM":""); 2541 } 2542 } else 2543 printf("ERROR: Can't get IN6 data!\n"); 2544 free_the_label(&label); 2545 if (!sensors_get_label_and_valid(*name,SENSORS_IT87_IN7,&label,&valid) && 2546 !sensors_get_feature(*name,SENSORS_IT87_IN7,&cur) && 2547 !sensors_get_feature(*name,SENSORS_IT87_IN7_MIN,&min) && 2548 !sensors_get_feature(*name,SENSORS_IT87_IN7_MAX,&max)) { 2549 if (valid) { 2550 print_label(label,10); 2551 printf("%+6.2f V (min = %+6.2f V, max = %+6.2f V) %s\n", 2552 cur,min,max,alarms_vin&IT87_ALARM_IN7?"ALARM":""); 2553 } 2554 } else 2555 printf("ERROR: Can't get IN7 data!\n"); 2556 free_the_label(&label); 2557 2558 if (!sensors_get_label_and_valid(*name,SENSORS_IT87_FAN1,&label,&valid) && 2559 !sensors_get_feature(*name,SENSORS_IT87_FAN1,&cur) && 2560 !sensors_get_feature(*name,SENSORS_IT87_FAN1_DIV,&fdiv) && 2561 !sensors_get_feature(*name,SENSORS_IT87_FAN1_MIN,&min)) { 2562 if (valid) { 2563 print_label(label,10); 2564 printf("%4.0f RPM (min = %4.0f RPM, div = %1.0f) %s\n", 2565 cur,min,fdiv, alarms_fan&IT87_ALARM_FAN1?"ALARM":""); 2566 } 2567 } else 2568 printf("ERROR: Can't get FAN1 data!\n"); 2569 free_the_label(&label); 2570 if (!sensors_get_label_and_valid(*name,SENSORS_IT87_FAN2,&label,&valid) && 2571 !sensors_get_feature(*name,SENSORS_IT87_FAN2,&cur) && 2572 !sensors_get_feature(*name,SENSORS_IT87_FAN2_DIV,&fdiv) && 2573 !sensors_get_feature(*name,SENSORS_IT87_FAN2_MIN,&min)) { 2574 if (valid) { 2575 print_label(label,10); 2576 printf("%4.0f RPM (min = %4.0f RPM, div = %1.0f) %s\n", 2577 cur,min,fdiv, alarms_fan&IT87_ALARM_FAN2?"ALARM":""); 2578 } 2579 } else 2580 printf("ERROR: Can't get FAN2 data!\n"); 2581 free_the_label(&label); 2582 if (!sensors_get_label_and_valid(*name,SENSORS_IT87_FAN3,&label,&valid) && 2583 !sensors_get_feature(*name,SENSORS_IT87_FAN3,&cur) && 2584 !sensors_get_feature(*name,SENSORS_IT87_FAN3_DIV,&fdiv) && 2585 !sensors_get_feature(*name,SENSORS_IT87_FAN3_MIN,&min)) { 2586 if (valid) { 2587 print_label(label,10); 2588 printf("%4.0f RPM (min = %4.0f RPM, div = %1.0f) %s\n", 2589 cur,min,fdiv, alarms_fan&IT87_ALARM_FAN3?"ALARM":""); 2590 } 2591 } else 2592 printf("ERROR: Can't get FAN3 data!\n"); 2593 free_the_label(&label); 2594 2595 if (!sensors_get_label_and_valid(*name,SENSORS_IT87_TEMP1,&label,&valid) && 2596 !sensors_get_feature(*name,SENSORS_IT87_TEMP1,&cur) && 2597 !sensors_get_feature(*name,SENSORS_IT87_TEMP1_LOW,&min) && 2598 !sensors_get_feature(*name,SENSORS_IT87_TEMP1_HIGH,&max)) { 2599 if (valid) { 2600 print_label(label,10); 2601 print_temp_info( cur, max, min, MINMAX ); 2602 printf( " %s\n", alarms_temp & IT87_ALARM_TEMP1 ? "ALARM" : "" ); 2603 } 2604 } else 2605 printf("ERROR: Can't get TEMP1 data!\n"); 2606 free_the_label(&label); 2607 if (!sensors_get_label_and_valid(*name,SENSORS_IT87_TEMP2,&label,&valid) && 2608 !sensors_get_feature(*name,SENSORS_IT87_TEMP2,&cur) && 2609 !sensors_get_feature(*name,SENSORS_IT87_TEMP2_LOW,&min) && 2610 !sensors_get_feature(*name,SENSORS_IT87_TEMP2_HIGH,&max)) { 2611 if (valid) { 2612 print_label(label,10); 2613 print_temp_info( cur, max, min, MINMAX ); 2614 printf( " %s\n", alarms_temp & IT87_ALARM_TEMP2 ? "ALARM" : "" ); 2615 } 2616 } else 2617 printf("ERROR: Can't get TEMP2 data!\n"); 2618 free_the_label(&label); 2619 if (!sensors_get_label_and_valid(*name,SENSORS_IT87_TEMP3,&label,&valid) && 2620 !sensors_get_feature(*name,SENSORS_IT87_TEMP3,&cur) && 2621 !sensors_get_feature(*name,SENSORS_IT87_TEMP3_LOW,&min) && 2622 !sensors_get_feature(*name,SENSORS_IT87_TEMP3_HIGH,&max)) { 2623 if (valid) { 2624 print_label(label,10); 2625 print_temp_info( cur, max, min, MINMAX ); 2626 printf( " %s\n", alarms_temp & IT87_ALARM_TEMP3 ? "ALARM" : "" ); 2627 } 2628 } else 2629 printf("ERROR: Can't get TEMP3 data!\n"); 2630 free_the_label(&label); 2631 2632 if (!sensors_get_label_and_valid(*name,SENSORS_IT87_VID,&label,&valid) && 2633 !sensors_get_feature(*name,SENSORS_IT87_VID,&cur)) { 2634 if (valid) { 2635 print_label(label,10); 2636 printf("%+5.2f V\n",cur); 2637 } 2638 } 2639 free_the_label(&label); 2640 } 2641 2642 2429 2643 void print_unknown_chip(const sensors_chip_name *name) 2430 2644 { lm-sensors/trunk/prog/sensors/chips.h
r1090 r1112 42 42 extern void print_eeprom(const sensors_chip_name *name); 43 43 extern void print_lm87(const sensors_chip_name *name); 44 extern void print_it87(const sensors_chip_name *name); 44 45 45 46 #endif /* def PROG_SENSORS_CHIPS_H */ lm-sensors/trunk/prog/sensors/main.c
r1090 r1112 325 325 else if (!strcmp(name.prefix,"eeprom")) 326 326 print_eeprom(&name); 327 else if (!strcmp(name.prefix,"it87")) 328 print_it87(&name); 327 329 else 328 330 print_unknown_chip(&name);
