Changeset 2428
- Timestamp:
- 04/09/04 20:50:43 (5 years ago)
- Files:
-
- lm-sensors/trunk/doc/chips/SUMMARY (modified) (1 diff)
- lm-sensors/trunk/doc/chips/w83781d (modified) (7 diffs)
- lm-sensors/trunk/kernel/chips/w83781d.c (modified) (7 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
lm-sensors/trunk/doc/chips/SUMMARY
r2427 r2428 183 183 184 184 w83781d 185 as99127f 3 7 3 2 pwm?yes no185 as99127f 3 7 3 - yes no 186 186 w83781d 3 7 3 - yes yes 187 187 w83782d 3 9 3 2-4 pwm yes yes lm-sensors/trunk/doc/chips/w83781d
r2313 r2428 189 189 ----------------- 190 190 The as99127f support was developed without the benefit of a datasheet. 191 In most cases it is treated as a w83781d. 191 In most cases it is treated as a w83781d (although revision 2 of the 192 AS9917F looks more like a w83782d). 192 193 This support will be BETA until a datasheet is released. 193 194 One user has reported problems with fans stopping … … 200 201 Known problems: 201 202 - Problems with diode/thermistor settings (supported?) 202 - fan_div register may not really be fan_div.203 203 - One user reports fans stopping under high server load. 204 - Some as99127f chips are misidentified as a w83781d or w83782d. 205 This is caused by the chip having the wrong WCHIPID register 206 value, so there is no fix. The workaround is to use the 207 force_as99127f parameter. 208 (modprobe w83781d force_as99127f=BUS,0x2d where BUS is your i2c bus number) 204 - Revision 2 seems to have 2 PWM registers but we don't know 205 how to handle them. More details below. 209 206 210 207 These will not be fixed unless we get a datasheet. … … 525 522 Additional entries not in the lm78: 526 523 527 pwm[1-4]: (not on w83781d )524 pwm[1-4]: (not on w83781d nor as99127f) 528 525 Controls the speed of the fans with PWM (Pulse Width Modulation) 529 526 Valid values: … … 531 528 Second value is PWM enable 0/1. 532 529 533 sensor[1-3]: (not on w83781d )530 sensor[1-3]: (not on w83781d nor as99127f) 534 531 Controls the sensor type. To change to a different 535 532 sensor type, for example, do 'echo 2 > sensor1'. … … 542 539 after correspondence with Winbond. See below. 543 540 544 rt[1-3]: ( 781d only)541 rt[1-3]: (w83781d only) 545 542 32-byte tables controlling the conversion from 546 543 resistance to temperature for thermistors. … … 581 578 Data sheet updates: 582 579 ------------------ 583 - Mask off lower bit of all ID registers.584 585 580 - PWM clock registers: 586 581 … … 740 735 in5=255 741 736 in6=255 737 738 739 # PWM 740 741 Additional info about PWM on the AS99127F (may apply to other Asus 742 chips as well) by Jean Delvare as of 2004-04-09: 743 744 AS99127F revision 2 seems to have two PWM registers at 0x59 and 0x5A, 745 and a temperature sensor type selector at 0x5B (which basically means 746 that they swapped registers 0x59 and 0x5B when you compare with Winbond 747 chips). 748 Revision 1 of the chip also has the temperature sensor type selector at 749 0x5B, but PWM registers have no effect. 750 751 We don't know exactly how the temperature sensor type selection works. 752 Looks like bits 1-0 are for temp1, bits 3-2 for temp2 and bits 5-4 for 753 temp3, although it is possible that only the most significant bit matters 754 each time. So far, values other than 0 always broke the readings. 755 756 PWM registers seem to be split in two parts: bit 7 is a mode selector, 757 while the other bits seem to define a value or threshold. 758 759 When bit 7 is clear, bits 6-0 seem to hold a threshold value. If the value 760 is below a given limit, the fan runs at low speed. If the value is above 761 the limit, the fan runs at full speed. We have no clue as to what the limit 762 represents. Note that there seem to be some inertia in this mode, speed 763 changes may need some time to trigger. Also, an hysteresis mechanism is 764 suspected since walking through all the values increasingly and then 765 decreasingly led to slighlty different limits. 766 767 When bit 7 is set, bits 3-0 seem to hold a threshold value, while bits 6-4 768 would not be significant. If the value is below a given limit, the fan runs 769 at full speed, while if it is above the limit it runs at low speed (so this 770 is the contrary of the other mode, in a way). Here again, we don't know 771 what the limit is supposed to represent. 772 773 One remarkable thing is that the fans would only have two or three 774 different speeds (transitional states left apart), not a whole range as 775 you usually get with PWM. 776 777 As a conclusion, you can write 0x00 or 0x8F to the PWM registers to make 778 fans run at low speed, and 0x7F or 0x80 to make them run at full speed. 779 780 Please contact us if you can figure out how it is supposed to work. As 781 long as we don't know more, the w83781d driver doesn't handle PWM on 782 AS99127F chips at all. lm-sensors/trunk/kernel/chips/w83781d.c
r2313 r2428 25 25 26 26 Chip #vin #fanin #pwm #temp wchipid vendid i2c ISA 27 as99127f 7 3 1?3 0x31 0x12c3 yes no27 as99127f 7 3 0 3 0x31 0x12c3 yes no 28 28 as99127f rev.2 (type name = as99127f) 0x31 0x5ca3 yes no 29 29 w83627hf 9 3 2 3 0x21 0x5ca3 yes yes(LPC) … … 443 443 {W83781D_SYSCTL_BEEP, "beep", NULL, 0, 0644, NULL, &i2c_proc_real, 444 444 &i2c_sysctl_real, NULL, &w83781d_beep}, 445 {W83781D_SYSCTL_PWM1, "pwm1", NULL, 0, 0644, NULL, &i2c_proc_real,446 &i2c_sysctl_real, NULL, &w83781d_pwm},447 {W83781D_SYSCTL_PWM2, "pwm2", NULL, 0, 0644, NULL, &i2c_proc_real,448 &i2c_sysctl_real, NULL, &w83781d_pwm},449 445 {0} 450 446 }; … … 1062 1058 } 1063 1059 data->sysctl_id = i; 1060 1061 /* Only PWM2 can be disabled */ 1062 for(i = 0; i < 4; i++) 1063 data->pwmenable[i] = 1; 1064 1064 1065 1065 /* Initialize the chip */ … … 1380 1380 w83781d_write_value(client, W83781D_REG_IRQ, 1381 1381 i | 0x40); 1382 1383 for(i = 0; i < 3; i++)1384 data->pwmenable[i] = 1;1385 1382 } 1386 1383 } … … 1443 1440 if (data->type != w83791d && i == 3) break; 1444 1441 } 1445 if (data->type != w83781d ) {1442 if (data->type != w83781d && data->type != as99127f) { 1446 1443 for (i = 1; i <= 4; i++) { 1447 1444 data->pwm[i - 1] = … … 1450 1447 if (((data->type == w83783s) 1451 1448 || (data->type == w83627hf) 1452 || (data->type == as99127f)1453 1449 || (data->type == w83697hf) 1454 1450 || ((data->type == w83782d) … … 1457 1453 break; 1458 1454 } 1455 /* Only PWM2 can be disabled */ 1456 data->pwmenable[1] = (w83781d_read_value(client, 1457 W83781D_REG_PWMCLK12) & 0x08) >> 3; 1459 1458 } 1460 1459
