Encountered a type mismatch as described below: \_SB.WCCD._DSM: Argument #4 type mismatch - Found [Integer], ACPI requires [Package] This is because the argument#4(arg3) is integer. According to the ACPI specification, the arg3 should be a package. _DSM (Device Specific Method) This optional object is a control method that enables devices to provide device specific control functions that are consumed by the device driver. Arguments: (4) Arg0 - A Buffer containing a UUID Arg1 - An Integer containing the Revision ID Arg2 - An Integer containing the Function Index Arg3 - A Package that contains function-specific arguments The solution involves rectifying arg3 to be a package for the _DSM method. Furthermore, the firmware needs to ensure that ACPI table arg3 is a package as well. The suggested amendment is as follows: If ((Arg3 == Zero)) { WDMC [0x02] = WCS0 } should modify as, If (((ToInteger(Derefof (Arg3 [Zero]))) == Zero)) { WDMC [0x02] = WCS0 } Signed-off-by: Ivan Hu <ivan.hu@xxxxxxxxxxxxx> --- drivers/platform/x86/intel/int1092/intel_sar.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/drivers/platform/x86/intel/int1092/intel_sar.c b/drivers/platform/x86/intel/int1092/intel_sar.c index 6246c066ade2..8fffdce994aa 100644 --- a/drivers/platform/x86/intel/int1092/intel_sar.c +++ b/drivers/platform/x86/intel/int1092/intel_sar.c @@ -215,13 +215,17 @@ static void sar_notify(acpi_handle handle, u32 event, void *data) static void sar_get_data(int reg, struct wwan_sar_context *context) { - union acpi_object *out, req; + union acpi_object *out, req, argv4; u32 rev = 0; - req.type = ACPI_TYPE_INTEGER; + argv4.type = ACPI_TYPE_PACKAGE; + argv4.package.count = 1; + argv4.package.elements = &req; + req.integer.type = ACPI_TYPE_INTEGER; req.integer.value = reg; + out = acpi_evaluate_dsm_typed(context->handle, &context->guid, rev, - COMMAND_ID_CONFIG_TABLE, &req, ACPI_TYPE_PACKAGE); + COMMAND_ID_CONFIG_TABLE, &argv4, ACPI_TYPE_PACKAGE); if (!out) return; if (out->package.count >= 3 && -- 2.34.1