1 /* SPDX-License-Identifier: GPL-2.0-or-later * 1 /* SPDX-License-Identifier: GPL-2.0-or-later */ 2 /* 2 /* 3 * Platform profile sysfs interface 3 * Platform profile sysfs interface 4 * 4 * 5 * See Documentation/userspace-api/sysfs-platf 5 * See Documentation/userspace-api/sysfs-platform_profile.rst for more 6 * information. 6 * information. 7 */ 7 */ 8 8 9 #ifndef _PLATFORM_PROFILE_H_ 9 #ifndef _PLATFORM_PROFILE_H_ 10 #define _PLATFORM_PROFILE_H_ 10 #define _PLATFORM_PROFILE_H_ 11 11 12 #include <linux/bitops.h> 12 #include <linux/bitops.h> 13 13 14 /* 14 /* 15 * If more options are added please update pro 15 * If more options are added please update profile_names array in 16 * platform_profile.c and sysfs-platform_profi 16 * platform_profile.c and sysfs-platform_profile documentation. 17 */ 17 */ 18 18 19 enum platform_profile_option { 19 enum platform_profile_option { 20 PLATFORM_PROFILE_LOW_POWER, 20 PLATFORM_PROFILE_LOW_POWER, 21 PLATFORM_PROFILE_COOL, 21 PLATFORM_PROFILE_COOL, 22 PLATFORM_PROFILE_QUIET, 22 PLATFORM_PROFILE_QUIET, 23 PLATFORM_PROFILE_BALANCED, 23 PLATFORM_PROFILE_BALANCED, 24 PLATFORM_PROFILE_BALANCED_PERFORMANCE, 24 PLATFORM_PROFILE_BALANCED_PERFORMANCE, 25 PLATFORM_PROFILE_PERFORMANCE, 25 PLATFORM_PROFILE_PERFORMANCE, 26 PLATFORM_PROFILE_LAST, /*must always b 26 PLATFORM_PROFILE_LAST, /*must always be last */ 27 }; 27 }; 28 28 29 struct platform_profile_handler { 29 struct platform_profile_handler { 30 unsigned long choices[BITS_TO_LONGS(PL 30 unsigned long choices[BITS_TO_LONGS(PLATFORM_PROFILE_LAST)]; 31 int (*profile_get)(struct platform_pro 31 int (*profile_get)(struct platform_profile_handler *pprof, 32 enum platform_ 32 enum platform_profile_option *profile); 33 int (*profile_set)(struct platform_pro 33 int (*profile_set)(struct platform_profile_handler *pprof, 34 enum platform_ 34 enum platform_profile_option profile); 35 }; 35 }; 36 36 37 int platform_profile_register(struct platform_ 37 int platform_profile_register(struct platform_profile_handler *pprof); 38 int platform_profile_remove(void); 38 int platform_profile_remove(void); 39 int platform_profile_cycle(void); 39 int platform_profile_cycle(void); 40 void platform_profile_notify(void); 40 void platform_profile_notify(void); 41 41 42 #endif /*_PLATFORM_PROFILE_H_*/ 42 #endif /*_PLATFORM_PROFILE_H_*/ 43 43
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.