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