hwmon: (thmc50) Fix a debug message
[linux-2.6-block.git] / Documentation / hwmon / sysfs-interface
CommitLineData
1da177e4
LT
1Naming and data format standards for sysfs files
2------------------------------------------------
3
4The libsensors library offers an interface to the raw sensors data
5through the sysfs interface. See libsensors documentation and source for
740e06a8
JD
6further information. As of writing this document, libsensors
7(from lm_sensors 2.8.3) is heavily chip-dependent. Adding or updating
1da177e4
LT
8support for any given chip requires modifying the library's code.
9This is because libsensors was written for the procfs interface
10older kernel modules were using, which wasn't standardized enough.
11Recent versions of libsensors (from lm_sensors 2.8.2 and later) have
12support for the sysfs interface, though.
13
740e06a8 14The new sysfs interface was designed to be as chip-independent as
1da177e4
LT
15possible.
16
17Note that motherboards vary widely in the connections to sensor chips.
18There is no standard that ensures, for example, that the second
19temperature sensor is connected to the CPU, or that the second fan is on
20the CPU. Also, some values reported by the chips need some computation
21before they make full sense. For example, most chips can only measure
22voltages between 0 and +4V. Other voltages are scaled back into that
23range using external resistors. Since the values of these resistors
24can change from motherboard to motherboard, the conversions cannot be
25hard coded into the driver and have to be done in user space.
26
740e06a8 27For this reason, even if we aim at a chip-independent libsensors, it will
1da177e4
LT
28still require a configuration file (e.g. /etc/sensors.conf) for proper
29values conversion, labeling of inputs and hiding of unused inputs.
30
31An alternative method that some programs use is to access the sysfs
32files directly. This document briefly describes the standards that the
33drivers follow, so that an application program can scan for entries and
34access this data in a simple and consistent way. That said, such programs
35will have to implement conversion, labeling and hiding of inputs. For
36this reason, it is still not recommended to bypass the library.
37
38If you are developing a userspace application please send us feedback on
39this standard.
40
41Note that this standard isn't completely established yet, so it is subject
740e06a8
JD
42to changes. If you are writing a new hardware monitoring driver those
43features can't seem to fit in this interface, please contact us with your
44extension proposal. Keep in mind that backward compatibility must be
45preserved.
1da177e4
LT
46
47Each chip gets its own directory in the sysfs /sys/devices tree. To
740e06a8
JD
48find all sensor chips, it is easier to follow the device symlinks from
49/sys/class/hwmon/hwmon*.
1da177e4 50
740e06a8 51All sysfs values are fixed point numbers.
1da177e4
LT
52
53There is only one value per file, unlike the older /proc specification.
54The common scheme for files naming is: <type><number>_<item>. Usual
55types for sensor chips are "in" (voltage), "temp" (temperature) and
56"fan" (fan). Usual items are "input" (measured value), "max" (high
57threshold, "min" (low threshold). Numbering usually starts from 1,
58except for voltages which start from 0 (because most data sheets use
59this). A number is always used for elements that can be present more
60than once, even if there is a single element of the given type on the
61specific chip. Other files do not refer to a specific element, so
62they have a simple name, and no number.
63
64Alarms are direct indications read from the chips. The drivers do NOT
65make comparisons of readings to thresholds. This allows violations
66between readings to be caught and alarmed. The exact definition of an
67alarm (for example, whether a threshold must be met or must be exceeded
68to cause an alarm) is chip-dependent.
69
70
71-------------------------------------------------------------------------
72
057bc350
RM
73[0-*] denotes any positive number starting from 0
74[1-*] denotes any positive number starting from 1
75RO read only value
76RW read/write value
77
78Read/write values may be read-only for some chips, depending on the
79hardware implementation.
80
176544dc
JD
81All entries (except name) are optional, and should only be created in a
82given driver if the chip has the feature.
83
84
85********
86* Name *
87********
88
89name The chip name.
90 This should be a short, lowercase string, not containing
91 spaces nor dashes, representing the chip name. This is
92 the only mandatory attribute.
93 I2C devices get this attribute created automatically.
94 RO
95
740e06a8 96
1da177e4
LT
97************
98* Voltages *
99************
100
057bc350 101in[0-*]_min Voltage min value.
1da177e4 102 Unit: millivolt
057bc350 103 RW
1da177e4 104
057bc350 105in[0-*]_max Voltage max value.
1da177e4 106 Unit: millivolt
057bc350 107 RW
1da177e4 108
057bc350 109in[0-*]_input Voltage input value.
1da177e4 110 Unit: millivolt
057bc350
RM
111 RO
112 Voltage measured on the chip pin.
1da177e4
LT
113 Actual voltage depends on the scaling resistors on the
114 motherboard, as recommended in the chip datasheet.
115 This varies by chip and by motherboard.
116 Because of this variation, values are generally NOT scaled
117 by the chip driver, and must be done by the application.
118 However, some drivers (notably lm87 and via686a)
057bc350 119 do scale, because of internal resistors built into a chip.
176544dc
JD
120 These drivers will output the actual voltage. Rule of
121 thumb: drivers should report the voltage values at the
122 "pins" of the chip.
123
124in[0-*]_label Suggested voltage channel label.
125 Text string
126 Should only be created if the driver has hints about what
127 this voltage channel is being used for, and user-space
128 doesn't. In all other cases, the label is provided by
129 user-space.
130 RO
1da177e4 131
057bc350 132cpu[0-*]_vid CPU core reference voltage.
1da177e4 133 Unit: millivolt
057bc350 134 RO
1da177e4
LT
135 Not always correct.
136
137vrm Voltage Regulator Module version number.
057bc350
RM
138 RW (but changing it should no more be necessary)
139 Originally the VRM standard version multiplied by 10, but now
140 an arbitrary number, as not all standards have a version
141 number.
1da177e4
LT
142 Affects the way the driver calculates the CPU core reference
143 voltage from the vid pins.
144
057bc350
RM
145Also see the Alarms section for status flags associated with voltages.
146
1da177e4
LT
147
148********
149* Fans *
150********
151
057bc350 152fan[1-*]_min Fan minimum value
1da177e4 153 Unit: revolution/min (RPM)
057bc350 154 RW
1da177e4 155
057bc350 156fan[1-*]_input Fan input value.
1da177e4 157 Unit: revolution/min (RPM)
057bc350 158 RO
1da177e4 159
057bc350 160fan[1-*]_div Fan divisor.
1da177e4 161 Integer value in powers of two (1, 2, 4, 8, 16, 32, 64, 128).
057bc350 162 RW
1da177e4
LT
163 Some chips only support values 1, 2, 4 and 8.
164 Note that this is actually an internal clock divisor, which
165 affects the measurable speed range, not the read value.
166
2dbc514a
JD
167fan[1-*]_target
168 Desired fan speed
169 Unit: revolution/min (RPM)
170 RW
171 Only makes sense if the chip supports closed-loop fan speed
172 control based on the measured fan speed.
173
176544dc
JD
174fan[1-*]_label Suggested fan channel label.
175 Text string
176 Should only be created if the driver has hints about what
177 this fan channel is being used for, and user-space doesn't.
178 In all other cases, the label is provided by user-space.
179 RO
180
057bc350
RM
181Also see the Alarms section for status flags associated with fans.
182
183
1da177e4
LT
184*******
185* PWM *
186*******
187
057bc350 188pwm[1-*] Pulse width modulation fan control.
1da177e4 189 Integer value in the range 0 to 255
057bc350 190 RW
1da177e4
LT
191 255 is max or 100%.
192
057bc350 193pwm[1-*]_enable
875f25d5
JD
194 Fan speed control method:
195 0: no fan speed control (i.e. fan at full speed)
196 1: manual fan speed control enabled (using pwm[1-*])
197 2+: automatic fan speed control enabled
f8d0c19a
JD
198 Check individual chip documentation files for automatic mode
199 details.
057bc350
RM
200 RW
201
f8d0c19a
JD
202pwm[1-*]_mode 0: DC mode (direct current)
203 1: PWM mode (pulse-width modulation)
204 RW
205
206pwm[1-*]_freq Base PWM frequency in Hz.
207 Only possibly available when pwmN_mode is PWM, but not always
208 present even then.
057bc350 209 RW
1da177e4
LT
210
211pwm[1-*]_auto_channels_temp
212 Select which temperature channels affect this PWM output in
213 auto mode. Bitfield, 1 is temp1, 2 is temp2, 4 is temp3 etc...
214 Which values are possible depend on the chip used.
057bc350 215 RW
1da177e4
LT
216
217pwm[1-*]_auto_point[1-*]_pwm
218pwm[1-*]_auto_point[1-*]_temp
219pwm[1-*]_auto_point[1-*]_temp_hyst
220 Define the PWM vs temperature curve. Number of trip points is
221 chip-dependent. Use this for chips which associate trip points
222 to PWM output channels.
057bc350 223 RW
1da177e4
LT
224
225OR
226
227temp[1-*]_auto_point[1-*]_pwm
228temp[1-*]_auto_point[1-*]_temp
229temp[1-*]_auto_point[1-*]_temp_hyst
230 Define the PWM vs temperature curve. Number of trip points is
231 chip-dependent. Use this for chips which associate trip points
232 to temperature channels.
057bc350 233 RW
1da177e4
LT
234
235
236****************
237* Temperatures *
238****************
239
057bc350 240temp[1-*]_type Sensor type selection.
b26f9330 241 Integers 1 to 6
057bc350 242 RW
1da177e4
LT
243 1: PII/Celeron Diode
244 2: 3904 transistor
245 3: thermal diode
b26f9330 246 4: thermistor
61db011d
RM
247 5: AMD AMDSI
248 6: Intel PECI
1da177e4
LT
249 Not all types are supported by all chips
250
057bc350 251temp[1-*]_max Temperature max value.
740e06a8 252 Unit: millidegree Celsius (or millivolt, see below)
057bc350 253 RW
1da177e4 254
057bc350 255temp[1-*]_min Temperature min value.
740e06a8 256 Unit: millidegree Celsius
057bc350 257 RW
1da177e4 258
057bc350 259temp[1-*]_max_hyst
1da177e4 260 Temperature hysteresis value for max limit.
740e06a8 261 Unit: millidegree Celsius
1da177e4
LT
262 Must be reported as an absolute temperature, NOT a delta
263 from the max value.
057bc350 264 RW
1da177e4 265
057bc350 266temp[1-*]_input Temperature input value.
740e06a8 267 Unit: millidegree Celsius
057bc350 268 RO
1da177e4 269
057bc350 270temp[1-*]_crit Temperature critical value, typically greater than
1da177e4 271 corresponding temp_max values.
740e06a8 272 Unit: millidegree Celsius
057bc350 273 RW
1da177e4 274
057bc350 275temp[1-*]_crit_hyst
1da177e4 276 Temperature hysteresis value for critical limit.
740e06a8 277 Unit: millidegree Celsius
1da177e4
LT
278 Must be reported as an absolute temperature, NOT a delta
279 from the critical value.
057bc350 280 RW
1da177e4 281
176544dc 282temp[1-*]_offset
59ac8367
HR
283 Temperature offset which is added to the temperature reading
284 by the chip.
285 Unit: millidegree Celsius
286 Read/Write value.
287
176544dc
JD
288temp[1-*]_label Suggested temperature channel label.
289 Text string
290 Should only be created if the driver has hints about what
291 this temperature channel is being used for, and user-space
292 doesn't. In all other cases, the label is provided by
293 user-space.
294 RO
1da177e4 295
740e06a8
JD
296Some chips measure temperature using external thermistors and an ADC, and
297report the temperature measurement as a voltage. Converting this voltage
298back to a temperature (or the other way around for limits) requires
299mathematical functions not available in the kernel, so the conversion
300must occur in user space. For these chips, all temp* files described
301above should contain values expressed in millivolt instead of millidegree
302Celsius. In other words, such temperature channels are handled as voltage
303channels by the driver.
304
057bc350
RM
305Also see the Alarms section for status flags associated with temperatures.
306
1da177e4
LT
307
308************
309* Currents *
310************
311
312Note that no known chip provides current measurements as of writing,
313so this part is theoretical, so to say.
314
057bc350 315curr[1-*]_max Current max value
1da177e4 316 Unit: milliampere
057bc350 317 RW
1da177e4 318
057bc350 319curr[1-*]_min Current min value.
1da177e4 320 Unit: milliampere
057bc350 321 RW
1da177e4 322
057bc350 323curr[1-*]_input Current input value
1da177e4 324 Unit: milliampere
057bc350 325 RO
1da177e4
LT
326
327
400b48ec
JD
328**********
329* Alarms *
330**********
331
332Each channel or limit may have an associated alarm file, containing a
333boolean value. 1 means than an alarm condition exists, 0 means no alarm.
334
335Usually a given chip will either use channel-related alarms, or
336limit-related alarms, not both. The driver should just reflect the hardware
337implementation.
338
057bc350
RM
339in[0-*]_alarm
340fan[1-*]_alarm
341temp[1-*]_alarm
400b48ec 342 Channel alarm
057bc350
RM
343 0: no alarm
344 1: alarm
345 RO
400b48ec
JD
346
347OR
348
057bc350
RM
349in[0-*]_min_alarm
350in[0-*]_max_alarm
351fan[1-*]_min_alarm
352temp[1-*]_min_alarm
353temp[1-*]_max_alarm
354temp[1-*]_crit_alarm
400b48ec 355 Limit alarm
057bc350
RM
356 0: no alarm
357 1: alarm
358 RO
400b48ec
JD
359
360Each input channel may have an associated fault file. This can be used
361to notify open diodes, unconnected fans etc. where the hardware
362supports it. When this boolean has value 1, the measurement for that
363channel should not be trusted.
364
7817a39e
JD
365in[0-*]_fault
366fan[1-*]_fault
367temp[1-*]_fault
400b48ec 368 Input fault condition
057bc350
RM
369 0: no fault occured
370 1: fault condition
371 RO
400b48ec
JD
372
373Some chips also offer the possibility to get beeped when an alarm occurs:
374
375beep_enable Master beep enable
057bc350
RM
376 0: no beeps
377 1: beeps
378 RW
400b48ec 379
057bc350
RM
380in[0-*]_beep
381fan[1-*]_beep
382temp[1-*]_beep
400b48ec 383 Channel beep
057bc350
RM
384 0: disable
385 1: enable
386 RW
400b48ec
JD
387
388In theory, a chip could provide per-limit beep masking, but no such chip
389was seen so far.
390
391Old drivers provided a different, non-standard interface to alarms and
392beeps. These interface files are deprecated, but will be kept around
393for compatibility reasons:
1da177e4
LT
394
395alarms Alarm bitmask.
057bc350 396 RO
1da177e4
LT
397 Integer representation of one to four bytes.
398 A '1' bit means an alarm.
399 Chips should be programmed for 'comparator' mode so that
400 the alarm will 'come back' after you read the register
401 if it is still valid.
402 Generally a direct representation of a chip's internal
403 alarm registers; there is no standard for the position
400b48ec
JD
404 of individual bits. For this reason, the use of this
405 interface file for new drivers is discouraged. Use
406 individual *_alarm and *_fault files instead.
1da177e4
LT
407 Bits are defined in kernel/include/sensors.h.
408
1da177e4 409beep_mask Bitmask for beep.
400b48ec
JD
410 Same format as 'alarms' with the same bit locations,
411 use discouraged for the same reason. Use individual
412 *_beep files instead.
057bc350 413 RW