platform/x86: intel-wmi-sbl-fw-update: Use bus-based WMI interface
authorArmin Wolf <W_Armin@gmx.de>
Fri, 3 Nov 2023 18:25:25 +0000 (19:25 +0100)
committerHans de Goede <hdegoede@redhat.com>
Mon, 20 Nov 2023 12:20:33 +0000 (13:20 +0100)
Currently, the driver was still using the deprecated GUID-based
interface to query/set data blocks. Use the modern bus-based
interface for this.

Tested with a custom SSDT from the Intel Slim Bootloader project.

Reviewed-by: Jithu Joseph <jithu.joseph@intel.com>
Signed-off-by: Armin Wolf <W_Armin@gmx.de>
Link: https://lore.kernel.org/r/20231103182526.3524-3-W_Armin@gmx.de
Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
drivers/platform/x86/intel/wmi/sbl-fw-update.c
drivers/platform/x86/wmi.c

index 3c86e0108a24727ece455c08cab0200ea3f1928b..9cf5ed0f8dc2848b9f85f59dafd3cd43373bf960 100644 (file)
 
 static int get_fwu_request(struct device *dev, u32 *out)
 {
-       struct acpi_buffer result = {ACPI_ALLOCATE_BUFFER, NULL};
        union acpi_object *obj;
-       acpi_status status;
 
-       status = wmi_query_block(INTEL_WMI_SBL_GUID, 0, &result);
-       if (ACPI_FAILURE(status)) {
-               dev_err(dev, "wmi_query_block failed\n");
+       obj = wmidev_block_query(to_wmi_device(dev), 0);
+       if (!obj)
                return -ENODEV;
-       }
 
-       obj = (union acpi_object *)result.pointer;
-       if (!obj || obj->type != ACPI_TYPE_INTEGER) {
+       if (obj->type != ACPI_TYPE_INTEGER) {
                dev_warn(dev, "wmi_query_block returned invalid value\n");
                kfree(obj);
                return -EINVAL;
@@ -58,7 +53,7 @@ static int set_fwu_request(struct device *dev, u32 in)
        input.length = sizeof(u32);
        input.pointer = &value;
 
-       status = wmi_set_block(INTEL_WMI_SBL_GUID, 0, &input);
+       status = wmidev_block_set(to_wmi_device(dev), 0, &input);
        if (ACPI_FAILURE(status)) {
                dev_err(dev, "wmi_set_block failed\n");
                return -ENODEV;
index 9d9a050e70866fb5d65de58ae7b14289e7ec421d..4c4effc883ae8f4878c065b4d55a65eb19a471b1 100644 (file)
@@ -106,6 +106,7 @@ MODULE_DEVICE_TABLE(acpi, wmi_device_ids);
 static const char * const allow_duplicates[] = {
        "05901221-D566-11D1-B2F0-00A0C9062910", /* wmi-bmof */
        "8A42EA14-4F2A-FD45-6422-0087F7A7E608", /* dell-wmi-ddv */
+       "44FADEB1-B204-40F2-8581-394BBDC1B651", /* intel-wmi-sbl-fw-update */
        NULL
 };