1d19e470bSSrinivas Pandruvada.. SPDX-License-Identifier: GPL-2.0 2d19e470bSSrinivas Pandruvada 3d19e470bSSrinivas Pandruvada=========================== 4d19e470bSSrinivas PandruvadaACPI Fan Performance States 5d19e470bSSrinivas Pandruvada=========================== 6d19e470bSSrinivas Pandruvada 7d19e470bSSrinivas PandruvadaWhen the optional _FPS object is present under an ACPI device representing a 8d19e470bSSrinivas Pandruvadafan (for example, PNP0C0B or INT3404), the ACPI fan driver creates additional 9d19e470bSSrinivas Pandruvada"state*" attributes in the sysfs directory of the ACPI device in question. 10d19e470bSSrinivas PandruvadaThese attributes list properties of fan performance states. 11d19e470bSSrinivas Pandruvada 12d19e470bSSrinivas PandruvadaFor more information on _FPS refer to the ACPI specification at: 13d19e470bSSrinivas Pandruvada 14d19e470bSSrinivas Pandruvadahttp://uefi.org/specifications 15d19e470bSSrinivas Pandruvada 16d19e470bSSrinivas PandruvadaFor instance, the contents of the INT3404 ACPI device sysfs directory 17d19e470bSSrinivas Pandruvadamay look as follows:: 18d19e470bSSrinivas Pandruvada 19d19e470bSSrinivas Pandruvada $ ls -l /sys/bus/acpi/devices/INT3404:00/ 20d19e470bSSrinivas Pandruvada total 0 21d19e470bSSrinivas Pandruvada ... 22d19e470bSSrinivas Pandruvada -r--r--r-- 1 root root 4096 Dec 13 20:38 state0 23d19e470bSSrinivas Pandruvada -r--r--r-- 1 root root 4096 Dec 13 20:38 state1 24d19e470bSSrinivas Pandruvada -r--r--r-- 1 root root 4096 Dec 13 20:38 state10 25d19e470bSSrinivas Pandruvada -r--r--r-- 1 root root 4096 Dec 13 20:38 state11 26d19e470bSSrinivas Pandruvada -r--r--r-- 1 root root 4096 Dec 13 20:38 state2 27d19e470bSSrinivas Pandruvada -r--r--r-- 1 root root 4096 Dec 13 20:38 state3 28d19e470bSSrinivas Pandruvada -r--r--r-- 1 root root 4096 Dec 13 20:38 state4 29d19e470bSSrinivas Pandruvada -r--r--r-- 1 root root 4096 Dec 13 20:38 state5 30d19e470bSSrinivas Pandruvada -r--r--r-- 1 root root 4096 Dec 13 20:38 state6 31d19e470bSSrinivas Pandruvada -r--r--r-- 1 root root 4096 Dec 13 20:38 state7 32d19e470bSSrinivas Pandruvada -r--r--r-- 1 root root 4096 Dec 13 20:38 state8 33d19e470bSSrinivas Pandruvada -r--r--r-- 1 root root 4096 Dec 13 20:38 state9 34d19e470bSSrinivas Pandruvada -r--r--r-- 1 root root 4096 Dec 13 01:00 status 35d19e470bSSrinivas Pandruvada ... 36d19e470bSSrinivas Pandruvada 37d19e470bSSrinivas Pandruvadawhere each of the "state*" files represents one performance state of the fan 38d19e470bSSrinivas Pandruvadaand contains a colon-separated list of 5 integer numbers (fields) with the 39d19e470bSSrinivas Pandruvadafollowing interpretation:: 40d19e470bSSrinivas Pandruvada 41d19e470bSSrinivas Pandruvada control_percent:trip_point_index:speed_rpm:noise_level_mdb:power_mw 42d19e470bSSrinivas Pandruvada 43d19e470bSSrinivas Pandruvada* ``control_percent``: The percent value to be used to set the fan speed to a 44d19e470bSSrinivas Pandruvada specific level using the _FSL object (0-100). 45d19e470bSSrinivas Pandruvada 46d19e470bSSrinivas Pandruvada* ``trip_point_index``: The active cooling trip point number that corresponds 47d19e470bSSrinivas Pandruvada to this performance state (0-9). 48d19e470bSSrinivas Pandruvada 49d19e470bSSrinivas Pandruvada* ``speed_rpm``: Speed of the fan in rotations per minute. 50d19e470bSSrinivas Pandruvada 51d19e470bSSrinivas Pandruvada* ``noise_level_mdb``: Audible noise emitted by the fan in this state in 52d19e470bSSrinivas Pandruvada millidecibels. 53d19e470bSSrinivas Pandruvada 54d19e470bSSrinivas Pandruvada* ``power_mw``: Power draw of the fan in this state in milliwatts. 55d19e470bSSrinivas Pandruvada 56d19e470bSSrinivas PandruvadaFor example:: 57d19e470bSSrinivas Pandruvada 58d19e470bSSrinivas Pandruvada $cat /sys/bus/acpi/devices/INT3404:00/state1 59d19e470bSSrinivas Pandruvada 25:0:3200:12500:1250 60d19e470bSSrinivas Pandruvada 61d19e470bSSrinivas PandruvadaWhen a given field is not populated or its value provided by the platform 62d19e470bSSrinivas Pandruvadafirmware is invalid, the "not-defined" string is shown instead of the value. 630750b8fcSSrinivas Pandruvada 640750b8fcSSrinivas PandruvadaACPI Fan Fine Grain Control 650750b8fcSSrinivas Pandruvada============================= 660750b8fcSSrinivas Pandruvada 670750b8fcSSrinivas PandruvadaWhen _FIF object specifies support for fine grain control, then fan speed 680750b8fcSSrinivas Pandruvadacan be set from 0 to 100% with the recommended minimum "step size" via 690750b8fcSSrinivas Pandruvada_FSL object. User can adjust fan speed using thermal sysfs cooling device. 700750b8fcSSrinivas Pandruvada 710750b8fcSSrinivas PandruvadaHere use can look at fan performance states for a reference speed (speed_rpm) 720750b8fcSSrinivas Pandruvadaand set it by changing cooling device cur_state. If the fine grain control 730750b8fcSSrinivas Pandruvadais supported then user can also adjust to some other speeds which are 740750b8fcSSrinivas Pandruvadanot defined in the performance states. 750750b8fcSSrinivas Pandruvada 760750b8fcSSrinivas PandruvadaThe support of fine grain control is presented via sysfs attribute 770750b8fcSSrinivas Pandruvada"fine_grain_control". If fine grain control is present, this attribute 780750b8fcSSrinivas Pandruvadawill show "1" otherwise "0". 790750b8fcSSrinivas Pandruvada 800750b8fcSSrinivas PandruvadaThis sysfs attribute is presented in the same directory as performance states. 810750b8fcSSrinivas Pandruvada 820750b8fcSSrinivas PandruvadaACPI Fan Performance Feedback 830750b8fcSSrinivas Pandruvada============================= 840750b8fcSSrinivas Pandruvada 850750b8fcSSrinivas PandruvadaThe optional _FST object provides status information for the fan device. 860750b8fcSSrinivas PandruvadaThis includes field to provide current fan speed in revolutions per minute 870750b8fcSSrinivas Pandruvadaat which the fan is rotating. 880750b8fcSSrinivas Pandruvada 890750b8fcSSrinivas PandruvadaThis speed is presented in the sysfs using the attribute "fan_speed_rpm", 900750b8fcSSrinivas Pandruvadain the same directory as performance states. 91