| /* SPDX-License-Identifier: GPL-2.0-or-later */ | |
| /* | |
| * Platform profile sysfs interface | |
| * | |
| * See Documentation/userspace-api/sysfs-platform_profile.rst for more | |
| * information. | |
| */ | |
| #ifndef _PLATFORM_PROFILE_H_ | |
| #define _PLATFORM_PROFILE_H_ | |
| #include <linux/bitops.h> | |
| /* | |
| * If more options are added please update profile_names array in | |
| * platform_profile.c and sysfs-platform_profile documentation. | |
| */ | |
| enum platform_profile_option { | |
| PLATFORM_PROFILE_LOW_POWER, | |
| PLATFORM_PROFILE_COOL, | |
| PLATFORM_PROFILE_QUIET, | |
| PLATFORM_PROFILE_BALANCED, | |
| PLATFORM_PROFILE_BALANCED_PERFORMANCE, | |
| PLATFORM_PROFILE_PERFORMANCE, | |
| PLATFORM_PROFILE_LAST, /*must always be last */ | |
| }; | |
| struct platform_profile_handler { | |
| unsigned long choices[BITS_TO_LONGS(PLATFORM_PROFILE_LAST)]; | |
| int (*profile_get)(struct platform_profile_handler *pprof, | |
| enum platform_profile_option *profile); | |
| int (*profile_set)(struct platform_profile_handler *pprof, | |
| enum platform_profile_option profile); | |
| }; | |
| int platform_profile_register(struct platform_profile_handler *pprof); | |
| int platform_profile_remove(void); | |
| void platform_profile_notify(void); | |
| #endif /*_PLATFORM_PROFILE_H_*/ |