-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
ACPI: fan: Expose fan performance state information
When _FPS indicates variable speed fan support, the thermal cooling device for fan shows max performance state count as "max_state" (greater than or equal to 1). But the thermal cooling device doesn't expose the properties of each performance state. This is not enough for smart fan control user space software, which also considers speed, power and noise level. This change exposes the properties of the fan performance states in the sysfs directory of the ACPI device representing the fan, that is /sys/bus/acpi/devices/devices/INT3404:00 or /sys/bus/platform/devices/PNP0C0B:00. For example: $ ls /sys/bus/acpi/devices/INT3404\:00 description path state0 state11 state4 state7 status hid physical_node state1 state2 state5 state8 subsystem modalias power state10 state3 state6 state9 uevent uid wakeup where each state* attribute lists the properties of a fan performance state in the following format: control_percent:trip_point:speed_rpm:noise_level_mdb:power_mw $ cat /sys/bus/acpi/devices/INT3404\:00/state10 95:0:11600:47500:4500 as documented in Documentation/admin-guide/acpi/fan_performance_states.rst While at it, return the correct error code from acpi_fan_probe() when acpi_fan_get_fps() or acpi_fan_get_fif() fails. Suggested-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> Signed-off-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com> [ rjw: Subject, changelog, documentation ] Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
- Loading branch information
Srinivas Pandruvada
authored and
Rafael J. Wysocki
committed
Dec 19, 2019
1 parent
d1eef1c
commit d19e470
Showing
3 changed files
with
151 additions
and
8 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,62 @@ | ||
.. SPDX-License-Identifier: GPL-2.0 | ||
=========================== | ||
ACPI Fan Performance States | ||
=========================== | ||
|
||
When the optional _FPS object is present under an ACPI device representing a | ||
fan (for example, PNP0C0B or INT3404), the ACPI fan driver creates additional | ||
"state*" attributes in the sysfs directory of the ACPI device in question. | ||
These attributes list properties of fan performance states. | ||
|
||
For more information on _FPS refer to the ACPI specification at: | ||
|
||
http://uefi.org/specifications | ||
|
||
For instance, the contents of the INT3404 ACPI device sysfs directory | ||
may look as follows:: | ||
|
||
$ ls -l /sys/bus/acpi/devices/INT3404:00/ | ||
total 0 | ||
... | ||
-r--r--r-- 1 root root 4096 Dec 13 20:38 state0 | ||
-r--r--r-- 1 root root 4096 Dec 13 20:38 state1 | ||
-r--r--r-- 1 root root 4096 Dec 13 20:38 state10 | ||
-r--r--r-- 1 root root 4096 Dec 13 20:38 state11 | ||
-r--r--r-- 1 root root 4096 Dec 13 20:38 state2 | ||
-r--r--r-- 1 root root 4096 Dec 13 20:38 state3 | ||
-r--r--r-- 1 root root 4096 Dec 13 20:38 state4 | ||
-r--r--r-- 1 root root 4096 Dec 13 20:38 state5 | ||
-r--r--r-- 1 root root 4096 Dec 13 20:38 state6 | ||
-r--r--r-- 1 root root 4096 Dec 13 20:38 state7 | ||
-r--r--r-- 1 root root 4096 Dec 13 20:38 state8 | ||
-r--r--r-- 1 root root 4096 Dec 13 20:38 state9 | ||
-r--r--r-- 1 root root 4096 Dec 13 01:00 status | ||
... | ||
|
||
where each of the "state*" files represents one performance state of the fan | ||
and contains a colon-separated list of 5 integer numbers (fields) with the | ||
following interpretation:: | ||
|
||
control_percent:trip_point_index:speed_rpm:noise_level_mdb:power_mw | ||
|
||
* ``control_percent``: The percent value to be used to set the fan speed to a | ||
specific level using the _FSL object (0-100). | ||
|
||
* ``trip_point_index``: The active cooling trip point number that corresponds | ||
to this performance state (0-9). | ||
|
||
* ``speed_rpm``: Speed of the fan in rotations per minute. | ||
|
||
* ``noise_level_mdb``: Audible noise emitted by the fan in this state in | ||
millidecibels. | ||
|
||
* ``power_mw``: Power draw of the fan in this state in milliwatts. | ||
|
||
For example:: | ||
|
||
$cat /sys/bus/acpi/devices/INT3404:00/state1 | ||
25:0:3200:12500:1250 | ||
|
||
When a given field is not populated or its value provided by the platform | ||
firmware is invalid, the "not-defined" string is shown instead of the value. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -12,3 +12,4 @@ the Linux ACPI support. | |
dsdt-override | ||
ssdt-overlays | ||
cppc_sysfs | ||
fan_performance_states |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters