Merge branch 'linux-next' of git://git.kernel.org/pub/scm/linux/kernel/git/konrad...
[linux-2.6-microblaze.git] / Documentation / hwmon / sysfs-interface.rst
1 Naming and data format standards for sysfs files
2 ================================================
3
4 The libsensors library offers an interface to the raw sensors data
5 through the sysfs interface. Since lm-sensors 3.0.0, libsensors is
6 completely chip-independent. It assumes that all the kernel drivers
7 implement the standard sysfs interface described in this document.
8 This makes adding or updating support for any given chip very easy, as
9 libsensors, and applications using it, do not need to be modified.
10 This is a major improvement compared to lm-sensors 2.
11
12 Note that motherboards vary widely in the connections to sensor chips.
13 There is no standard that ensures, for example, that the second
14 temperature sensor is connected to the CPU, or that the second fan is on
15 the CPU. Also, some values reported by the chips need some computation
16 before they make full sense. For example, most chips can only measure
17 voltages between 0 and +4V. Other voltages are scaled back into that
18 range using external resistors. Since the values of these resistors
19 can change from motherboard to motherboard, the conversions cannot be
20 hard coded into the driver and have to be done in user space.
21
22 For this reason, even if we aim at a chip-independent libsensors, it will
23 still require a configuration file (e.g. /etc/sensors.conf) for proper
24 values conversion, labeling of inputs and hiding of unused inputs.
25
26 An alternative method that some programs use is to access the sysfs
27 files directly. This document briefly describes the standards that the
28 drivers follow, so that an application program can scan for entries and
29 access this data in a simple and consistent way. That said, such programs
30 will have to implement conversion, labeling and hiding of inputs. For
31 this reason, it is still not recommended to bypass the library.
32
33 Each chip gets its own directory in the sysfs /sys/devices tree.  To
34 find all sensor chips, it is easier to follow the device symlinks from
35 `/sys/class/hwmon/hwmon*`.
36
37 Up to lm-sensors 3.0.0, libsensors looks for hardware monitoring attributes
38 in the "physical" device directory. Since lm-sensors 3.0.1, attributes found
39 in the hwmon "class" device directory are also supported. Complex drivers
40 (e.g. drivers for multifunction chips) may want to use this possibility to
41 avoid namespace pollution. The only drawback will be that older versions of
42 libsensors won't support the driver in question.
43
44 All sysfs values are fixed point numbers.
45
46 There is only one value per file, unlike the older /proc specification.
47 The common scheme for files naming is: <type><number>_<item>. Usual
48 types for sensor chips are "in" (voltage), "temp" (temperature) and
49 "fan" (fan). Usual items are "input" (measured value), "max" (high
50 threshold, "min" (low threshold). Numbering usually starts from 1,
51 except for voltages which start from 0 (because most data sheets use
52 this). A number is always used for elements that can be present more
53 than once, even if there is a single element of the given type on the
54 specific chip. Other files do not refer to a specific element, so
55 they have a simple name, and no number.
56
57 Alarms are direct indications read from the chips. The drivers do NOT
58 make comparisons of readings to thresholds. This allows violations
59 between readings to be caught and alarmed. The exact definition of an
60 alarm (for example, whether a threshold must be met or must be exceeded
61 to cause an alarm) is chip-dependent.
62
63 When setting values of hwmon sysfs attributes, the string representation of
64 the desired value must be written, note that strings which are not a number
65 are interpreted as 0! For more on how written strings are interpreted see the
66 "sysfs attribute writes interpretation" section at the end of this file.
67
68 Attribute access
69 ----------------
70
71 Hardware monitoring sysfs attributes are displayed by unrestricted userspace
72 applications. For this reason, all standard ABI attributes shall be world
73 readable. Writeable standard ABI attributes shall be writeable only for
74 privileged users.
75
76 -------------------------------------------------------------------------
77
78 ======= ===========================================
79 `[0-*]` denotes any positive number starting from 0
80 `[1-*]` denotes any positive number starting from 1
81 RO      read only value
82 WO      write only value
83 RW      read/write value
84 ======= ===========================================
85
86 Read/write values may be read-only for some chips, depending on the
87 hardware implementation.
88
89 All entries (except name) are optional, and should only be created in a
90 given driver if the chip has the feature.
91
92
93 *****************
94 Global attributes
95 *****************
96
97 `name`
98                 The chip name.
99                 This should be a short, lowercase string, not containing
100                 whitespace, dashes, or the wildcard character '*'.
101                 This attribute represents the chip name. It is the only
102                 mandatory attribute.
103                 I2C devices get this attribute created automatically.
104
105                 RO
106
107 `update_interval`
108                 The interval at which the chip will update readings.
109                 Unit: millisecond
110
111                 RW
112
113                 Some devices have a variable update rate or interval.
114                 This attribute can be used to change it to the desired value.
115
116
117 ********
118 Voltages
119 ********
120
121 `in[0-*]_min`
122                 Voltage min value.
123
124                 Unit: millivolt
125
126                 RW
127
128 `in[0-*]_lcrit`
129                 Voltage critical min value.
130
131                 Unit: millivolt
132
133                 RW
134
135                 If voltage drops to or below this limit, the system may
136                 take drastic action such as power down or reset. At the very
137                 least, it should report a fault.
138
139 `in[0-*]_max`
140                 Voltage max value.
141
142                 Unit: millivolt
143
144                 RW
145
146 `in[0-*]_crit`
147                 Voltage critical max value.
148
149                 Unit: millivolt
150
151                 RW
152
153                 If voltage reaches or exceeds this limit, the system may
154                 take drastic action such as power down or reset. At the very
155                 least, it should report a fault.
156
157 `in[0-*]_input`
158                 Voltage input value.
159
160                 Unit: millivolt
161
162                 RO
163
164                 Voltage measured on the chip pin.
165
166                 Actual voltage depends on the scaling resistors on the
167                 motherboard, as recommended in the chip datasheet.
168
169                 This varies by chip and by motherboard.
170                 Because of this variation, values are generally NOT scaled
171                 by the chip driver, and must be done by the application.
172                 However, some drivers (notably lm87 and via686a)
173                 do scale, because of internal resistors built into a chip.
174                 These drivers will output the actual voltage. Rule of
175                 thumb: drivers should report the voltage values at the
176                 "pins" of the chip.
177
178 `in[0-*]_average`
179                 Average voltage
180
181                 Unit: millivolt
182
183                 RO
184
185 `in[0-*]_lowest`
186                 Historical minimum voltage
187
188                 Unit: millivolt
189
190                 RO
191
192 `in[0-*]_highest`
193                 Historical maximum voltage
194
195                 Unit: millivolt
196
197                 RO
198
199 `in[0-*]_reset_history`
200                 Reset inX_lowest and inX_highest
201
202                 WO
203
204 `in_reset_history`
205                 Reset inX_lowest and inX_highest for all sensors
206
207                 WO
208
209 `in[0-*]_label`
210                 Suggested voltage channel label.
211
212                 Text string
213
214                 Should only be created if the driver has hints about what
215                 this voltage channel is being used for, and user-space
216                 doesn't. In all other cases, the label is provided by
217                 user-space.
218
219                 RO
220
221 `in[0-*]_enable`
222                 Enable or disable the sensors.
223
224                 When disabled the sensor read will return -ENODATA.
225
226                 - 1: Enable
227                 - 0: Disable
228
229                 RW
230
231 `cpu[0-*]_vid`
232                 CPU core reference voltage.
233
234                 Unit: millivolt
235
236                 RO
237
238                 Not always correct.
239
240 `vrm`
241                 Voltage Regulator Module version number.
242
243                 RW (but changing it should no more be necessary)
244
245                 Originally the VRM standard version multiplied by 10, but now
246                 an arbitrary number, as not all standards have a version
247                 number.
248
249                 Affects the way the driver calculates the CPU core reference
250                 voltage from the vid pins.
251
252 `in[0-*]_rated_min`
253                 Minimum rated voltage.
254
255                 Unit: millivolt
256
257                 RO
258
259 `in[0-*]_rated_max`
260                 Maximum rated voltage.
261
262                 Unit: millivolt
263
264                 RO
265
266 Also see the Alarms section for status flags associated with voltages.
267
268
269 ****
270 Fans
271 ****
272
273 `fan[1-*]_min`
274                 Fan minimum value
275
276                 Unit: revolution/min (RPM)
277
278                 RW
279
280 `fan[1-*]_max`
281                 Fan maximum value
282
283                 Unit: revolution/min (RPM)
284
285                 Only rarely supported by the hardware.
286                 RW
287
288 `fan[1-*]_input`
289                 Fan input value.
290
291                 Unit: revolution/min (RPM)
292
293                 RO
294
295 `fan[1-*]_div`
296                 Fan divisor.
297
298                 Integer value in powers of two (1, 2, 4, 8, 16, 32, 64, 128).
299
300                 RW
301
302                 Some chips only support values 1, 2, 4 and 8.
303                 Note that this is actually an internal clock divisor, which
304                 affects the measurable speed range, not the read value.
305
306 `fan[1-*]_pulses`
307                 Number of tachometer pulses per fan revolution.
308
309                 Integer value, typically between 1 and 4.
310
311                 RW
312
313                 This value is a characteristic of the fan connected to the
314                 device's input, so it has to be set in accordance with the fan
315                 model.
316
317                 Should only be created if the chip has a register to configure
318                 the number of pulses. In the absence of such a register (and
319                 thus attribute) the value assumed by all devices is 2 pulses
320                 per fan revolution.
321
322 `fan[1-*]_target`
323                 Desired fan speed
324
325                 Unit: revolution/min (RPM)
326
327                 RW
328
329                 Only makes sense if the chip supports closed-loop fan speed
330                 control based on the measured fan speed.
331
332 `fan[1-*]_label`
333                 Suggested fan channel label.
334
335                 Text string
336
337                 Should only be created if the driver has hints about what
338                 this fan channel is being used for, and user-space doesn't.
339                 In all other cases, the label is provided by user-space.
340
341                 RO
342
343 `fan[1-*]_enable`
344                 Enable or disable the sensors.
345
346                 When disabled the sensor read will return -ENODATA.
347
348                 - 1: Enable
349                 - 0: Disable
350
351                 RW
352
353 Also see the Alarms section for status flags associated with fans.
354
355
356 ***
357 PWM
358 ***
359
360 `pwm[1-*]`
361                 Pulse width modulation fan control.
362
363                 Integer value in the range 0 to 255
364
365                 RW
366
367                 255 is max or 100%.
368
369 `pwm[1-*]_enable`
370                 Fan speed control method:
371
372                 - 0: no fan speed control (i.e. fan at full speed)
373                 - 1: manual fan speed control enabled (using `pwm[1-*]`)
374                 - 2+: automatic fan speed control enabled
375
376                 Check individual chip documentation files for automatic mode
377                 details.
378
379                 RW
380
381 `pwm[1-*]_mode`
382                 - 0: DC mode (direct current)
383                 - 1: PWM mode (pulse-width modulation)
384
385                 RW
386
387 `pwm[1-*]_freq`
388                 Base PWM frequency in Hz.
389
390                 Only possibly available when pwmN_mode is PWM, but not always
391                 present even then.
392
393                 RW
394
395 `pwm[1-*]_auto_channels_temp`
396                 Select which temperature channels affect this PWM output in
397                 auto mode.
398
399                 Bitfield, 1 is temp1, 2 is temp2, 4 is temp3 etc...
400                 Which values are possible depend on the chip used.
401
402                 RW
403
404 `pwm[1-*]_auto_point[1-*]_pwm` / `pwm[1-*]_auto_point[1-*]_temp` / `pwm[1-*]_auto_point[1-*]_temp_hyst`
405                 Define the PWM vs temperature curve.
406
407                 Number of trip points is chip-dependent. Use this for chips
408                 which associate trip points to PWM output channels.
409
410                 RW
411
412 `temp[1-*]_auto_point[1-*]_pwm` / `temp[1-*]_auto_point[1-*]_temp` / `temp[1-*]_auto_point[1-*]_temp_hyst`
413                 Define the PWM vs temperature curve.
414
415                 Number of trip points is chip-dependent. Use this for chips
416                 which associate trip points to temperature channels.
417
418                 RW
419
420 There is a third case where trip points are associated to both PWM output
421 channels and temperature channels: the PWM values are associated to PWM
422 output channels while the temperature values are associated to temperature
423 channels. In that case, the result is determined by the mapping between
424 temperature inputs and PWM outputs. When several temperature inputs are
425 mapped to a given PWM output, this leads to several candidate PWM values.
426 The actual result is up to the chip, but in general the highest candidate
427 value (fastest fan speed) wins.
428
429
430 ************
431 Temperatures
432 ************
433
434 `temp[1-*]_type`
435                 Sensor type selection.
436
437                 Integers 1 to 6
438
439                 RW
440
441                 - 1: CPU embedded diode
442                 - 2: 3904 transistor
443                 - 3: thermal diode
444                 - 4: thermistor
445                 - 5: AMD AMDSI
446                 - 6: Intel PECI
447
448                 Not all types are supported by all chips
449
450 `temp[1-*]_max`
451                 Temperature max value.
452
453                 Unit: millidegree Celsius (or millivolt, see below)
454
455                 RW
456
457 `temp[1-*]_min`
458                 Temperature min value.
459
460                 Unit: millidegree Celsius
461
462                 RW
463
464 `temp[1-*]_max_hyst`
465                 Temperature hysteresis value for max limit.
466
467                 Unit: millidegree Celsius
468
469                 Must be reported as an absolute temperature, NOT a delta
470                 from the max value.
471
472                 RW
473
474 `temp[1-*]_min_hyst`
475                 Temperature hysteresis value for min limit.
476                 Unit: millidegree Celsius
477
478                 Must be reported as an absolute temperature, NOT a delta
479                 from the min value.
480
481                 RW
482
483 `temp[1-*]_input`
484          Temperature input value.
485
486                 Unit: millidegree Celsius
487
488                 RO
489
490 `temp[1-*]_crit`
491                 Temperature critical max value, typically greater than
492                 corresponding temp_max values.
493
494                 Unit: millidegree Celsius
495
496                 RW
497
498 `temp[1-*]_crit_hyst`
499                 Temperature hysteresis value for critical limit.
500
501                 Unit: millidegree Celsius
502
503                 Must be reported as an absolute temperature, NOT a delta
504                 from the critical value.
505
506                 RW
507
508 `temp[1-*]_emergency`
509                 Temperature emergency max value, for chips supporting more than
510                 two upper temperature limits. Must be equal or greater than
511                 corresponding temp_crit values.
512
513                 Unit: millidegree Celsius
514
515                 RW
516
517 `temp[1-*]_emergency_hyst`
518                 Temperature hysteresis value for emergency limit.
519
520                 Unit: millidegree Celsius
521
522                 Must be reported as an absolute temperature, NOT a delta
523                 from the emergency value.
524
525                 RW
526
527 `temp[1-*]_lcrit`
528                 Temperature critical min value, typically lower than
529                 corresponding temp_min values.
530
531                 Unit: millidegree Celsius
532
533                 RW
534
535 `temp[1-*]_lcrit_hyst`
536                 Temperature hysteresis value for critical min limit.
537
538                 Unit: millidegree Celsius
539
540                 Must be reported as an absolute temperature, NOT a delta
541                 from the critical min value.
542
543                 RW
544
545 `temp[1-*]_offset`
546                 Temperature offset which is added to the temperature reading
547                 by the chip.
548
549                 Unit: millidegree Celsius
550
551                 Read/Write value.
552
553 `temp[1-*]_label`
554                 Suggested temperature channel label.
555
556                 Text string
557
558                 Should only be created if the driver has hints about what
559                 this temperature channel is being used for, and user-space
560                 doesn't. In all other cases, the label is provided by
561                 user-space.
562
563                 RO
564
565 `temp[1-*]_lowest`
566                 Historical minimum temperature
567
568                 Unit: millidegree Celsius
569
570                 RO
571
572 `temp[1-*]_highest`
573                 Historical maximum temperature
574
575                 Unit: millidegree Celsius
576
577                 RO
578
579 `temp[1-*]_reset_history`
580                 Reset temp_lowest and temp_highest
581
582                 WO
583
584 `temp_reset_history`
585                 Reset temp_lowest and temp_highest for all sensors
586
587                 WO
588
589 `temp[1-*]_enable`
590                 Enable or disable the sensors.
591
592                 When disabled the sensor read will return -ENODATA.
593
594                 - 1: Enable
595                 - 0: Disable
596
597                 RW
598
599 `temp[1-*]_rated_min`
600                 Minimum rated temperature.
601
602                 Unit: millidegree Celsius
603
604                 RO
605
606 `temp[1-*]_rated_max`
607                 Maximum rated temperature.
608
609                 Unit: millidegree Celsius
610
611                 RO
612
613 Some chips measure temperature using external thermistors and an ADC, and
614 report the temperature measurement as a voltage. Converting this voltage
615 back to a temperature (or the other way around for limits) requires
616 mathematical functions not available in the kernel, so the conversion
617 must occur in user space. For these chips, all temp* files described
618 above should contain values expressed in millivolt instead of millidegree
619 Celsius. In other words, such temperature channels are handled as voltage
620 channels by the driver.
621
622 Also see the Alarms section for status flags associated with temperatures.
623
624
625 ********
626 Currents
627 ********
628
629 `curr[1-*]_max`
630                 Current max value
631
632                 Unit: milliampere
633
634                 RW
635
636 `curr[1-*]_min`
637                 Current min value.
638
639                 Unit: milliampere
640
641                 RW
642
643 `curr[1-*]_lcrit`
644                 Current critical low value
645
646                 Unit: milliampere
647
648                 RW
649
650 `curr[1-*]_crit`
651                 Current critical high value.
652
653                 Unit: milliampere
654
655                 RW
656
657 `curr[1-*]_input`
658                 Current input value
659
660                 Unit: milliampere
661
662                 RO
663
664 `curr[1-*]_average`
665                 Average current use
666
667                 Unit: milliampere
668
669                 RO
670
671 `curr[1-*]_lowest`
672                 Historical minimum current
673
674                 Unit: milliampere
675
676                 RO
677
678 `curr[1-*]_highest`
679                 Historical maximum current
680                 Unit: milliampere
681                 RO
682
683 `curr[1-*]_reset_history`
684                 Reset currX_lowest and currX_highest
685
686                 WO
687
688 `curr_reset_history`
689                 Reset currX_lowest and currX_highest for all sensors
690
691                 WO
692
693 `curr[1-*]_enable`
694                 Enable or disable the sensors.
695
696                 When disabled the sensor read will return -ENODATA.
697
698                 - 1: Enable
699                 - 0: Disable
700
701                 RW
702
703 `curr[1-*]_rated_min`
704                 Minimum rated current.
705
706                 Unit: milliampere
707
708                 RO
709
710 `curr[1-*]_rated_max`
711                 Maximum rated current.
712
713                 Unit: milliampere
714
715                 RO
716
717 Also see the Alarms section for status flags associated with currents.
718
719 *****
720 Power
721 *****
722
723 `power[1-*]_average`
724                                 Average power use
725
726                                 Unit: microWatt
727
728                                 RO
729
730 `power[1-*]_average_interval`
731                                 Power use averaging interval.  A poll
732                                 notification is sent to this file if the
733                                 hardware changes the averaging interval.
734
735                                 Unit: milliseconds
736
737                                 RW
738
739 `power[1-*]_average_interval_max`
740                                 Maximum power use averaging interval
741
742                                 Unit: milliseconds
743
744                                 RO
745
746 `power[1-*]_average_interval_min`
747                                 Minimum power use averaging interval
748
749                                 Unit: milliseconds
750
751                                 RO
752
753 `power[1-*]_average_highest`
754                                 Historical average maximum power use
755
756                                 Unit: microWatt
757
758                                 RO
759
760 `power[1-*]_average_lowest`
761                                 Historical average minimum power use
762
763                                 Unit: microWatt
764
765                                 RO
766
767 `power[1-*]_average_max`
768                                 A poll notification is sent to
769                                 `power[1-*]_average` when power use
770                                 rises above this value.
771
772                                 Unit: microWatt
773
774                                 RW
775
776 `power[1-*]_average_min`
777                                 A poll notification is sent to
778                                 `power[1-*]_average` when power use
779                                 sinks below this value.
780
781                                 Unit: microWatt
782
783                                 RW
784
785 `power[1-*]_input`
786                                 Instantaneous power use
787
788                                 Unit: microWatt
789
790                                 RO
791
792 `power[1-*]_input_highest`
793                                 Historical maximum power use
794
795                                 Unit: microWatt
796
797                                 RO
798
799 `power[1-*]_input_lowest`
800                                 Historical minimum power use
801
802                                 Unit: microWatt
803
804                                 RO
805
806 `power[1-*]_reset_history`
807                                 Reset input_highest, input_lowest,
808                                 average_highest and average_lowest.
809
810                                 WO
811
812 `power[1-*]_accuracy`
813                                 Accuracy of the power meter.
814
815                                 Unit: Percent
816
817                                 RO
818
819 `power[1-*]_cap`
820                                 If power use rises above this limit, the
821                                 system should take action to reduce power use.
822                                 A poll notification is sent to this file if the
823                                 cap is changed by the hardware.  The `*_cap`
824                                 files only appear if the cap is known to be
825                                 enforced by hardware.
826
827                                 Unit: microWatt
828
829                                 RW
830
831 `power[1-*]_cap_hyst`
832                                 Margin of hysteresis built around capping and
833                                 notification.
834
835                                 Unit: microWatt
836
837                                 RW
838
839 `power[1-*]_cap_max`
840                                 Maximum cap that can be set.
841
842                                 Unit: microWatt
843
844                                 RO
845
846 `power[1-*]_cap_min`
847                                 Minimum cap that can be set.
848
849                                 Unit: microWatt
850
851                                 RO
852
853 `power[1-*]_max`
854                                 Maximum power.
855
856                                 Unit: microWatt
857
858                                 RW
859
860 `power[1-*]_crit`
861                                 Critical maximum power.
862
863                                 If power rises to or above this limit, the
864                                 system is expected take drastic action to reduce
865                                 power consumption, such as a system shutdown or
866                                 a forced powerdown of some devices.
867
868                                 Unit: microWatt
869
870                                 RW
871
872 `power[1-*]_enable`
873                                 Enable or disable the sensors.
874
875                                 When disabled the sensor read will return
876                                 -ENODATA.
877
878                                 - 1: Enable
879                                 - 0: Disable
880
881                                 RW
882
883 `power[1-*]_rated_min`
884                                 Minimum rated power.
885
886                                 Unit: microWatt
887
888                                 RO
889
890 `power[1-*]_rated_max`
891                                 Maximum rated power.
892
893                                 Unit: microWatt
894
895                                 RO
896
897 Also see the Alarms section for status flags associated with power readings.
898
899 ******
900 Energy
901 ******
902
903 `energy[1-*]_input`
904                                 Cumulative energy use
905
906                                 Unit: microJoule
907
908                                 RO
909
910 `energy[1-*]_enable`
911                                 Enable or disable the sensors.
912
913                                 When disabled the sensor read will return
914                                 -ENODATA.
915
916                                 - 1: Enable
917                                 - 0: Disable
918
919                                 RW
920
921 ********
922 Humidity
923 ********
924
925 `humidity[1-*]_input`
926                                 Humidity
927
928                                 Unit: milli-percent (per cent mille, pcm)
929
930                                 RO
931
932
933 `humidity[1-*]_enable`
934                                 Enable or disable the sensors
935
936                                 When disabled the sensor read will return
937                                 -ENODATA.
938
939                                 - 1: Enable
940                                 - 0: Disable
941
942                                 RW
943
944 `humidity[1-*]_rated_min`
945                                 Minimum rated humidity.
946
947                                 Unit: milli-percent (per cent mille, pcm)
948
949                                 RO
950
951 `humidity[1-*]_rated_max`
952                                 Maximum rated humidity.
953
954                                 Unit: milli-percent (per cent mille, pcm)
955
956                                 RO
957
958 ******
959 Alarms
960 ******
961
962 Each channel or limit may have an associated alarm file, containing a
963 boolean value. 1 means than an alarm condition exists, 0 means no alarm.
964
965 Usually a given chip will either use channel-related alarms, or
966 limit-related alarms, not both. The driver should just reflect the hardware
967 implementation.
968
969 +-------------------------------+-----------------------+
970 | **`in[0-*]_alarm`,            | Channel alarm         |
971 | `curr[1-*]_alarm`,            |                       |
972 | `power[1-*]_alarm`,           |   - 0: no alarm       |
973 | `fan[1-*]_alarm`,             |   - 1: alarm          |
974 | `temp[1-*]_alarm`**           |                       |
975 |                               |   RO                  |
976 +-------------------------------+-----------------------+
977
978 **OR**
979
980 +-------------------------------+-----------------------+
981 | **`in[0-*]_min_alarm`,        | Limit alarm           |
982 | `in[0-*]_max_alarm`,          |                       |
983 | `in[0-*]_lcrit_alarm`,        |   - 0: no alarm       |
984 | `in[0-*]_crit_alarm`,         |   - 1: alarm          |
985 | `curr[1-*]_min_alarm`,        |                       |
986 | `curr[1-*]_max_alarm`,        | RO                    |
987 | `curr[1-*]_lcrit_alarm`,      |                       |
988 | `curr[1-*]_crit_alarm`,       |                       |
989 | `power[1-*]_cap_alarm`,       |                       |
990 | `power[1-*]_max_alarm`,       |                       |
991 | `power[1-*]_crit_alarm`,      |                       |
992 | `fan[1-*]_min_alarm`,         |                       |
993 | `fan[1-*]_max_alarm`,         |                       |
994 | `temp[1-*]_min_alarm`,        |                       |
995 | `temp[1-*]_max_alarm`,        |                       |
996 | `temp[1-*]_lcrit_alarm`,      |                       |
997 | `temp[1-*]_crit_alarm`,       |                       |
998 | `temp[1-*]_emergency_alarm`** |                       |
999 +-------------------------------+-----------------------+
1000
1001 Each input channel may have an associated fault file. This can be used
1002 to notify open diodes, unconnected fans etc. where the hardware
1003 supports it. When this boolean has value 1, the measurement for that
1004 channel should not be trusted.
1005
1006 `fan[1-*]_fault` / `temp[1-*]_fault`
1007                 Input fault condition
1008
1009                 - 0: no fault occurred
1010                 - 1: fault condition
1011
1012                 RO
1013
1014 Some chips also offer the possibility to get beeped when an alarm occurs:
1015
1016 `beep_enable`
1017                 Master beep enable
1018
1019                 - 0: no beeps
1020                 - 1: beeps
1021
1022                 RW
1023
1024 `in[0-*]_beep`, `curr[1-*]_beep`, `fan[1-*]_beep`, `temp[1-*]_beep`,
1025                 Channel beep
1026
1027                 - 0: disable
1028                 - 1: enable
1029
1030                 RW
1031
1032 In theory, a chip could provide per-limit beep masking, but no such chip
1033 was seen so far.
1034
1035 Old drivers provided a different, non-standard interface to alarms and
1036 beeps. These interface files are deprecated, but will be kept around
1037 for compatibility reasons:
1038
1039 `alarms`
1040                 Alarm bitmask.
1041
1042                 RO
1043
1044                 Integer representation of one to four bytes.
1045
1046                 A '1' bit means an alarm.
1047
1048                 Chips should be programmed for 'comparator' mode so that
1049                 the alarm will 'come back' after you read the register
1050                 if it is still valid.
1051
1052                 Generally a direct representation of a chip's internal
1053                 alarm registers; there is no standard for the position
1054                 of individual bits. For this reason, the use of this
1055                 interface file for new drivers is discouraged. Use
1056                 `individual *_alarm` and `*_fault` files instead.
1057                 Bits are defined in kernel/include/sensors.h.
1058
1059 `beep_mask`
1060                 Bitmask for beep.
1061                 Same format as 'alarms' with the same bit locations,
1062                 use discouraged for the same reason. Use individual
1063                 `*_beep` files instead.
1064                 RW
1065
1066
1067 *******************
1068 Intrusion detection
1069 *******************
1070
1071 `intrusion[0-*]_alarm`
1072                 Chassis intrusion detection
1073
1074                 - 0: OK
1075                 - 1: intrusion detected
1076
1077                 RW
1078
1079                 Contrary to regular alarm flags which clear themselves
1080                 automatically when read, this one sticks until cleared by
1081                 the user. This is done by writing 0 to the file. Writing
1082                 other values is unsupported.
1083
1084 `intrusion[0-*]_beep`
1085                 Chassis intrusion beep
1086
1087                 0: disable
1088                 1: enable
1089
1090                 RW
1091
1092 ****************************
1093 Average sample configuration
1094 ****************************
1095
1096 Devices allowing for reading {in,power,curr,temp}_average values may export
1097 attributes for controlling number of samples used to compute average.
1098
1099 +--------------+---------------------------------------------------------------+
1100 | samples      | Sets number of average samples for all types of measurements. |
1101 |              |                                                               |
1102 |              | RW                                                            |
1103 +--------------+---------------------------------------------------------------+
1104 | in_samples   | Sets number of average samples for specific type of           |
1105 | power_samples| measurements.                                                 |
1106 | curr_samples |                                                               |
1107 | temp_samples | Note that on some devices it won't be possible to set all of  |
1108 |              | them to different values so changing one might also change    |
1109 |              | some others.                                                  |
1110 |              |                                                               |
1111 |              | RW                                                            |
1112 +--------------+---------------------------------------------------------------+
1113
1114 sysfs attribute writes interpretation
1115 -------------------------------------
1116
1117 hwmon sysfs attributes always contain numbers, so the first thing to do is to
1118 convert the input to a number, there are 2 ways todo this depending whether
1119 the number can be negative or not::
1120
1121         unsigned long u = simple_strtoul(buf, NULL, 10);
1122         long s = simple_strtol(buf, NULL, 10);
1123
1124 With buf being the buffer with the user input being passed by the kernel.
1125 Notice that we do not use the second argument of strto[u]l, and thus cannot
1126 tell when 0 is returned, if this was really 0 or is caused by invalid input.
1127 This is done deliberately as checking this everywhere would add a lot of
1128 code to the kernel.
1129
1130 Notice that it is important to always store the converted value in an
1131 unsigned long or long, so that no wrap around can happen before any further
1132 checking.
1133
1134 After the input string is converted to an (unsigned) long, the value should be
1135 checked if its acceptable. Be careful with further conversions on the value
1136 before checking it for validity, as these conversions could still cause a wrap
1137 around before the check. For example do not multiply the result, and only
1138 add/subtract if it has been divided before the add/subtract.
1139
1140 What to do if a value is found to be invalid, depends on the type of the
1141 sysfs attribute that is being set. If it is a continuous setting like a
1142 tempX_max or inX_max attribute, then the value should be clamped to its
1143 limits using clamp_val(value, min_limit, max_limit). If it is not continuous
1144 like for example a tempX_type, then when an invalid value is written,
1145 -EINVAL should be returned.
1146
1147 Example1, temp1_max, register is a signed 8 bit value (-128 - 127 degrees)::
1148
1149         long v = simple_strtol(buf, NULL, 10) / 1000;
1150         v = clamp_val(v, -128, 127);
1151         /* write v to register */
1152
1153 Example2, fan divider setting, valid values 2, 4 and 8::
1154
1155         unsigned long v = simple_strtoul(buf, NULL, 10);
1156
1157         switch (v) {
1158         case 2: v = 1; break;
1159         case 4: v = 2; break;
1160         case 8: v = 3; break;
1161         default:
1162                 return -EINVAL;
1163         }
1164         /* write v to register */