Message ID | 20241202055031.8038-23-mario.limonciello@amd.com |
---|---|
State | New |
Headers | show |
Series | Add support for binding ACPI platform profile to multiple drivers | expand |
On Sun, 1 Dec 2024, Mario Limonciello wrote: > The class interface allows changing multiple platform profiles on a system > to different values. The semantics of it are similar to the legacy > interface. > > Reviewed-by: Armin Wolf <W_Armin@gmx.de> > Tested-by: Mark Pearson <mpearson-lenovo@squebb.ca> > Reviewed-by: Mark Pearson <mpearson-lenovo@squebb.ca> > Signed-off-by: Mario Limonciello <mario.limonciello@amd.com> > --- > .../ABI/testing/sysfs-platform_profile | 5 +++ > .../userspace-api/sysfs-platform_profile.rst | 31 +++++++++++++++++++ > 2 files changed, 36 insertions(+) > > diff --git a/Documentation/ABI/testing/sysfs-platform_profile b/Documentation/ABI/testing/sysfs-platform_profile > index baf1d125f9f83..125324ab53a96 100644 > --- a/Documentation/ABI/testing/sysfs-platform_profile > +++ b/Documentation/ABI/testing/sysfs-platform_profile > @@ -33,3 +33,8 @@ Description: Reading this file gives the current selected profile for this > source such as e.g. a hotkey triggered profile change handled > either directly by the embedded-controller or fully handled > inside the kernel. > + > + This file may also emit the string 'custom' to indicate > + that multiple platform profiles drivers are in use but > + have different values. This string can not be written to > + this interface and is solely for informational purposes. > diff --git a/Documentation/userspace-api/sysfs-platform_profile.rst b/Documentation/userspace-api/sysfs-platform_profile.rst > index 4fccde2e45639..0aa384c75095a 100644 > --- a/Documentation/userspace-api/sysfs-platform_profile.rst > +++ b/Documentation/userspace-api/sysfs-platform_profile.rst > @@ -40,3 +40,34 @@ added. Drivers which wish to introduce new profile names must: > 1. Explain why the existing profile names cannot be used. > 2. Add the new profile name, along with a clear description of the > expected behaviour, to the sysfs-platform_profile ABI documentation. > + > +Multiple driver support > +======================= > +When multiple drivers on a system advertise a platform profile handler, the > +platform profile handler core will only advertise the profiles that are > +common between all drivers to the ``/sys/firmware/acpi`` interfaces. > + > +This is to ensure there is no ambiguity on what the profile names mean when > +all handlers don't support a profile. > + > +Individual drivers will register a 'platform_profile' class device that has > +similar semantics as the ``/sys/firmware/acpi/platform_profile`` interface. > + > +To discover which driver is associated with a platform profile handler the > +user can read the ``name`` attribute of the class device. > + > +To discover available profiles from the class interface the user can read the > +``choices`` attribute. > + > +If a user wants to select a profile for a specific driver, they can do so > +by writing to the ``profile`` attribute of the driver's class device. > + > +This will allow users to set different profiles for different drivers on the > +same system. If the selected profile by individual drivers differs the > +platform profile handler core will display the profile 'custom' to indicate > +that the profiles are not the same. > + > +While the ``platform_profile`` attribute has the value ``custom``, writing a > +common profile from ``platform_profile_choices`` to the platform_profile > +attribute of the platform profile handler core will set the profile for all > +drivers. Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com> Thanks for doing all this. The series looks ready to me once the minor nits I noted to individual patches are addressed.
diff --git a/Documentation/ABI/testing/sysfs-platform_profile b/Documentation/ABI/testing/sysfs-platform_profile index baf1d125f9f83..125324ab53a96 100644 --- a/Documentation/ABI/testing/sysfs-platform_profile +++ b/Documentation/ABI/testing/sysfs-platform_profile @@ -33,3 +33,8 @@ Description: Reading this file gives the current selected profile for this source such as e.g. a hotkey triggered profile change handled either directly by the embedded-controller or fully handled inside the kernel. + + This file may also emit the string 'custom' to indicate + that multiple platform profiles drivers are in use but + have different values. This string can not be written to + this interface and is solely for informational purposes. diff --git a/Documentation/userspace-api/sysfs-platform_profile.rst b/Documentation/userspace-api/sysfs-platform_profile.rst index 4fccde2e45639..0aa384c75095a 100644 --- a/Documentation/userspace-api/sysfs-platform_profile.rst +++ b/Documentation/userspace-api/sysfs-platform_profile.rst @@ -40,3 +40,34 @@ added. Drivers which wish to introduce new profile names must: 1. Explain why the existing profile names cannot be used. 2. Add the new profile name, along with a clear description of the expected behaviour, to the sysfs-platform_profile ABI documentation. + +Multiple driver support +======================= +When multiple drivers on a system advertise a platform profile handler, the +platform profile handler core will only advertise the profiles that are +common between all drivers to the ``/sys/firmware/acpi`` interfaces. + +This is to ensure there is no ambiguity on what the profile names mean when +all handlers don't support a profile. + +Individual drivers will register a 'platform_profile' class device that has +similar semantics as the ``/sys/firmware/acpi/platform_profile`` interface. + +To discover which driver is associated with a platform profile handler the +user can read the ``name`` attribute of the class device. + +To discover available profiles from the class interface the user can read the +``choices`` attribute. + +If a user wants to select a profile for a specific driver, they can do so +by writing to the ``profile`` attribute of the driver's class device. + +This will allow users to set different profiles for different drivers on the +same system. If the selected profile by individual drivers differs the +platform profile handler core will display the profile 'custom' to indicate +that the profiles are not the same. + +While the ``platform_profile`` attribute has the value ``custom``, writing a +common profile from ``platform_profile_choices`` to the platform_profile +attribute of the platform profile handler core will set the profile for all +drivers.