Blame view
Documentation/hwmon/sysfs-interface
21.1 KB
1da177e4c Linux-2.6.12-rc2 |
1 2 3 4 |
Naming and data format standards for sysfs files ------------------------------------------------ The libsensors library offers an interface to the raw sensors data |
125ff8087 hwmon: Update the... |
5 6 7 8 9 10 |
through the sysfs interface. Since lm-sensors 3.0.0, libsensors is completely chip-independent. It assumes that all the kernel drivers implement the standard sysfs interface described in this document. This makes adding or updating support for any given chip very easy, as libsensors, and applications using it, do not need to be modified. This is a major improvement compared to lm-sensors 2. |
1da177e4c Linux-2.6.12-rc2 |
11 12 13 14 15 16 17 18 19 20 |
Note that motherboards vary widely in the connections to sensor chips. There is no standard that ensures, for example, that the second temperature sensor is connected to the CPU, or that the second fan is on the CPU. Also, some values reported by the chips need some computation before they make full sense. For example, most chips can only measure voltages between 0 and +4V. Other voltages are scaled back into that range using external resistors. Since the values of these resistors can change from motherboard to motherboard, the conversions cannot be hard coded into the driver and have to be done in user space. |
740e06a89 [PATCH] hwmon: Sy... |
21 |
For this reason, even if we aim at a chip-independent libsensors, it will |
1da177e4c Linux-2.6.12-rc2 |
22 23 24 25 26 27 28 29 30 |
still require a configuration file (e.g. /etc/sensors.conf) for proper values conversion, labeling of inputs and hiding of unused inputs. An alternative method that some programs use is to access the sysfs files directly. This document briefly describes the standards that the drivers follow, so that an application program can scan for entries and access this data in a simple and consistent way. That said, such programs will have to implement conversion, labeling and hiding of inputs. For this reason, it is still not recommended to bypass the library. |
1da177e4c Linux-2.6.12-rc2 |
31 |
Each chip gets its own directory in the sysfs /sys/devices tree. To |
740e06a89 [PATCH] hwmon: Sy... |
32 33 |
find all sensor chips, it is easier to follow the device symlinks from /sys/class/hwmon/hwmon*. |
1da177e4c Linux-2.6.12-rc2 |
34 |
|
125ff8087 hwmon: Update the... |
35 36 37 38 39 40 |
Up to lm-sensors 3.0.0, libsensors looks for hardware monitoring attributes in the "physical" device directory. Since lm-sensors 3.0.1, attributes found in the hwmon "class" device directory are also supported. Complex drivers (e.g. drivers for multifunction chips) may want to use this possibility to avoid namespace pollution. The only drawback will be that older versions of libsensors won't support the driver in question. |
740e06a89 [PATCH] hwmon: Sy... |
41 |
All sysfs values are fixed point numbers. |
1da177e4c Linux-2.6.12-rc2 |
42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
There is only one value per file, unlike the older /proc specification. The common scheme for files naming is: <type><number>_<item>. Usual types for sensor chips are "in" (voltage), "temp" (temperature) and "fan" (fan). Usual items are "input" (measured value), "max" (high threshold, "min" (low threshold). Numbering usually starts from 1, except for voltages which start from 0 (because most data sheets use this). A number is always used for elements that can be present more than once, even if there is a single element of the given type on the specific chip. Other files do not refer to a specific element, so they have a simple name, and no number. Alarms are direct indications read from the chips. The drivers do NOT make comparisons of readings to thresholds. This allows violations between readings to be caught and alarmed. The exact definition of an alarm (for example, whether a threshold must be met or must be exceeded to cause an alarm) is chip-dependent. |
2ed426330 hwmon: update sys... |
59 60 61 62 |
When setting values of hwmon sysfs attributes, the string representation of the desired value must be written, note that strings which are not a number are interpreted as 0! For more on how written strings are interpreted see the "sysfs attribute writes interpretation" section at the end of this file. |
1da177e4c Linux-2.6.12-rc2 |
63 64 |
------------------------------------------------------------------------- |
057bc3509 [PATCH] hwmon: Sy... |
65 66 67 |
[0-*] denotes any positive number starting from 0 [1-*] denotes any positive number starting from 1 RO read only value |
cd4e96c5d hwmon: (tmp401) A... |
68 |
WO write only value |
057bc3509 [PATCH] hwmon: Sy... |
69 70 71 72 |
RW read/write value Read/write values may be read-only for some chips, depending on the hardware implementation. |
176544dc5 hwmon: Update the... |
73 74 |
All entries (except name) are optional, and should only be created in a given driver if the chip has the feature. |
d2b847d48 hwmon: Add descri... |
75 76 77 |
********************* * Global attributes * ********************* |
176544dc5 hwmon: Update the... |
78 79 80 81 82 83 84 |
name The chip name. This should be a short, lowercase string, not containing spaces nor dashes, representing the chip name. This is the only mandatory attribute. I2C devices get this attribute created automatically. RO |
a51b9944a hwmon: (adm1031) ... |
85 |
update_interval The interval at which the chip will update readings. |
d2b847d48 hwmon: Add descri... |
86 87 |
Unit: millisecond RW |
a51b9944a hwmon: (adm1031) ... |
88 89 |
Some devices have a variable update rate or interval. This attribute can be used to change it to the desired value. |
d2b847d48 hwmon: Add descri... |
90 |
|
740e06a89 [PATCH] hwmon: Sy... |
91 |
|
1da177e4c Linux-2.6.12-rc2 |
92 93 94 |
************ * Voltages * ************ |
057bc3509 [PATCH] hwmon: Sy... |
95 |
in[0-*]_min Voltage min value. |
1da177e4c Linux-2.6.12-rc2 |
96 |
Unit: millivolt |
057bc3509 [PATCH] hwmon: Sy... |
97 |
RW |
1da177e4c Linux-2.6.12-rc2 |
98 |
|
f46fc8cd3 hwmon: Add 3 crit... |
99 100 101 102 103 104 |
in[0-*]_lcrit Voltage critical min value. Unit: millivolt RW If voltage drops to or below this limit, the system may take drastic action such as power down or reset. At the very least, it should report a fault. |
057bc3509 [PATCH] hwmon: Sy... |
105 |
in[0-*]_max Voltage max value. |
1da177e4c Linux-2.6.12-rc2 |
106 |
Unit: millivolt |
057bc3509 [PATCH] hwmon: Sy... |
107 |
RW |
1da177e4c Linux-2.6.12-rc2 |
108 |
|
f46fc8cd3 hwmon: Add 3 crit... |
109 110 111 112 113 114 |
in[0-*]_crit Voltage critical max value. Unit: millivolt RW If voltage reaches or exceeds this limit, the system may take drastic action such as power down or reset. At the very least, it should report a fault. |
057bc3509 [PATCH] hwmon: Sy... |
115 |
in[0-*]_input Voltage input value. |
1da177e4c Linux-2.6.12-rc2 |
116 |
Unit: millivolt |
057bc3509 [PATCH] hwmon: Sy... |
117 118 |
RO Voltage measured on the chip pin. |
1da177e4c Linux-2.6.12-rc2 |
119 120 121 122 123 124 |
Actual voltage depends on the scaling resistors on the motherboard, as recommended in the chip datasheet. This varies by chip and by motherboard. Because of this variation, values are generally NOT scaled by the chip driver, and must be done by the application. However, some drivers (notably lm87 and via686a) |
057bc3509 [PATCH] hwmon: Sy... |
125 |
do scale, because of internal resistors built into a chip. |
176544dc5 hwmon: Update the... |
126 127 128 |
These drivers will output the actual voltage. Rule of thumb: drivers should report the voltage values at the "pins" of the chip. |
0084e9faa hwmon: Add new at... |
129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 |
in[0-*]_average Average voltage Unit: millivolt RO in[0-*]_lowest Historical minimum voltage Unit: millivolt RO in[0-*]_highest Historical maximum voltage Unit: millivolt RO in[0-*]_reset_history Reset inX_lowest and inX_highest WO in_reset_history Reset inX_lowest and inX_highest for all sensors WO |
176544dc5 hwmon: Update the... |
151 152 153 154 155 156 157 |
in[0-*]_label Suggested voltage channel label. Text string Should only be created if the driver has hints about what this voltage channel is being used for, and user-space doesn't. In all other cases, the label is provided by user-space. RO |
1da177e4c Linux-2.6.12-rc2 |
158 |
|
057bc3509 [PATCH] hwmon: Sy... |
159 |
cpu[0-*]_vid CPU core reference voltage. |
1da177e4c Linux-2.6.12-rc2 |
160 |
Unit: millivolt |
057bc3509 [PATCH] hwmon: Sy... |
161 |
RO |
1da177e4c Linux-2.6.12-rc2 |
162 163 164 |
Not always correct. vrm Voltage Regulator Module version number. |
057bc3509 [PATCH] hwmon: Sy... |
165 166 167 168 |
RW (but changing it should no more be necessary) Originally the VRM standard version multiplied by 10, but now an arbitrary number, as not all standards have a version number. |
1da177e4c Linux-2.6.12-rc2 |
169 170 |
Affects the way the driver calculates the CPU core reference voltage from the vid pins. |
057bc3509 [PATCH] hwmon: Sy... |
171 |
Also see the Alarms section for status flags associated with voltages. |
1da177e4c Linux-2.6.12-rc2 |
172 173 174 175 |
******** * Fans * ******** |
057bc3509 [PATCH] hwmon: Sy... |
176 |
fan[1-*]_min Fan minimum value |
1da177e4c Linux-2.6.12-rc2 |
177 |
Unit: revolution/min (RPM) |
057bc3509 [PATCH] hwmon: Sy... |
178 |
RW |
1da177e4c Linux-2.6.12-rc2 |
179 |
|
d54d46247 hwmon: Update doc... |
180 181 182 183 |
fan[1-*]_max Fan maximum value Unit: revolution/min (RPM) Only rarely supported by the hardware. RW |
057bc3509 [PATCH] hwmon: Sy... |
184 |
fan[1-*]_input Fan input value. |
1da177e4c Linux-2.6.12-rc2 |
185 |
Unit: revolution/min (RPM) |
057bc3509 [PATCH] hwmon: Sy... |
186 |
RO |
1da177e4c Linux-2.6.12-rc2 |
187 |
|
057bc3509 [PATCH] hwmon: Sy... |
188 |
fan[1-*]_div Fan divisor. |
1da177e4c Linux-2.6.12-rc2 |
189 |
Integer value in powers of two (1, 2, 4, 8, 16, 32, 64, 128). |
057bc3509 [PATCH] hwmon: Sy... |
190 |
RW |
1da177e4c Linux-2.6.12-rc2 |
191 192 193 |
Some chips only support values 1, 2, 4 and 8. Note that this is actually an internal clock divisor, which affects the measurable speed range, not the read value. |
2d2e148a2 hwmon: Add tachom... |
194 195 196 197 198 199 200 201 202 203 |
fan[1-*]_pulses Number of tachometer pulses per fan revolution. Integer value, typically between 1 and 4. RW This value is a characteristic of the fan connected to the device's input, so it has to be set in accordance with the fan model. Should only be created if the chip has a register to configure the number of pulses. In the absence of such a register (and thus attribute) the value assumed by all devices is 2 pulses per fan revolution. |
2dbc514a2 hwmon: Document t... |
204 205 206 207 208 209 |
fan[1-*]_target Desired fan speed Unit: revolution/min (RPM) RW Only makes sense if the chip supports closed-loop fan speed control based on the measured fan speed. |
176544dc5 hwmon: Update the... |
210 211 212 213 214 215 |
fan[1-*]_label Suggested fan channel label. Text string Should only be created if the driver has hints about what this fan channel is being used for, and user-space doesn't. In all other cases, the label is provided by user-space. RO |
057bc3509 [PATCH] hwmon: Sy... |
216 |
Also see the Alarms section for status flags associated with fans. |
1da177e4c Linux-2.6.12-rc2 |
217 218 219 |
******* * PWM * ******* |
057bc3509 [PATCH] hwmon: Sy... |
220 |
pwm[1-*] Pulse width modulation fan control. |
1da177e4c Linux-2.6.12-rc2 |
221 |
Integer value in the range 0 to 255 |
057bc3509 [PATCH] hwmon: Sy... |
222 |
RW |
1da177e4c Linux-2.6.12-rc2 |
223 |
255 is max or 100%. |
057bc3509 [PATCH] hwmon: Sy... |
224 |
pwm[1-*]_enable |
875f25d5f hwmon: Improve th... |
225 226 227 228 |
Fan speed control method: 0: no fan speed control (i.e. fan at full speed) 1: manual fan speed control enabled (using pwm[1-*]) 2+: automatic fan speed control enabled |
f8d0c19a9 hwmon/it87: Add P... |
229 230 |
Check individual chip documentation files for automatic mode details. |
057bc3509 [PATCH] hwmon: Sy... |
231 |
RW |
f8d0c19a9 hwmon/it87: Add P... |
232 233 234 235 236 237 238 |
pwm[1-*]_mode 0: DC mode (direct current) 1: PWM mode (pulse-width modulation) RW pwm[1-*]_freq Base PWM frequency in Hz. Only possibly available when pwmN_mode is PWM, but not always present even then. |
057bc3509 [PATCH] hwmon: Sy... |
239 |
RW |
1da177e4c Linux-2.6.12-rc2 |
240 241 242 243 244 |
pwm[1-*]_auto_channels_temp Select which temperature channels affect this PWM output in auto mode. Bitfield, 1 is temp1, 2 is temp2, 4 is temp3 etc... Which values are possible depend on the chip used. |
057bc3509 [PATCH] hwmon: Sy... |
245 |
RW |
1da177e4c Linux-2.6.12-rc2 |
246 247 248 249 250 251 252 |
pwm[1-*]_auto_point[1-*]_pwm pwm[1-*]_auto_point[1-*]_temp pwm[1-*]_auto_point[1-*]_temp_hyst Define the PWM vs temperature curve. Number of trip points is chip-dependent. Use this for chips which associate trip points to PWM output channels. |
057bc3509 [PATCH] hwmon: Sy... |
253 |
RW |
1da177e4c Linux-2.6.12-rc2 |
254 |
|
1da177e4c Linux-2.6.12-rc2 |
255 256 257 258 259 260 |
temp[1-*]_auto_point[1-*]_pwm temp[1-*]_auto_point[1-*]_temp temp[1-*]_auto_point[1-*]_temp_hyst Define the PWM vs temperature curve. Number of trip points is chip-dependent. Use this for chips which associate trip points to temperature channels. |
057bc3509 [PATCH] hwmon: Sy... |
261 |
RW |
1da177e4c Linux-2.6.12-rc2 |
262 |
|
f7290e24e hwmon: Clarify au... |
263 264 265 266 267 268 269 270 |
There is a third case where trip points are associated to both PWM output channels and temperature channels: the PWM values are associated to PWM output channels while the temperature values are associated to temperature channels. In that case, the result is determined by the mapping between temperature inputs and PWM outputs. When several temperature inputs are mapped to a given PWM output, this leads to several candidate PWM values. The actual result is up to the chip, but in general the highest candidate value (fastest fan speed) wins. |
1da177e4c Linux-2.6.12-rc2 |
271 272 273 274 |
**************** * Temperatures * **************** |
057bc3509 [PATCH] hwmon: Sy... |
275 |
temp[1-*]_type Sensor type selection. |
b26f93309 hwmon: Don't expo... |
276 |
Integers 1 to 6 |
057bc3509 [PATCH] hwmon: Sy... |
277 |
RW |
5f8b1f877 hwmon: (sysfs-int... |
278 |
1: CPU embedded diode |
1da177e4c Linux-2.6.12-rc2 |
279 280 |
2: 3904 transistor 3: thermal diode |
b26f93309 hwmon: Don't expo... |
281 |
4: thermistor |
61db011d4 hwmon/w83793: Add... |
282 283 |
5: AMD AMDSI 6: Intel PECI |
1da177e4c Linux-2.6.12-rc2 |
284 |
Not all types are supported by all chips |
057bc3509 [PATCH] hwmon: Sy... |
285 |
temp[1-*]_max Temperature max value. |
740e06a89 [PATCH] hwmon: Sy... |
286 |
Unit: millidegree Celsius (or millivolt, see below) |
057bc3509 [PATCH] hwmon: Sy... |
287 |
RW |
1da177e4c Linux-2.6.12-rc2 |
288 |
|
057bc3509 [PATCH] hwmon: Sy... |
289 |
temp[1-*]_min Temperature min value. |
740e06a89 [PATCH] hwmon: Sy... |
290 |
Unit: millidegree Celsius |
057bc3509 [PATCH] hwmon: Sy... |
291 |
RW |
1da177e4c Linux-2.6.12-rc2 |
292 |
|
057bc3509 [PATCH] hwmon: Sy... |
293 |
temp[1-*]_max_hyst |
1da177e4c Linux-2.6.12-rc2 |
294 |
Temperature hysteresis value for max limit. |
740e06a89 [PATCH] hwmon: Sy... |
295 |
Unit: millidegree Celsius |
1da177e4c Linux-2.6.12-rc2 |
296 297 |
Must be reported as an absolute temperature, NOT a delta from the max value. |
057bc3509 [PATCH] hwmon: Sy... |
298 |
RW |
1da177e4c Linux-2.6.12-rc2 |
299 |
|
057bc3509 [PATCH] hwmon: Sy... |
300 |
temp[1-*]_input Temperature input value. |
740e06a89 [PATCH] hwmon: Sy... |
301 |
Unit: millidegree Celsius |
057bc3509 [PATCH] hwmon: Sy... |
302 |
RO |
1da177e4c Linux-2.6.12-rc2 |
303 |
|
f46fc8cd3 hwmon: Add 3 crit... |
304 |
temp[1-*]_crit Temperature critical max value, typically greater than |
1da177e4c Linux-2.6.12-rc2 |
305 |
corresponding temp_max values. |
740e06a89 [PATCH] hwmon: Sy... |
306 |
Unit: millidegree Celsius |
057bc3509 [PATCH] hwmon: Sy... |
307 |
RW |
1da177e4c Linux-2.6.12-rc2 |
308 |
|
057bc3509 [PATCH] hwmon: Sy... |
309 |
temp[1-*]_crit_hyst |
1da177e4c Linux-2.6.12-rc2 |
310 |
Temperature hysteresis value for critical limit. |
740e06a89 [PATCH] hwmon: Sy... |
311 |
Unit: millidegree Celsius |
1da177e4c Linux-2.6.12-rc2 |
312 313 |
Must be reported as an absolute temperature, NOT a delta from the critical value. |
057bc3509 [PATCH] hwmon: Sy... |
314 |
RW |
1da177e4c Linux-2.6.12-rc2 |
315 |
|
28e7438fa hwmon: Add tempX_... |
316 317 318 319 320 321 322 323 324 325 326 327 328 |
temp[1-*]_emergency Temperature emergency max value, for chips supporting more than two upper temperature limits. Must be equal or greater than corresponding temp_crit values. Unit: millidegree Celsius RW temp[1-*]_emergency_hyst Temperature hysteresis value for emergency limit. Unit: millidegree Celsius Must be reported as an absolute temperature, NOT a delta from the emergency value. RW |
f46fc8cd3 hwmon: Add 3 crit... |
329 330 331 332 |
temp[1-*]_lcrit Temperature critical min value, typically lower than corresponding temp_min values. Unit: millidegree Celsius RW |
176544dc5 hwmon: Update the... |
333 |
temp[1-*]_offset |
59ac83677 [PATCH] smsc47m19... |
334 335 336 337 |
Temperature offset which is added to the temperature reading by the chip. Unit: millidegree Celsius Read/Write value. |
176544dc5 hwmon: Update the... |
338 339 340 341 342 343 344 |
temp[1-*]_label Suggested temperature channel label. Text string Should only be created if the driver has hints about what this temperature channel is being used for, and user-space doesn't. In all other cases, the label is provided by user-space. RO |
1da177e4c Linux-2.6.12-rc2 |
345 |
|
cd4e96c5d hwmon: (tmp401) A... |
346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 |
temp[1-*]_lowest Historical minimum temperature Unit: millidegree Celsius RO temp[1-*]_highest Historical maximum temperature Unit: millidegree Celsius RO temp[1-*]_reset_history Reset temp_lowest and temp_highest WO temp_reset_history Reset temp_lowest and temp_highest for all sensors WO |
740e06a89 [PATCH] hwmon: Sy... |
363 364 365 366 367 368 369 370 |
Some chips measure temperature using external thermistors and an ADC, and report the temperature measurement as a voltage. Converting this voltage back to a temperature (or the other way around for limits) requires mathematical functions not available in the kernel, so the conversion must occur in user space. For these chips, all temp* files described above should contain values expressed in millivolt instead of millidegree Celsius. In other words, such temperature channels are handled as voltage channels by the driver. |
057bc3509 [PATCH] hwmon: Sy... |
371 |
Also see the Alarms section for status flags associated with temperatures. |
1da177e4c Linux-2.6.12-rc2 |
372 373 374 375 |
************ * Currents * ************ |
057bc3509 [PATCH] hwmon: Sy... |
376 |
curr[1-*]_max Current max value |
1da177e4c Linux-2.6.12-rc2 |
377 |
Unit: milliampere |
057bc3509 [PATCH] hwmon: Sy... |
378 |
RW |
1da177e4c Linux-2.6.12-rc2 |
379 |
|
057bc3509 [PATCH] hwmon: Sy... |
380 |
curr[1-*]_min Current min value. |
1da177e4c Linux-2.6.12-rc2 |
381 |
Unit: milliampere |
057bc3509 [PATCH] hwmon: Sy... |
382 |
RW |
1da177e4c Linux-2.6.12-rc2 |
383 |
|
581693b51 hwmon: sysfs ABI ... |
384 385 386 387 388 389 390 |
curr[1-*]_lcrit Current critical low value Unit: milliampere RW curr[1-*]_crit Current critical high value. Unit: milliampere RW |
057bc3509 [PATCH] hwmon: Sy... |
391 |
curr[1-*]_input Current input value |
1da177e4c Linux-2.6.12-rc2 |
392 |
Unit: milliampere |
057bc3509 [PATCH] hwmon: Sy... |
393 |
RO |
1da177e4c Linux-2.6.12-rc2 |
394 |
|
0084e9faa hwmon: Add new at... |
395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 |
curr[1-*]_average Average current use Unit: milliampere RO curr[1-*]_lowest Historical minimum current Unit: milliampere RO curr[1-*]_highest Historical maximum current Unit: milliampere RO curr[1-*]_reset_history Reset currX_lowest and currX_highest WO curr_reset_history Reset currX_lowest and currX_highest for all sensors WO |
581693b51 hwmon: sysfs ABI ... |
417 |
Also see the Alarms section for status flags associated with currents. |
38fb56a22 hwmon: Add power ... |
418 419 420 421 422 423 424 |
********* * Power * ********* power[1-*]_average Average power use Unit: microWatt RO |
115a57c5b hwmon: enhance th... |
425 426 427 |
power[1-*]_average_interval Power use averaging interval. A poll notification is sent to this file if the hardware changes the averaging interval. |
ddedc658f hwmon: Define sys... |
428 429 |
Unit: milliseconds RW |
115a57c5b hwmon: enhance th... |
430 431 432 433 434 435 436 |
power[1-*]_average_interval_max Maximum power use averaging interval Unit: milliseconds RO power[1-*]_average_interval_min Minimum power use averaging interval Unit: milliseconds RO |
38fb56a22 hwmon: Add power ... |
437 438 439 440 441 442 443 |
power[1-*]_average_highest Historical average maximum power use Unit: microWatt RO power[1-*]_average_lowest Historical average minimum power use Unit: microWatt RO |
115a57c5b hwmon: enhance th... |
444 445 446 447 448 449 450 451 452 453 454 |
power[1-*]_average_max A poll notification is sent to power[1-*]_average when power use rises above this value. Unit: microWatt RW power[1-*]_average_min A poll notification is sent to power[1-*]_average when power use sinks below this value. Unit: microWatt RW |
38fb56a22 hwmon: Add power ... |
455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 |
power[1-*]_input Instantaneous power use Unit: microWatt RO power[1-*]_input_highest Historical maximum power use Unit: microWatt RO power[1-*]_input_lowest Historical minimum power use Unit: microWatt RO power[1-*]_reset_history Reset input_highest, input_lowest, average_highest and average_lowest. WO |
1da177e4c Linux-2.6.12-rc2 |
470 |
|
115a57c5b hwmon: enhance th... |
471 472 473 |
power[1-*]_accuracy Accuracy of the power meter. Unit: Percent RO |
115a57c5b hwmon: enhance th... |
474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 |
power[1-*]_cap If power use rises above this limit, the system should take action to reduce power use. A poll notification is sent to this file if the cap is changed by the hardware. The *_cap files only appear if the cap is known to be enforced by hardware. Unit: microWatt RW power[1-*]_cap_hyst Margin of hysteresis built around capping and notification. Unit: microWatt RW power[1-*]_cap_max Maximum cap that can be set. Unit: microWatt RO power[1-*]_cap_min Minimum cap that can be set. Unit: microWatt RO |
581693b51 hwmon: sysfs ABI ... |
495 496 497 498 499 500 501 502 503 504 505 506 507 |
power[1-*]_max Maximum power. Unit: microWatt RW power[1-*]_crit Critical maximum power. If power rises to or above this limit, the system is expected take drastic action to reduce power consumption, such as a system shutdown or a forced powerdown of some devices. Unit: microWatt RW Also see the Alarms section for status flags associated with power readings. |
400b48ecd [PATCH] hwmon: Ad... |
508 |
********** |
ddedc658f hwmon: Define sys... |
509 510 511 512 513 514 |
* Energy * ********** energy[1-*]_input Cumulative energy use Unit: microJoule RO |
ec1992094 hwmon: Define a s... |
515 |
|
c6c2c1636 hwmon: Add humidi... |
516 517 518 519 520 521 522 |
************ * Humidity * ************ humidity[1-*]_input Humidity Unit: milli-percent (per cent mille, pcm) RO |
ddedc658f hwmon: Define sys... |
523 |
********** |
400b48ecd [PATCH] hwmon: Ad... |
524 525 526 527 528 529 530 531 532 |
* Alarms * ********** Each channel or limit may have an associated alarm file, containing a boolean value. 1 means than an alarm condition exists, 0 means no alarm. Usually a given chip will either use channel-related alarms, or limit-related alarms, not both. The driver should just reflect the hardware implementation. |
057bc3509 [PATCH] hwmon: Sy... |
533 |
in[0-*]_alarm |
e04a715e4 hwmon: Add 4 curr... |
534 |
curr[1-*]_alarm |
581693b51 hwmon: sysfs ABI ... |
535 |
power[1-*]_alarm |
057bc3509 [PATCH] hwmon: Sy... |
536 537 |
fan[1-*]_alarm temp[1-*]_alarm |
400b48ecd [PATCH] hwmon: Ad... |
538 |
Channel alarm |
057bc3509 [PATCH] hwmon: Sy... |
539 540 541 |
0: no alarm 1: alarm RO |
400b48ecd [PATCH] hwmon: Ad... |
542 543 |
OR |
057bc3509 [PATCH] hwmon: Sy... |
544 545 |
in[0-*]_min_alarm in[0-*]_max_alarm |
581693b51 hwmon: sysfs ABI ... |
546 547 |
in[0-*]_lcrit_alarm in[0-*]_crit_alarm |
e04a715e4 hwmon: Add 4 curr... |
548 549 |
curr[1-*]_min_alarm curr[1-*]_max_alarm |
581693b51 hwmon: sysfs ABI ... |
550 551 552 553 554 |
curr[1-*]_lcrit_alarm curr[1-*]_crit_alarm power[1-*]_cap_alarm power[1-*]_max_alarm power[1-*]_crit_alarm |
057bc3509 [PATCH] hwmon: Sy... |
555 |
fan[1-*]_min_alarm |
d54d46247 hwmon: Update doc... |
556 |
fan[1-*]_max_alarm |
057bc3509 [PATCH] hwmon: Sy... |
557 558 |
temp[1-*]_min_alarm temp[1-*]_max_alarm |
581693b51 hwmon: sysfs ABI ... |
559 |
temp[1-*]_lcrit_alarm |
057bc3509 [PATCH] hwmon: Sy... |
560 |
temp[1-*]_crit_alarm |
28e7438fa hwmon: Add tempX_... |
561 |
temp[1-*]_emergency_alarm |
400b48ecd [PATCH] hwmon: Ad... |
562 |
Limit alarm |
057bc3509 [PATCH] hwmon: Sy... |
563 564 565 |
0: no alarm 1: alarm RO |
400b48ecd [PATCH] hwmon: Ad... |
566 567 568 569 570 |
Each input channel may have an associated fault file. This can be used to notify open diodes, unconnected fans etc. where the hardware supports it. When this boolean has value 1, the measurement for that channel should not be trusted. |
7817a39e6 hwmon: Fault file... |
571 572 |
fan[1-*]_fault temp[1-*]_fault |
400b48ecd [PATCH] hwmon: Ad... |
573 |
Input fault condition |
25985edce Fix common misspe... |
574 |
0: no fault occurred |
057bc3509 [PATCH] hwmon: Sy... |
575 576 |
1: fault condition RO |
400b48ecd [PATCH] hwmon: Ad... |
577 578 579 580 |
Some chips also offer the possibility to get beeped when an alarm occurs: beep_enable Master beep enable |
057bc3509 [PATCH] hwmon: Sy... |
581 582 583 |
0: no beeps 1: beeps RW |
400b48ecd [PATCH] hwmon: Ad... |
584 |
|
057bc3509 [PATCH] hwmon: Sy... |
585 |
in[0-*]_beep |
e04a715e4 hwmon: Add 4 curr... |
586 |
curr[1-*]_beep |
057bc3509 [PATCH] hwmon: Sy... |
587 588 |
fan[1-*]_beep temp[1-*]_beep |
400b48ecd [PATCH] hwmon: Ad... |
589 |
Channel beep |
057bc3509 [PATCH] hwmon: Sy... |
590 591 592 |
0: disable 1: enable RW |
400b48ecd [PATCH] hwmon: Ad... |
593 594 595 596 597 598 599 |
In theory, a chip could provide per-limit beep masking, but no such chip was seen so far. Old drivers provided a different, non-standard interface to alarms and beeps. These interface files are deprecated, but will be kept around for compatibility reasons: |
1da177e4c Linux-2.6.12-rc2 |
600 601 |
alarms Alarm bitmask. |
057bc3509 [PATCH] hwmon: Sy... |
602 |
RO |
1da177e4c Linux-2.6.12-rc2 |
603 604 605 606 607 608 609 |
Integer representation of one to four bytes. A '1' bit means an alarm. Chips should be programmed for 'comparator' mode so that the alarm will 'come back' after you read the register if it is still valid. Generally a direct representation of a chip's internal alarm registers; there is no standard for the position |
400b48ecd [PATCH] hwmon: Ad... |
610 611 612 |
of individual bits. For this reason, the use of this interface file for new drivers is discouraged. Use individual *_alarm and *_fault files instead. |
1da177e4c Linux-2.6.12-rc2 |
613 |
Bits are defined in kernel/include/sensors.h. |
1da177e4c Linux-2.6.12-rc2 |
614 |
beep_mask Bitmask for beep. |
400b48ecd [PATCH] hwmon: Ad... |
615 616 617 |
Same format as 'alarms' with the same bit locations, use discouraged for the same reason. Use individual *_beep files instead. |
057bc3509 [PATCH] hwmon: Sy... |
618 |
RW |
2ed426330 hwmon: update sys... |
619 |
|
ec1992094 hwmon: Define a s... |
620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 |
*********************** * Intrusion detection * *********************** intrusion[0-*]_alarm Chassis intrusion detection 0: OK 1: intrusion detected RW Contrary to regular alarm flags which clear themselves automatically when read, this one sticks until cleared by the user. This is done by writing 0 to the file. Writing other values is unsupported. intrusion[0-*]_beep Chassis intrusion beep 0: disable 1: enable RW |
2ed426330 hwmon: update sys... |
639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 |
sysfs attribute writes interpretation ------------------------------------- hwmon sysfs attributes always contain numbers, so the first thing to do is to convert the input to a number, there are 2 ways todo this depending whether the number can be negative or not: unsigned long u = simple_strtoul(buf, NULL, 10); long s = simple_strtol(buf, NULL, 10); With buf being the buffer with the user input being passed by the kernel. Notice that we do not use the second argument of strto[u]l, and thus cannot tell when 0 is returned, if this was really 0 or is caused by invalid input. This is done deliberately as checking this everywhere would add a lot of code to the kernel. Notice that it is important to always store the converted value in an unsigned long or long, so that no wrap around can happen before any further checking. After the input string is converted to an (unsigned) long, the value should be checked if its acceptable. Be careful with further conversions on the value before checking it for validity, as these conversions could still cause a wrap around before the check. For example do not multiply the result, and only add/subtract if it has been divided before the add/subtract. What to do if a value is found to be invalid, depends on the type of the sysfs attribute that is being set. If it is a continuous setting like a tempX_max or inX_max attribute, then the value should be clamped to its limits using SENSORS_LIMIT(value, min_limit, max_limit). If it is not continuous like for example a tempX_type, then when an invalid value is written, -EINVAL should be returned. Example1, temp1_max, register is a signed 8 bit value (-128 - 127 degrees): |
5fbea518d hwmon: Fix the co... |
672 673 674 675 |
long v = simple_strtol(buf, NULL, 10) / 1000; v = SENSORS_LIMIT(v, -128, 127); /* write v to register */ |
2ed426330 hwmon: update sys... |
676 677 |
Example2, fan divider setting, valid values 2, 4 and 8: |
5fbea518d hwmon: Fix the co... |
678 679 680 681 682 683 684 685 686 687 688 |
unsigned long v = simple_strtoul(buf, NULL, 10); switch (v) { case 2: v = 1; break; case 4: v = 2; break; case 8: v = 3; break; default: return -EINVAL; } /* write v to register */ |