Commit | Line | Data |
---|---|---|
a2ff95e0 MP |
1 | /* SPDX-License-Identifier: GPL-2.0-or-later */ |
2 | /* | |
3 | * Platform profile sysfs interface | |
4 | * | |
ee62c89c | 5 | * See Documentation/userspace-api/sysfs-platform_profile.rst for more |
a2ff95e0 MP |
6 | * information. |
7 | */ | |
8 | ||
9 | #ifndef _PLATFORM_PROFILE_H_ | |
10 | #define _PLATFORM_PROFILE_H_ | |
11 | ||
12 | #include <linux/bitops.h> | |
13 | ||
14 | /* | |
6120484e ML |
15 | * If more options are added please update profile_names array in |
16 | * platform_profile.c and sysfs-platform_profile documentation. | |
a2ff95e0 MP |
17 | */ |
18 | ||
19 | enum platform_profile_option { | |
20 | PLATFORM_PROFILE_LOW_POWER, | |
21 | PLATFORM_PROFILE_COOL, | |
22 | PLATFORM_PROFILE_QUIET, | |
23 | PLATFORM_PROFILE_BALANCED, | |
6c0b5e3f | 24 | PLATFORM_PROFILE_BALANCED_PERFORMANCE, |
a2ff95e0 MP |
25 | PLATFORM_PROFILE_PERFORMANCE, |
26 | PLATFORM_PROFILE_LAST, /*must always be last */ | |
27 | }; | |
28 | ||
29 | struct platform_profile_handler { | |
30 | unsigned long choices[BITS_TO_LONGS(PLATFORM_PROFILE_LAST)]; | |
84f9017c JY |
31 | int (*profile_get)(struct platform_profile_handler *pprof, |
32 | enum platform_profile_option *profile); | |
33 | int (*profile_set)(struct platform_profile_handler *pprof, | |
34 | enum platform_profile_option profile); | |
a2ff95e0 MP |
35 | }; |
36 | ||
9d56653d | 37 | int platform_profile_register(struct platform_profile_handler *pprof); |
a2ff95e0 MP |
38 | int platform_profile_remove(void); |
39 | void platform_profile_notify(void); | |
40 | ||
41 | #endif /*_PLATFORM_PROFILE_H_*/ |