mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-12-27 12:21:22 -05:00
platform/x86: wmi: Call WCxx methods when setting data blocks
After performing some tests with a custom SSDT table available at https://github.com/Wer-Wolf/acpi-wmi-ssdt i found out that Windows also enables data block collection even when the data block is being set. Emulate this behaviour to avoid confusing the ACPI firmware. The bus-based API already implements this behaviour, so only the legacy GUID-based API needs to be changed. Signed-off-by: Armin Wolf <W_Armin@gmx.de> Link: https://lore.kernel.org/r/20250216193251.866125-8-W_Armin@gmx.de Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com> Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
This commit is contained in:
committed by
Ilpo Järvinen
parent
656f0961d1
commit
08c9f40290
@@ -89,6 +89,9 @@ Similar to the ``WExx`` ACPI methods, except that it controls data collection
|
||||
instead of events and thus the last two characters of the ACPI method name are
|
||||
the method ID of the data block to enable/disable.
|
||||
|
||||
Those ACPI methods are also called before setting data blocks to match the
|
||||
behaviour of the Windows driver.
|
||||
|
||||
_WED ACPI method
|
||||
----------------
|
||||
|
||||
|
||||
@@ -463,7 +463,14 @@ acpi_status wmi_set_block(const char *guid_string, u8 instance, const struct acp
|
||||
if (IS_ERR(wdev))
|
||||
return AE_ERROR;
|
||||
|
||||
if (wmi_device_enable(wdev, true) < 0)
|
||||
dev_warn(&wdev->dev, "Failed to enable device\n");
|
||||
|
||||
status = wmidev_block_set(wdev, instance, in);
|
||||
|
||||
if (wmi_device_enable(wdev, false) < 0)
|
||||
dev_warn(&wdev->dev, "Failed to disable device\n");
|
||||
|
||||
wmi_device_put(wdev);
|
||||
|
||||
return status;
|
||||
|
||||
Reference in New Issue
Block a user