platform/x86/intel/wmi: thunderbolt: Use new buffer-based WMI API

Use the new buffer-based WMI API to avoid having to deal with ACPI
at all.

Signed-off-by: Armin Wolf <W_Armin@gmx.de>
Link: https://patch.msgid.link/20260116204116.4030-7-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:
Armin Wolf 2026-01-16 21:41:13 +01:00 committed by Ilpo Järvinen
parent 534f685d8a
commit e210986f52
No known key found for this signature in database
GPG Key ID: 59AC4F6153E5CE31

View File

@ -7,7 +7,6 @@
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
#include <linux/acpi.h>
#include <linux/device.h>
#include <linux/fs.h>
#include <linux/kernel.h>
@ -23,24 +22,21 @@ static ssize_t force_power_store(struct device *dev,
struct device_attribute *attr,
const char *buf, size_t count)
{
struct acpi_buffer input;
acpi_status status;
struct wmi_buffer buffer;
int ret;
u8 mode;
input.length = sizeof(u8);
input.pointer = &mode;
buffer.length = sizeof(mode);
buffer.data = &mode;
mode = hex_to_bin(buf[0]);
dev_dbg(dev, "force_power: storing %#x\n", mode);
if (mode == 0 || mode == 1) {
status = wmidev_evaluate_method(to_wmi_device(dev), 0, 1, &input, NULL);
if (ACPI_FAILURE(status)) {
dev_dbg(dev, "force_power: failed to evaluate ACPI method\n");
return -ENODEV;
}
} else {
dev_dbg(dev, "force_power: unsupported mode\n");
if (mode > 1)
return -EINVAL;
}
ret = wmidev_invoke_method(to_wmi_device(dev), 0, 1, &buffer, NULL);
if (ret < 0)
return ret;
return count;
}