Root/
1 | Kernel driver adm9240 |
2 | ===================== |
3 | |
4 | Supported chips: |
5 | * Analog Devices ADM9240 |
6 | Prefix: 'adm9240' |
7 | Addresses scanned: I2C 0x2c - 0x2f |
8 | Datasheet: Publicly available at the Analog Devices website |
9 | http://www.analog.com/UploadedFiles/Data_Sheets/79857778ADM9240_0.pdf |
10 | |
11 | * Dallas Semiconductor DS1780 |
12 | Prefix: 'ds1780' |
13 | Addresses scanned: I2C 0x2c - 0x2f |
14 | Datasheet: Publicly available at the Dallas Semiconductor (Maxim) website |
15 | http://pdfserv.maxim-ic.com/en/ds/DS1780.pdf |
16 | |
17 | * National Semiconductor LM81 |
18 | Prefix: 'lm81' |
19 | Addresses scanned: I2C 0x2c - 0x2f |
20 | Datasheet: Publicly available at the National Semiconductor website |
21 | http://www.national.com/ds.cgi/LM/LM81.pdf |
22 | |
23 | Authors: |
24 | Frodo Looijaard <frodol@dds.nl>, |
25 | Philip Edelbrock <phil@netroedge.com>, |
26 | Michiel Rook <michiel@grendelproject.nl>, |
27 | Grant Coady <gcoady.lk@gmail.com> with guidance |
28 | from Jean Delvare <khali@linux-fr.org> |
29 | |
30 | Interface |
31 | --------- |
32 | The I2C addresses listed above assume BIOS has not changed the |
33 | chip MSB 5-bit address. Each chip reports a unique manufacturer |
34 | identification code as well as the chip revision/stepping level. |
35 | |
36 | Description |
37 | ----------- |
38 | [From ADM9240] The ADM9240 is a complete system hardware monitor for |
39 | microprocessor-based systems, providing measurement and limit comparison |
40 | of up to four power supplies and two processor core voltages, plus |
41 | temperature, two fan speeds and chassis intrusion. Measured values can |
42 | be read out via an I2C-compatible serial System Management Bus, and values |
43 | for limit comparisons can be programmed in over the same serial bus. The |
44 | high speed successive approximation ADC allows frequent sampling of all |
45 | analog channels to ensure a fast interrupt response to any out-of-limit |
46 | measurement. |
47 | |
48 | The ADM9240, DS1780 and LM81 are register compatible, the following |
49 | details are common to the three chips. Chip differences are described |
50 | after this section. |
51 | |
52 | |
53 | Measurements |
54 | ------------ |
55 | The measurement cycle |
56 | |
57 | The adm9240 driver will take a measurement reading no faster than once |
58 | each two seconds. User-space may read sysfs interface faster than the |
59 | measurement update rate and will receive cached data from the most |
60 | recent measurement. |
61 | |
62 | ADM9240 has a very fast 320us temperature and voltage measurement cycle |
63 | with independent fan speed measurement cycles counting alternating rising |
64 | edges of the fan tacho inputs. |
65 | |
66 | DS1780 measurement cycle is about once per second including fan speed. |
67 | |
68 | LM81 measurement cycle is about once per 400ms including fan speed. |
69 | The LM81 12-bit extended temperature measurement mode is not supported. |
70 | |
71 | Temperature |
72 | ----------- |
73 | On chip temperature is reported as degrees Celsius as 9-bit signed data |
74 | with resolution of 0.5 degrees Celsius. High and low temperature limits |
75 | are 8-bit signed data with resolution of one degree Celsius. |
76 | |
77 | Temperature alarm is asserted once the temperature exceeds the high limit, |
78 | and is cleared when the temperature falls below the temp1_max_hyst value. |
79 | |
80 | Fan Speed |
81 | --------- |
82 | Two fan tacho inputs are provided, the ADM9240 gates an internal 22.5kHz |
83 | clock via a divider to an 8-bit counter. Fan speed (rpm) is calculated by: |
84 | |
85 | rpm = (22500 * 60) / (count * divider) |
86 | |
87 | Automatic fan clock divider |
88 | |
89 | * User sets 0 to fan_min limit |
90 | - low speed alarm is disabled |
91 | - fan clock divider not changed |
92 | - auto fan clock adjuster enabled for valid fan speed reading |
93 | |
94 | * User sets fan_min limit too low |
95 | - low speed alarm is enabled |
96 | - fan clock divider set to max |
97 | - fan_min set to register value 254 which corresponds |
98 | to 664 rpm on adm9240 |
99 | - low speed alarm will be asserted if fan speed is |
100 | less than minimum measurable speed |
101 | - auto fan clock adjuster disabled |
102 | |
103 | * User sets reasonable fan speed |
104 | - low speed alarm is enabled |
105 | - fan clock divider set to suit fan_min |
106 | - auto fan clock adjuster enabled: adjusts fan_min |
107 | |
108 | * User sets unreasonably high low fan speed limit |
109 | - resolution of the low speed limit may be reduced |
110 | - alarm will be asserted |
111 | - auto fan clock adjuster enabled: adjusts fan_min |
112 | |
113 | * fan speed may be displayed as zero until the auto fan clock divider |
114 | adjuster brings fan speed clock divider back into chip measurement |
115 | range, this will occur within a few measurement cycles. |
116 | |
117 | Analog Output |
118 | ------------- |
119 | An analog output provides a 0 to 1.25 volt signal intended for an external |
120 | fan speed amplifier circuit. The analog output is set to maximum value on |
121 | power up or reset. This doesn't do much on the test Intel SE440BX-2. |
122 | |
123 | Voltage Monitor |
124 | |
125 | Voltage (IN) measurement is internally scaled: |
126 | |
127 | nr label nominal maximum resolution |
128 | mV mV mV |
129 | 0 +2.5V 2500 3320 13.0 |
130 | 1 Vccp1 2700 3600 14.1 |
131 | 2 +3.3V 3300 4380 17.2 |
132 | 3 +5V 5000 6640 26.0 |
133 | 4 +12V 12000 15940 62.5 |
134 | 5 Vccp2 2700 3600 14.1 |
135 | |
136 | The reading is an unsigned 8-bit value, nominal voltage measurement is |
137 | represented by a reading of 192, being 3/4 of the measurement range. |
138 | |
139 | An alarm is asserted for any voltage going below or above the set limits. |
140 | |
141 | The driver reports and accepts voltage limits scaled to the above table. |
142 | |
143 | VID Monitor |
144 | ----------- |
145 | The chip has five inputs to read the 5-bit VID and reports the mV value |
146 | based on detected CPU type. |
147 | |
148 | Chassis Intrusion |
149 | ----------------- |
150 | An alarm is asserted when the CI pin goes active high. The ADM9240 |
151 | Datasheet has an example of an external temperature sensor driving |
152 | this pin. On an Intel SE440BX-2 the Chassis Intrusion header is |
153 | connected to a normally open switch. |
154 | |
155 | The ADM9240 provides an internal open drain on this line, and may output |
156 | a 20 ms active low pulse to reset an external Chassis Intrusion latch. |
157 | |
158 | Clear the CI latch by writing value 0 to the sysfs intrusion0_alarm file. |
159 | |
160 | Alarm flags reported as 16-bit word |
161 | |
162 | bit label comment |
163 | --- ------------- -------------------------- |
164 | 0 +2.5 V_Error high or low limit exceeded |
165 | 1 VCCP_Error high or low limit exceeded |
166 | 2 +3.3 V_Error high or low limit exceeded |
167 | 3 +5 V_Error high or low limit exceeded |
168 | 4 Temp_Error temperature error |
169 | 6 FAN1_Error fan low limit exceeded |
170 | 7 FAN2_Error fan low limit exceeded |
171 | 8 +12 V_Error high or low limit exceeded |
172 | 9 VCCP2_Error high or low limit exceeded |
173 | 12 Chassis_Error CI pin went high |
174 | |
175 | Remaining bits are reserved and thus undefined. It is important to note |
176 | that alarm bits may be cleared on read, user-space may latch alarms and |
177 | provide the end-user with a method to clear alarm memory. |
178 |
Branches:
ben-wpan
ben-wpan-stefan
javiroman/ks7010
jz-2.6.34
jz-2.6.34-rc5
jz-2.6.34-rc6
jz-2.6.34-rc7
jz-2.6.35
jz-2.6.36
jz-2.6.37
jz-2.6.38
jz-2.6.39
jz-3.0
jz-3.1
jz-3.11
jz-3.12
jz-3.13
jz-3.15
jz-3.16
jz-3.18-dt
jz-3.2
jz-3.3
jz-3.4
jz-3.5
jz-3.6
jz-3.6-rc2-pwm
jz-3.9
jz-3.9-clk
jz-3.9-rc8
jz47xx
jz47xx-2.6.38
master
Tags:
od-2011-09-04
od-2011-09-18
v2.6.34-rc5
v2.6.34-rc6
v2.6.34-rc7
v3.9