diff options
author | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-06-22 13:42:54 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-06-22 13:42:54 -0400 |
commit | 4e93d3e8859c834ee18dfd33051d24df8669d0c0 (patch) | |
tree | 13f5b39730857257b5040471618e9bcce30ed9cc /Documentation/i2c/chips/adm1026 | |
parent | a0cd30fd26a398c0c6e50c6760610d4529f17a84 (diff) | |
parent | 0087e5ef577d0d6e664be7ab4be513b6a482e7ec (diff) |
Merge master.kernel.org:/pub/scm/linux/kernel/git/gregkh/i2c-2.6
Diffstat (limited to 'Documentation/i2c/chips/adm1026')
-rw-r--r-- | Documentation/i2c/chips/adm1026 | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/Documentation/i2c/chips/adm1026 b/Documentation/i2c/chips/adm1026 new file mode 100644 index 000000000000..473c689d7924 --- /dev/null +++ b/Documentation/i2c/chips/adm1026 | |||
@@ -0,0 +1,93 @@ | |||
1 | Kernel driver adm1026 | ||
2 | ===================== | ||
3 | |||
4 | Supported chips: | ||
5 | * Analog Devices ADM1026 | ||
6 | Prefix: 'adm1026' | ||
7 | Addresses scanned: I2C 0x2c, 0x2d, 0x2e | ||
8 | Datasheet: Publicly available at the Analog Devices website | ||
9 | http://www.analog.com/en/prod/0,,766_825_ADM1026,00.html | ||
10 | |||
11 | Authors: | ||
12 | Philip Pokorny <ppokorny@penguincomputing.com> for Penguin Computing | ||
13 | Justin Thiessen <jthiessen@penguincomputing.com> | ||
14 | |||
15 | Module Parameters | ||
16 | ----------------- | ||
17 | |||
18 | * gpio_input: int array (min = 1, max = 17) | ||
19 | List of GPIO pins (0-16) to program as inputs | ||
20 | * gpio_output: int array (min = 1, max = 17) | ||
21 | List of GPIO pins (0-16) to program as outputs | ||
22 | * gpio_inverted: int array (min = 1, max = 17) | ||
23 | List of GPIO pins (0-16) to program as inverted | ||
24 | * gpio_normal: int array (min = 1, max = 17) | ||
25 | List of GPIO pins (0-16) to program as normal/non-inverted | ||
26 | * gpio_fan: int array (min = 1, max = 8) | ||
27 | List of GPIO pins (0-7) to program as fan tachs | ||
28 | |||
29 | |||
30 | Description | ||
31 | ----------- | ||
32 | |||
33 | This driver implements support for the Analog Devices ADM1026. Analog | ||
34 | Devices calls it a "complete thermal system management controller." | ||
35 | |||
36 | The ADM1026 implements three (3) temperature sensors, 17 voltage sensors, | ||
37 | 16 general purpose digital I/O lines, eight (8) fan speed sensors (8-bit), | ||
38 | an analog output and a PWM output along with limit, alarm and mask bits for | ||
39 | all of the above. There is even 8k bytes of EEPROM memory on chip. | ||
40 | |||
41 | Temperatures are measured in degrees Celsius. There are two external | ||
42 | sensor inputs and one internal sensor. Each sensor has a high and low | ||
43 | limit. If the limit is exceeded, an interrupt (#SMBALERT) can be | ||
44 | generated. The interrupts can be masked. In addition, there are over-temp | ||
45 | limits for each sensor. If this limit is exceeded, the #THERM output will | ||
46 | be asserted. The current temperature and limits have a resolution of 1 | ||
47 | degree. | ||
48 | |||
49 | Fan rotation speeds are reported in RPM (rotations per minute) but measured | ||
50 | in counts of a 22.5kHz internal clock. Each fan has a high limit which | ||
51 | corresponds to a minimum fan speed. If the limit is exceeded, an interrupt | ||
52 | can be generated. Each fan can be programmed to divide the reference clock | ||
53 | by 1, 2, 4 or 8. Not all RPM values can accurately be represented, so some | ||
54 | rounding is done. With a divider of 8, the slowest measurable speed of a | ||
55 | two pulse per revolution fan is 661 RPM. | ||
56 | |||
57 | There are 17 voltage sensors. An alarm is triggered if the voltage has | ||
58 | crossed a programmable minimum or maximum limit. Note that minimum in this | ||
59 | case always means 'closest to zero'; this is important for negative voltage | ||
60 | measurements. Several inputs have integrated attenuators so they can measure | ||
61 | higher voltages directly. 3.3V, 5V, 12V, -12V and battery voltage all have | ||
62 | dedicated inputs. There are several inputs scaled to 0-3V full-scale range | ||
63 | for SCSI terminator power. The remaining inputs are not scaled and have | ||
64 | a 0-2.5V full-scale range. A 2.5V or 1.82V reference voltage is provided | ||
65 | for negative voltage measurements. | ||
66 | |||
67 | If an alarm triggers, it will remain triggered until the hardware register | ||
68 | is read at least once. This means that the cause for the alarm may already | ||
69 | have disappeared! Note that in the current implementation, all hardware | ||
70 | registers are read whenever any data is read (unless it is less than 2.0 | ||
71 | seconds since the last update). This means that you can easily miss | ||
72 | once-only alarms. | ||
73 | |||
74 | The ADM1026 measures continuously. Analog inputs are measured about 4 | ||
75 | times a second. Fan speed measurement time depends on fan speed and | ||
76 | divisor. It can take as long as 1.5 seconds to measure all fan speeds. | ||
77 | |||
78 | The ADM1026 has the ability to automatically control fan speed based on the | ||
79 | temperature sensor inputs. Both the PWM output and the DAC output can be | ||
80 | used to control fan speed. Usually only one of these two outputs will be | ||
81 | used. Write the minimum PWM or DAC value to the appropriate control | ||
82 | register. Then set the low temperature limit in the tmin values for each | ||
83 | temperature sensor. The range of control is fixed at 20 °C, and the | ||
84 | largest difference between current and tmin of the temperature sensors sets | ||
85 | the control output. See the datasheet for several example circuits for | ||
86 | controlling fan speed with the PWM and DAC outputs. The fan speed sensors | ||
87 | do not have PWM compensation, so it is probably best to control the fan | ||
88 | voltage from the power lead rather than on the ground lead. | ||
89 | |||
90 | The datasheet shows an example application with VID signals attached to | ||
91 | GPIO lines. Unfortunately, the chip may not be connected to the VID lines | ||
92 | in this way. The driver assumes that the chips *is* connected this way to | ||
93 | get a VID voltage. | ||