/* 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_*/