Merge tag 'pwm/for-5.1-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/thierry...
[linux-2.6-block.git] / Documentation / hwmon / adt7475
CommitLineData
f890c6a3
JD
1Kernel driver adt7475
2=====================
3
4Supported chips:
5 * Analog Devices ADT7473
6 Prefix: 'adt7473'
7 Addresses scanned: I2C 0x2C, 0x2D, 0x2E
8 Datasheet: Publicly available at the On Semiconductors website
9 * Analog Devices ADT7475
10 Prefix: 'adt7475'
11 Addresses scanned: I2C 0x2E
12 Datasheet: Publicly available at the On Semiconductors website
d8d2ee07
JD
13 * Analog Devices ADT7476
14 Prefix: 'adt7476'
15 Addresses scanned: I2C 0x2C, 0x2D, 0x2E
16 Datasheet: Publicly available at the On Semiconductors website
3d849981
JD
17 * Analog Devices ADT7490
18 Prefix: 'adt7490'
19 Addresses scanned: I2C 0x2C, 0x2D, 0x2E
20 Datasheet: Publicly available at the On Semiconductors website
f890c6a3
JD
21
22Authors:
23 Jordan Crouse
24 Hans de Goede
25 Darrick J. Wong (documentation)
3d849981 26 Jean Delvare
f890c6a3
JD
27
28
29Description
30-----------
31
d8d2ee07
JD
32This driver implements support for the Analog Devices ADT7473, ADT7475,
33ADT7476 and ADT7490 chip family. The ADT7473 and ADT7475 differ only in
34minor details. The ADT7476 has additional features, including extra voltage
35measurement inputs and VID support. The ADT7490 also has additional
36features, including extra voltage measurement inputs and PECI support. All
37the supported chips will be collectively designed by the name "ADT747x" in
38the rest of this document.
f890c6a3
JD
39
40The ADT747x uses the 2-wire interface compatible with the SMBus 2.0
41specification. Using an analog to digital converter it measures three (3)
3d849981
JD
42temperatures and two (2) or more voltages. It has four (4) 16-bit counters
43for measuring fan speed. There are three (3) PWM outputs that can be used
f890c6a3
JD
44to control fan speed.
45
46A sophisticated control system for the PWM outputs is designed into the
47ADT747x that allows fan speed to be adjusted automatically based on any of the
48three temperature sensors. Each PWM output is individually adjustable and
49programmable. Once configured, the ADT747x will adjust the PWM outputs in
50response to the measured temperatures without further host intervention.
51This feature can also be disabled for manual control of the PWM's.
52
53Each of the measured inputs (voltage, temperature, fan speed) has
54corresponding high/low limit values. The ADT747x will signal an ALARM if
55any measured value exceeds either limit.
56
57The ADT747x samples all inputs continuously. The driver will not read
58the registers more often than once every other second. Further,
59configuration data is only read once per minute.
60
3d849981
JD
61Chip Differences Summary
62------------------------
63
64ADT7473:
65 * 2 voltage inputs
66 * system acoustics optimizations (not implemented)
67
68ADT7475:
69 * 2 voltage inputs
70
d8d2ee07
JD
71ADT7476:
72 * 5 voltage inputs
54fe4671 73 * VID support
d8d2ee07 74
3d849981
JD
75ADT7490:
76 * 6 voltage inputs
77 * 1 Imon input (not implemented)
78 * PECI support (not implemented)
79 * 2 GPIO pins (not implemented)
80 * system acoustics optimizations (not implemented)
81
f1af9321
CP
82Sysfs Mapping
83-------------
84
85 ADT7490 ADT7476 ADT7475 ADT7473
86 ------- ------- ------- -------
87in0 2.5VIN (22) 2.5VIN (22) - -
88in1 VCCP (23) VCCP (23) VCCP (14) VCCP (14)
89in2 VCC (4) VCC (4) VCC (4) VCC (3)
90in3 5VIN (20) 5VIN (20)
91in4 12VIN (21) 12VIN (21)
92in5 VTT (8)
93
f890c6a3
JD
94Special Features
95----------------
96
97The ADT747x has a 10-bit ADC and can therefore measure temperatures
98with a resolution of 0.25 degree Celsius. Temperature readings can be
99configured either for two's complement format or "Offset 64" format,
100wherein 64 is subtracted from the raw value to get the temperature value.
101
102The datasheet is very detailed and describes a procedure for determining
103an optimal configuration for the automatic PWM control.
104
105Fan Speed Control
106-----------------
107
108The driver exposes two trip points per PWM channel.
109
110point1: Set the PWM speed at the lower temperature bound
111point2: Set the PWM speed at the higher temperature bound
112
113The ADT747x will scale the PWM linearly between the lower and higher PWM
114speed when the temperature is between the two temperature boundaries.
115Temperature boundaries are associated to temperature channels rather than
116PWM outputs, and a given PWM output can be controlled by several temperature
117channels. As a result, the ADT747x may compute more than one PWM value
118for a channel at a given time, in which case the maximum value (fastest
119fan speed) is applied. PWM values range from 0 (off) to 255 (full speed).
120
121Fan speed may be set to maximum when the temperature sensor associated with
122the PWM control exceeds temp#_max.
123
1d58f5ef
CP
124At Tmin - hysteresis the PWM output can either be off (0% duty cycle) or at the
125minimum (i.e. auto_point1_pwm). This behaviour can be configured using the
126pwm[1-*]_stall_disable sysfs attribute. A value of 0 means the fans will shut
127off. A value of 1 means the fans will run at auto_point1_pwm.
128
8f05bcc3
CP
129The responsiveness of the ADT747x to temperature changes can be configured.
130This allows smoothing of the fan speed transition. To set the transition time
131set the value in ms in the temp[1-*]_smoothing sysfs attribute.
132
f890c6a3
JD
133Notes
134-----
135
136The nVidia binary driver presents an ADT7473 chip via an on-card i2c bus.
137Unfortunately, they fail to set the i2c adapter class, so this driver may
138fail to find the chip until the nvidia driver is patched.