Hi Mario, On 28-Oct-24 3:01 AM, Mario Limonciello wrote: > Currently there are a number of ASUS products on the market that happen to > have ACPI objects for amd-pmf to bind to as well as an ACPI platform profile > provided by asus-wmi. > > The ACPI platform profile support created by amd-pmf on these ASUS products is "Function 9" > which is specifically for "BIOS or EC notification" of power slider position. > This feature is actively used by some designs such as Framework 13 and Framework 16. > > On these ASUS designs we keep on quirking more and more of them to turn off this > notification so that asus-wmi can bind. > > This however isn't how Windows works. "Multiple" things are notified for the power > slider position. This series adjusts Linux to behave similarly. > > Multiple drivers can now register an ACPI platform profile and will react to set requests. > > To avoid chaos, only positions that are common to both drivers are accepted. > > This also allows dropping all of the PMF quirks from amd-pmf. > > v2: > * Split to many more patches > * Account for feedback from M/L Thank you for the new version. I just did a quick check of patches 8 - 13 and this looks much better. I see from various discussions that a v3 is incoming so I've not done a full review of patches 8 - 13. Regards, Hans > > Mario Limonciello (15): > ACPI: platform-profile: Add a name member to handlers > platform/surface: aggregator: Add platform handler pointer to device > ACPI: platform_profile: Add platform handler argument to > platform_profile_remove() > ACPI: platform_profile: Add a list to platform profile handler > ACPI: platform_profile: Move sanity check out of the mutex > ACPI: platform_profile: Use guard(mutex) for register/unregister > ACPI: platform_profile: Only remove group when no more handler > registered > ACPI: platform_profile: Require handlers to support balanced profile > ACPI: platform_profile: Notify change events on register and > unregister > ACPI: platform_profile: Only show profiles common for all handlers > ACPI: platform_profile: Set profile for all registered handlers > ACPI: platform_profile: Make sure all profile handlers agree on > profile > ACPI: platform_profile: Check all profile handler to calculate next > ACPI: platform_profile: Allow multiple handlers > platform/x86/amd: pmf: Drop all quirks > > drivers/acpi/platform_profile.c | 258 +++++++++++------- > .../surface/surface_platform_profile.c | 7 +- > drivers/platform/x86/acer-wmi.c | 5 +- > drivers/platform/x86/amd/pmf/Makefile | 2 +- > drivers/platform/x86/amd/pmf/core.c | 1 - > drivers/platform/x86/amd/pmf/pmf-quirks.c | 66 ----- > drivers/platform/x86/amd/pmf/pmf.h | 3 - > drivers/platform/x86/amd/pmf/sps.c | 3 +- > drivers/platform/x86/asus-wmi.c | 5 +- > drivers/platform/x86/dell/dell-pc.c | 3 +- > drivers/platform/x86/hp/hp-wmi.c | 3 +- > drivers/platform/x86/ideapad-laptop.c | 3 +- > .../platform/x86/inspur_platform_profile.c | 5 +- > drivers/platform/x86/thinkpad_acpi.c | 3 +- > include/linux/platform_profile.h | 4 +- > 15 files changed, 190 insertions(+), 181 deletions(-) > delete mode 100644 drivers/platform/x86/amd/pmf/pmf-quirks.c >