0001 Kernel driver adt7470
0002 =====================
0003
0004 Supported chips:
0005
0006 * Analog Devices ADT7470
0007
0008 Prefix: 'adt7470'
0009
0010 Addresses scanned: I2C 0x2C, 0x2E, 0x2F
0011
0012 Datasheet: Publicly available at the Analog Devices website
0013
0014 Author: Darrick J. Wong
0015
0016 Description
0017 -----------
0018
0019 This driver implements support for the Analog Devices ADT7470 chip. There may
0020 be other chips that implement this interface.
0021
0022 The ADT7470 uses the 2-wire interface compatible with the SMBus 2.0
0023 specification. Using an analog to digital converter it measures up to ten (10)
0024 external temperatures. It has four (4) 16-bit counters for measuring fan speed.
0025 There are four (4) PWM outputs that can be used to control fan speed.
0026
0027 A sophisticated control system for the PWM outputs is designed into the ADT7470
0028 that allows fan speed to be adjusted automatically based on any of the ten
0029 temperature sensors. Each PWM output is individually adjustable and
0030 programmable. Once configured, the ADT7470 will adjust the PWM outputs in
0031 response to the measured temperatures with further host intervention. This
0032 feature can also be disabled for manual control of the PWM's.
0033
0034 Each of the measured inputs (temperature, fan speed) has corresponding high/low
0035 limit values. The ADT7470 will signal an ALARM if any measured value exceeds
0036 either limit.
0037
0038 The ADT7470 samples all inputs continuously. A kernel thread is started up for
0039 the purpose of periodically querying the temperature sensors, thus allowing the
0040 automatic fan pwm control to set the fan speed. The driver will not read the
0041 registers more often than once every 5 seconds. Further, configuration data is
0042 only read once per minute.
0043
0044 Special Features
0045 ----------------
0046
0047 The ADT7470 has a 8-bit ADC and is capable of measuring temperatures with 1
0048 degC resolution.
0049
0050 The Analog Devices datasheet is very detailed and describes a procedure for
0051 determining an optimal configuration for the automatic PWM control.
0052
0053 Configuration Notes
0054 -------------------
0055
0056 Besides standard interfaces driver adds the following:
0057
0058 * PWM Control
0059
0060 * pwm#_auto_point1_pwm and pwm#_auto_point1_temp and
0061 * pwm#_auto_point2_pwm and pwm#_auto_point2_temp -
0062
0063 - point1: Set the pwm speed at a lower temperature bound.
0064 - point2: Set the pwm speed at a higher temperature bound.
0065
0066 The ADT7470 will scale the pwm between the lower and higher pwm speed when
0067 the temperature is between the two temperature boundaries. PWM values range
0068 from 0 (off) to 255 (full speed). Fan speed will be set to maximum when the
0069 temperature sensor associated with the PWM control exceeds
0070 pwm#_auto_point2_temp.
0071
0072 The driver also allows control of the PWM frequency:
0073
0074 * pwm1_freq
0075
0076 The PWM frequency is rounded to the nearest one of:
0077
0078 * 11.0 Hz
0079 * 14.7 Hz
0080 * 22.1 Hz
0081 * 29.4 Hz
0082 * 35.3 Hz
0083 * 44.1 Hz
0084 * 58.8 Hz
0085 * 88.2 Hz
0086 * 1.4 kHz
0087 * 22.5 kHz
0088
0089 Notes
0090 -----
0091
0092 The temperature inputs no longer need to be read periodically from userspace in
0093 order for the automatic pwm algorithm to run. This was the case for earlier
0094 versions of the driver.