blob: ef3ea1ea9bc1561b0ab4113545bc7a1d4642a74a [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:
Mauro Carvalho Chehabb04f2f72019-04-17 06:46:28 -03005
Jean Delvaref890c6a2009-12-09 20:36:02 +01006 * Analog Devices ADT7473
Mauro Carvalho Chehabb04f2f72019-04-17 06:46:28 -03007
Jean Delvaref890c6a2009-12-09 20:36:02 +01008 Prefix: 'adt7473'
Mauro Carvalho Chehabb04f2f72019-04-17 06:46:28 -03009
Jean Delvaref890c6a2009-12-09 20:36:02 +010010 Addresses scanned: I2C 0x2C, 0x2D, 0x2E
Mauro Carvalho Chehabb04f2f72019-04-17 06:46:28 -030011
Jean Delvaref890c6a2009-12-09 20:36:02 +010012 Datasheet: Publicly available at the On Semiconductors website
Mauro Carvalho Chehabb04f2f72019-04-17 06:46:28 -030013
Jean Delvaref890c6a2009-12-09 20:36:02 +010014 * Analog Devices ADT7475
Mauro Carvalho Chehabb04f2f72019-04-17 06:46:28 -030015
Jean Delvaref890c6a2009-12-09 20:36:02 +010016 Prefix: 'adt7475'
Mauro Carvalho Chehabb04f2f72019-04-17 06:46:28 -030017
Jean Delvaref890c6a2009-12-09 20:36:02 +010018 Addresses scanned: I2C 0x2E
Mauro Carvalho Chehabb04f2f72019-04-17 06:46:28 -030019
Jean Delvaref890c6a2009-12-09 20:36:02 +010020 Datasheet: Publicly available at the On Semiconductors website
Mauro Carvalho Chehabb04f2f72019-04-17 06:46:28 -030021
Jean Delvared8d2ee02009-12-09 20:36:08 +010022 * Analog Devices ADT7476
Mauro Carvalho Chehabb04f2f72019-04-17 06:46:28 -030023
Jean Delvared8d2ee02009-12-09 20:36:08 +010024 Prefix: 'adt7476'
Mauro Carvalho Chehabb04f2f72019-04-17 06:46:28 -030025
Jean Delvared8d2ee02009-12-09 20:36:08 +010026 Addresses scanned: I2C 0x2C, 0x2D, 0x2E
Mauro Carvalho Chehabb04f2f72019-04-17 06:46:28 -030027
Jean Delvared8d2ee02009-12-09 20:36:08 +010028 Datasheet: Publicly available at the On Semiconductors website
Mauro Carvalho Chehabb04f2f72019-04-17 06:46:28 -030029
Jean Delvare3d849982009-12-09 20:36:05 +010030 * Analog Devices ADT7490
Mauro Carvalho Chehabb04f2f72019-04-17 06:46:28 -030031
Jean Delvare3d849982009-12-09 20:36:05 +010032 Prefix: 'adt7490'
Mauro Carvalho Chehabb04f2f72019-04-17 06:46:28 -030033
Jean Delvare3d849982009-12-09 20:36:05 +010034 Addresses scanned: I2C 0x2C, 0x2D, 0x2E
Mauro Carvalho Chehabb04f2f72019-04-17 06:46:28 -030035
Jean Delvare3d849982009-12-09 20:36:05 +010036 Datasheet: Publicly available at the On Semiconductors website
Jordan Crouse1c301fc2009-01-15 22:27:47 +010037
Jean Delvaref890c6a2009-12-09 20:36:02 +010038Authors:
Mauro Carvalho Chehabb04f2f72019-04-17 06:46:28 -030039 - Jordan Crouse
40 - Hans de Goede
41 - Darrick J. Wong (documentation)
42 - Jean Delvare
Jordan Crouse1c301fc2009-01-15 22:27:47 +010043
Jordan Crouse1c301fc2009-01-15 22:27:47 +010044
Jean Delvaref890c6a2009-12-09 20:36:02 +010045Description
46-----------
Jordan Crouse1c301fc2009-01-15 22:27:47 +010047
Jean Delvared8d2ee02009-12-09 20:36:08 +010048This driver implements support for the Analog Devices ADT7473, ADT7475,
49ADT7476 and ADT7490 chip family. The ADT7473 and ADT7475 differ only in
50minor details. The ADT7476 has additional features, including extra voltage
51measurement inputs and VID support. The ADT7490 also has additional
52features, including extra voltage measurement inputs and PECI support. All
53the supported chips will be collectively designed by the name "ADT747x" in
54the rest of this document.
Jordan Crouse1c301fc2009-01-15 22:27:47 +010055
Jean Delvaref890c6a2009-12-09 20:36:02 +010056The ADT747x uses the 2-wire interface compatible with the SMBus 2.0
57specification. Using an analog to digital converter it measures three (3)
Jean Delvare3d849982009-12-09 20:36:05 +010058temperatures and two (2) or more voltages. It has four (4) 16-bit counters
59for measuring fan speed. There are three (3) PWM outputs that can be used
Jean Delvaref890c6a2009-12-09 20:36:02 +010060to control fan speed.
Jordan Crouse1c301fc2009-01-15 22:27:47 +010061
Jean Delvaref890c6a2009-12-09 20:36:02 +010062A sophisticated control system for the PWM outputs is designed into the
63ADT747x that allows fan speed to be adjusted automatically based on any of the
64three temperature sensors. Each PWM output is individually adjustable and
65programmable. Once configured, the ADT747x will adjust the PWM outputs in
66response to the measured temperatures without further host intervention.
67This feature can also be disabled for manual control of the PWM's.
Jordan Crouse1c301fc2009-01-15 22:27:47 +010068
Jean Delvaref890c6a2009-12-09 20:36:02 +010069Each of the measured inputs (voltage, temperature, fan speed) has
70corresponding high/low limit values. The ADT747x will signal an ALARM if
71any measured value exceeds either limit.
Jordan Crouse1c301fc2009-01-15 22:27:47 +010072
Jean Delvaref890c6a2009-12-09 20:36:02 +010073The ADT747x samples all inputs continuously. The driver will not read
74the registers more often than once every other second. Further,
75configuration data is only read once per minute.
Jordan Crouse1c301fc2009-01-15 22:27:47 +010076
Jean Delvare3d849982009-12-09 20:36:05 +010077Chip Differences Summary
78------------------------
79
80ADT7473:
81 * 2 voltage inputs
82 * system acoustics optimizations (not implemented)
83
84ADT7475:
85 * 2 voltage inputs
86
Jean Delvared8d2ee02009-12-09 20:36:08 +010087ADT7476:
88 * 5 voltage inputs
Jean Delvare54fe4672009-12-09 20:36:08 +010089 * VID support
Jean Delvared8d2ee02009-12-09 20:36:08 +010090
Jean Delvare3d849982009-12-09 20:36:05 +010091ADT7490:
92 * 6 voltage inputs
93 * 1 Imon input (not implemented)
94 * PECI support (not implemented)
95 * 2 GPIO pins (not implemented)
96 * system acoustics optimizations (not implemented)
97
Chris Packhamf1af9322018-10-31 09:25:27 +130098Sysfs Mapping
99-------------
100
Mauro Carvalho Chehabb04f2f72019-04-17 06:46:28 -0300101==== =========== =========== ========= ==========
102in ADT7490 ADT7476 ADT7475 ADT7473
103==== =========== =========== ========= ==========
Chris Packhamf1af9322018-10-31 09:25:27 +1300104in0 2.5VIN (22) 2.5VIN (22) - -
105in1 VCCP (23) VCCP (23) VCCP (14) VCCP (14)
106in2 VCC (4) VCC (4) VCC (4) VCC (3)
107in3 5VIN (20) 5VIN (20)
108in4 12VIN (21) 12VIN (21)
109in5 VTT (8)
Mauro Carvalho Chehabb04f2f72019-04-17 06:46:28 -0300110==== =========== =========== ========= ==========
Chris Packhamf1af9322018-10-31 09:25:27 +1300111
Jean Delvaref890c6a2009-12-09 20:36:02 +0100112Special Features
113----------------
Jordan Crouse1c301fc2009-01-15 22:27:47 +0100114
Jean Delvaref890c6a2009-12-09 20:36:02 +0100115The ADT747x has a 10-bit ADC and can therefore measure temperatures
116with a resolution of 0.25 degree Celsius. Temperature readings can be
117configured either for two's complement format or "Offset 64" format,
118wherein 64 is subtracted from the raw value to get the temperature value.
Jordan Crouse1c301fc2009-01-15 22:27:47 +0100119
Jean Delvaref890c6a2009-12-09 20:36:02 +0100120The datasheet is very detailed and describes a procedure for determining
121an optimal configuration for the automatic PWM control.
Jordan Crouse1c301fc2009-01-15 22:27:47 +0100122
Jean Delvaref890c6a2009-12-09 20:36:02 +0100123Fan Speed Control
124-----------------
Jordan Crouse1c301fc2009-01-15 22:27:47 +0100125
Jean Delvaref890c6a2009-12-09 20:36:02 +0100126The driver exposes two trip points per PWM channel.
Jordan Crouse1c301fc2009-01-15 22:27:47 +0100127
Mauro Carvalho Chehabb04f2f72019-04-17 06:46:28 -0300128- point1: Set the PWM speed at the lower temperature bound
129- point2: Set the PWM speed at the higher temperature bound
Jordan Crouse1c301fc2009-01-15 22:27:47 +0100130
Jean Delvaref890c6a2009-12-09 20:36:02 +0100131The ADT747x will scale the PWM linearly between the lower and higher PWM
132speed when the temperature is between the two temperature boundaries.
133Temperature boundaries are associated to temperature channels rather than
134PWM outputs, and a given PWM output can be controlled by several temperature
135channels. As a result, the ADT747x may compute more than one PWM value
136for a channel at a given time, in which case the maximum value (fastest
137fan speed) is applied. PWM values range from 0 (off) to 255 (full speed).
Jordan Crouse1c301fc2009-01-15 22:27:47 +0100138
Jean Delvaref890c6a2009-12-09 20:36:02 +0100139Fan speed may be set to maximum when the temperature sensor associated with
140the PWM control exceeds temp#_max.
Jordan Crouse1c301fc2009-01-15 22:27:47 +0100141
Chris Packham1d58f5e2017-05-15 13:30:27 +1200142At Tmin - hysteresis the PWM output can either be off (0% duty cycle) or at the
143minimum (i.e. auto_point1_pwm). This behaviour can be configured using the
Mauro Carvalho Chehabb04f2f72019-04-17 06:46:28 -0300144`pwm[1-*]_stall_disable sysfs attribute`. A value of 0 means the fans will shut
Chris Packham1d58f5e2017-05-15 13:30:27 +1200145off. A value of 1 means the fans will run at auto_point1_pwm.
146
Chris Packham8f05bcc2017-05-15 13:30:28 +1200147The responsiveness of the ADT747x to temperature changes can be configured.
148This allows smoothing of the fan speed transition. To set the transition time
Mauro Carvalho Chehabb04f2f72019-04-17 06:46:28 -0300149set the value in ms in the `temp[1-*]_smoothing` sysfs attribute.
Chris Packham8f05bcc2017-05-15 13:30:28 +1200150
Jean Delvaref890c6a2009-12-09 20:36:02 +0100151Notes
152-----
Jordan Crouse1c301fc2009-01-15 22:27:47 +0100153
Jean Delvaref890c6a2009-12-09 20:36:02 +0100154The nVidia binary driver presents an ADT7473 chip via an on-card i2c bus.
155Unfortunately, they fail to set the i2c adapter class, so this driver may
156fail to find the chip until the nvidia driver is patched.