2020. december 16., szerda 19:13 keltezéssel, Rafael J. Wysocki írta: > On Fri, Dec 11, 2020 at 3:15 AM Mark Pearson <markpearson@xxxxxxxxxx> wrote: > > > > This is the initial implementation of the platform-profile feature. > > It provides the details discussed and outlined in the > > sysfs-platform_profile document. > > > > Many modern systems have the ability to modify the operating profile to > > control aspects like fan speed, temperature and power levels. This > > module provides a common sysfs interface that platform modules can register > > against to control their individual profile options. > > > > Signed-off-by: Mark Pearson <markpearson@xxxxxxxxxx> > [...] > > +enum platform_profile_option { > > + PLATFORM_PROFILE_LOW, > > + PLATFORM_PROFILE_COOL, > > + PLATFORM_PROFILE_QUIET, > > + PLATFORM_PROFILE_BALANCED, > > + PLATFORM_PROFILE_PERFORM, > > + PLATFORM_PROFILE_LAST, /*must always be last */ > > +}; > > + > > +struct platform_profile_handler { > > + unsigned long choices[BITS_TO_LONGS(PLATFORM_PROFILE_LAST)]; > > + int (*profile_get)(enum platform_profile_option *profile); > > I'm not sure why this callback is necessary and, provided that there > is a good enough reason, why it cannot return an enum > platform_profile_option value. > > In principle, if ->profile_set() returns 0, the requested profile can > be saved in a static var and then returned by subsequent "read" > operations. > It is possible that the platform profile can be changed with (e.g.) a dedicated button (commonly found on laptops), in which case there needs to be a mechanism to retrieve the new profile, which would not be possible without introducing something else in place of that getter - unless I'm missing something obvious. Regards, Barnabás Pőcze