1.. SPDX-License-Identifier: GPL-2.0
2
3===========================
4ACPI Fan Performance States
5===========================
6
7When the optional _FPS object is present under an ACPI device representing a
8fan (for example, PNP0C0B or INT3404), the ACPI fan driver creates additional
9"state*" attributes in the sysfs directory of the ACPI device in question.
10These attributes list properties of fan performance states.
11
12For more information on _FPS refer to the ACPI specification at:
13
14http://uefi.org/specifications
15
16For instance, the contents of the INT3404 ACPI device sysfs directory
17may look as follows::
18
19 $ ls -l /sys/bus/acpi/devices/INT3404:00/
20 total 0
21 ...
22 -r--r--r-- 1 root root 4096 Dec 13 20:38 state0
23 -r--r--r-- 1 root root 4096 Dec 13 20:38 state1
24 -r--r--r-- 1 root root 4096 Dec 13 20:38 state10
25 -r--r--r-- 1 root root 4096 Dec 13 20:38 state11
26 -r--r--r-- 1 root root 4096 Dec 13 20:38 state2
27 -r--r--r-- 1 root root 4096 Dec 13 20:38 state3
28 -r--r--r-- 1 root root 4096 Dec 13 20:38 state4
29 -r--r--r-- 1 root root 4096 Dec 13 20:38 state5
30 -r--r--r-- 1 root root 4096 Dec 13 20:38 state6
31 -r--r--r-- 1 root root 4096 Dec 13 20:38 state7
32 -r--r--r-- 1 root root 4096 Dec 13 20:38 state8
33 -r--r--r-- 1 root root 4096 Dec 13 20:38 state9
34 -r--r--r-- 1 root root 4096 Dec 13 01:00 status
35 ...
36
37where each of the "state*" files represents one performance state of the fan
38and contains a colon-separated list of 5 integer numbers (fields) with the
39following interpretation::
40
41  control_percent:trip_point_index:speed_rpm:noise_level_mdb:power_mw
42
43* ``control_percent``: The percent value to be used to set the fan speed to a
44  specific level using the _FSL object (0-100).
45
46* ``trip_point_index``: The active cooling trip point number that corresponds
47  to this performance state (0-9).
48
49* ``speed_rpm``: Speed of the fan in rotations per minute.
50
51* ``noise_level_mdb``: Audible noise emitted by the fan in this state in
52  millidecibels.
53
54* ``power_mw``: Power draw of the fan in this state in milliwatts.
55
56For example::
57
58 $cat /sys/bus/acpi/devices/INT3404:00/state1
59 25:0:3200:12500:1250
60
61When a given field is not populated or its value provided by the platform
62firmware is invalid, the "not-defined" string is shown instead of the value.
63
64ACPI Fan Fine Grain Control
65=============================
66
67When _FIF object specifies support for fine grain control, then fan speed
68can be set from 0 to 100% with the recommended minimum "step size" via
69_FSL object. User can adjust fan speed using thermal sysfs cooling device.
70
71Here use can look at fan performance states for a reference speed (speed_rpm)
72and set it by changing cooling device cur_state. If the fine grain control
73is supported then user can also adjust to some other speeds which are
74not defined in the performance states.
75
76The support of fine grain control is presented via sysfs attribute
77"fine_grain_control". If fine grain control is present, this attribute
78will show "1" otherwise "0".
79
80This sysfs attribute is presented in the same directory as performance states.
81
82ACPI Fan Performance Feedback
83=============================
84
85The optional _FST object provides status information for the fan device.
86This includes field to provide current fan speed in revolutions per minute
87at which the fan is rotating.
88
89This speed is presented in the sysfs using the attribute "fan_speed_rpm",
90in the same directory as performance states.
91