blob: f08f28715b84f0012a5608076435456438bc59b4 [file] [log] [blame]
Jean Delvaref890c6a2009-12-09 20:36:02 +01001Kernel driver adt7475
2=====================
Jordan Crouse1c301fc2009-01-15 22:27:47 +01003
Jean Delvaref890c6a2009-12-09 20:36:02 +01004Supported 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
Jean Delvare3d849982009-12-09 20:36:05 +010013 * Analog Devices ADT7490
14 Prefix: 'adt7490'
15 Addresses scanned: I2C 0x2C, 0x2D, 0x2E
16 Datasheet: Publicly available at the On Semiconductors website
Jordan Crouse1c301fc2009-01-15 22:27:47 +010017
Jean Delvaref890c6a2009-12-09 20:36:02 +010018Authors:
19 Jordan Crouse
20 Hans de Goede
21 Darrick J. Wong (documentation)
Jean Delvare3d849982009-12-09 20:36:05 +010022 Jean Delvare
Jordan Crouse1c301fc2009-01-15 22:27:47 +010023
Jordan Crouse1c301fc2009-01-15 22:27:47 +010024
Jean Delvaref890c6a2009-12-09 20:36:02 +010025Description
26-----------
Jordan Crouse1c301fc2009-01-15 22:27:47 +010027
Jean Delvare3d849982009-12-09 20:36:05 +010028This driver implements support for the Analog Devices ADT7473, ADT7475 and
29ADT7490 chip family. The ADT7473 and ADT7475 differ only in minor details.
30The ADT7490 has additional features, including extra voltage measurement
31inputs and PECI support. All the supported chips will be collectively
32designed by the name "ADT747x" in the rest of this document.
Jordan Crouse1c301fc2009-01-15 22:27:47 +010033
Jean Delvaref890c6a2009-12-09 20:36:02 +010034The ADT747x uses the 2-wire interface compatible with the SMBus 2.0
35specification. Using an analog to digital converter it measures three (3)
Jean Delvare3d849982009-12-09 20:36:05 +010036temperatures and two (2) or more voltages. It has four (4) 16-bit counters
37for measuring fan speed. There are three (3) PWM outputs that can be used
Jean Delvaref890c6a2009-12-09 20:36:02 +010038to control fan speed.
Jordan Crouse1c301fc2009-01-15 22:27:47 +010039
Jean Delvaref890c6a2009-12-09 20:36:02 +010040A sophisticated control system for the PWM outputs is designed into the
41ADT747x that allows fan speed to be adjusted automatically based on any of the
42three temperature sensors. Each PWM output is individually adjustable and
43programmable. Once configured, the ADT747x will adjust the PWM outputs in
44response to the measured temperatures without further host intervention.
45This feature can also be disabled for manual control of the PWM's.
Jordan Crouse1c301fc2009-01-15 22:27:47 +010046
Jean Delvaref890c6a2009-12-09 20:36:02 +010047Each of the measured inputs (voltage, temperature, fan speed) has
48corresponding high/low limit values. The ADT747x will signal an ALARM if
49any measured value exceeds either limit.
Jordan Crouse1c301fc2009-01-15 22:27:47 +010050
Jean Delvaref890c6a2009-12-09 20:36:02 +010051The ADT747x samples all inputs continuously. The driver will not read
52the registers more often than once every other second. Further,
53configuration data is only read once per minute.
Jordan Crouse1c301fc2009-01-15 22:27:47 +010054
Jean Delvare3d849982009-12-09 20:36:05 +010055Chip Differences Summary
56------------------------
57
58ADT7473:
59 * 2 voltage inputs
60 * system acoustics optimizations (not implemented)
61
62ADT7475:
63 * 2 voltage inputs
64
65ADT7490:
66 * 6 voltage inputs
67 * 1 Imon input (not implemented)
68 * PECI support (not implemented)
69 * 2 GPIO pins (not implemented)
70 * system acoustics optimizations (not implemented)
71
Jean Delvaref890c6a2009-12-09 20:36:02 +010072Special Features
73----------------
Jordan Crouse1c301fc2009-01-15 22:27:47 +010074
Jean Delvaref890c6a2009-12-09 20:36:02 +010075The ADT747x has a 10-bit ADC and can therefore measure temperatures
76with a resolution of 0.25 degree Celsius. Temperature readings can be
77configured either for two's complement format or "Offset 64" format,
78wherein 64 is subtracted from the raw value to get the temperature value.
Jordan Crouse1c301fc2009-01-15 22:27:47 +010079
Jean Delvaref890c6a2009-12-09 20:36:02 +010080The datasheet is very detailed and describes a procedure for determining
81an optimal configuration for the automatic PWM control.
Jordan Crouse1c301fc2009-01-15 22:27:47 +010082
Jean Delvaref890c6a2009-12-09 20:36:02 +010083Fan Speed Control
84-----------------
Jordan Crouse1c301fc2009-01-15 22:27:47 +010085
Jean Delvaref890c6a2009-12-09 20:36:02 +010086The driver exposes two trip points per PWM channel.
Jordan Crouse1c301fc2009-01-15 22:27:47 +010087
Jean Delvaref890c6a2009-12-09 20:36:02 +010088point1: Set the PWM speed at the lower temperature bound
89point2: Set the PWM speed at the higher temperature bound
Jordan Crouse1c301fc2009-01-15 22:27:47 +010090
Jean Delvaref890c6a2009-12-09 20:36:02 +010091The ADT747x will scale the PWM linearly between the lower and higher PWM
92speed when the temperature is between the two temperature boundaries.
93Temperature boundaries are associated to temperature channels rather than
94PWM outputs, and a given PWM output can be controlled by several temperature
95channels. As a result, the ADT747x may compute more than one PWM value
96for a channel at a given time, in which case the maximum value (fastest
97fan speed) is applied. PWM values range from 0 (off) to 255 (full speed).
Jordan Crouse1c301fc2009-01-15 22:27:47 +010098
Jean Delvaref890c6a2009-12-09 20:36:02 +010099Fan speed may be set to maximum when the temperature sensor associated with
100the PWM control exceeds temp#_max.
Jordan Crouse1c301fc2009-01-15 22:27:47 +0100101
Jean Delvaref890c6a2009-12-09 20:36:02 +0100102Notes
103-----
Jordan Crouse1c301fc2009-01-15 22:27:47 +0100104
Jean Delvaref890c6a2009-12-09 20:36:02 +0100105The nVidia binary driver presents an ADT7473 chip via an on-card i2c bus.
106Unfortunately, they fail to set the i2c adapter class, so this driver may
107fail to find the chip until the nvidia driver is patched.