Commit | Line | Data |
---|---|---|
d664a480 DW |
1 | Kernel driver adt7470 |
2 | ===================== | |
3 | ||
4 | Supported chips: | |
b04f2f7d | 5 | |
d664a480 | 6 | * Analog Devices ADT7470 |
b04f2f7d | 7 | |
d664a480 | 8 | Prefix: 'adt7470' |
b04f2f7d | 9 | |
d664a480 | 10 | Addresses scanned: I2C 0x2C, 0x2E, 0x2F |
b04f2f7d | 11 | |
d664a480 DW |
12 | Datasheet: Publicly available at the Analog Devices website |
13 | ||
14 | Author: Darrick J. Wong | |
15 | ||
16 | Description | |
17 | ----------- | |
18 | ||
19 | This driver implements support for the Analog Devices ADT7470 chip. There may | |
20 | be other chips that implement this interface. | |
21 | ||
22 | The ADT7470 uses the 2-wire interface compatible with the SMBus 2.0 | |
23 | specification. Using an analog to digital converter it measures up to ten (10) | |
24 | external temperatures. It has four (4) 16-bit counters for measuring fan speed. | |
25 | There are four (4) PWM outputs that can be used to control fan speed. | |
26 | ||
27 | A sophisticated control system for the PWM outputs is designed into the ADT7470 | |
28 | that allows fan speed to be adjusted automatically based on any of the ten | |
29 | temperature sensors. Each PWM output is individually adjustable and | |
30 | programmable. Once configured, the ADT7470 will adjust the PWM outputs in | |
31 | response to the measured temperatures with further host intervention. This | |
32 | feature can also be disabled for manual control of the PWM's. | |
33 | ||
34 | Each of the measured inputs (temperature, fan speed) has corresponding high/low | |
35 | limit values. The ADT7470 will signal an ALARM if any measured value exceeds | |
36 | either limit. | |
37 | ||
89fac11c DW |
38 | The ADT7470 samples all inputs continuously. A kernel thread is started up for |
39 | the purpose of periodically querying the temperature sensors, thus allowing the | |
40 | automatic fan pwm control to set the fan speed. The driver will not read the | |
41 | registers more often than once every 5 seconds. Further, configuration data is | |
42 | only read once per minute. | |
d664a480 DW |
43 | |
44 | Special Features | |
45 | ---------------- | |
46 | ||
47 | The ADT7470 has a 8-bit ADC and is capable of measuring temperatures with 1 | |
48 | degC resolution. | |
49 | ||
50 | The Analog Devices datasheet is very detailed and describes a procedure for | |
51 | determining an optimal configuration for the automatic PWM control. | |
52 | ||
53 | Configuration Notes | |
54 | ------------------- | |
55 | ||
56 | Besides standard interfaces driver adds the following: | |
57 | ||
58 | * PWM Control | |
59 | ||
60 | * pwm#_auto_point1_pwm and pwm#_auto_point1_temp and | |
61 | * pwm#_auto_point2_pwm and pwm#_auto_point2_temp - | |
62 | ||
b04f2f7d MCC |
63 | - point1: Set the pwm speed at a lower temperature bound. |
64 | - point2: Set the pwm speed at a higher temperature bound. | |
d664a480 DW |
65 | |
66 | The ADT7470 will scale the pwm between the lower and higher pwm speed when | |
67 | the temperature is between the two temperature boundaries. PWM values range | |
68 | from 0 (off) to 255 (full speed). Fan speed will be set to maximum when the | |
69 | temperature sensor associated with the PWM control exceeds | |
70 | pwm#_auto_point2_temp. | |
71 | ||
aa18cc91 JS |
72 | The driver also allows control of the PWM frequency: |
73 | ||
74 | * pwm1_freq | |
75 | ||
76 | The PWM frequency is rounded to the nearest one of: | |
77 | ||
78 | * 11.0 Hz | |
79 | * 14.7 Hz | |
80 | * 22.1 Hz | |
81 | * 29.4 Hz | |
82 | * 35.3 Hz | |
83 | * 44.1 Hz | |
84 | * 58.8 Hz | |
85 | * 88.2 Hz | |
86 | * 1.4 kHz | |
87 | * 22.5 kHz | |
88 | ||
d664a480 DW |
89 | Notes |
90 | ----- | |
91 | ||
89fac11c DW |
92 | The temperature inputs no longer need to be read periodically from userspace in |
93 | order for the automatic pwm algorithm to run. This was the case for earlier | |
94 | versions of the driver. |