Commit 6d5c2d8c authored by Peter Wu's avatar Peter Wu Committed by Daniel Vetter

i915: fix ACPI _DSM warning

Since commit 29a241cc (ACPICA: Add argument typechecking for all
predefined ACPI names), _DSM parameters are validated which trigger the
following warning:

    ACPI Warning: \_SB_.PCI0.GFX0._DSM: Argument #4 type mismatch - Found [Integer], ACPI requires [Package] (20130517/nsarguments-95)
    ACPI Warning: \_SB_.PCI0.GFX0._DSM: Argument #4 type mismatch - Found [Integer], ACPI requires [Package] (20130517/nsarguments-95)
    ACPI Warning: \_SB_.PCI0.P0P2.PEGP._DSM: Argument #4 type mismatch - Found [Integer], ACPI requires [Package] (20130517/nsarguments-95)
    ACPI Warning: \_SB_.PCI0.P0P2.PEGP._DSM: Argument #4 type mismatch - Found [Integer], ACPI requires [Package] (20130517/nsarguments-95)

As the Intel _DSM method seems to ignore this parameter, let's comply to
the ACPI spec and use a Package instead.
Signed-off-by: default avatarPeter Wu <lekensteyn@gmail.com>
Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=32602Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
parent 2960bc9c
...@@ -28,7 +28,7 @@ static const u8 intel_dsm_guid[] = { ...@@ -28,7 +28,7 @@ static const u8 intel_dsm_guid[] = {
0x0f, 0x13, 0x17, 0xb0, 0x1c, 0x2c 0x0f, 0x13, 0x17, 0xb0, 0x1c, 0x2c
}; };
static int intel_dsm(acpi_handle handle, int func, int arg) static int intel_dsm(acpi_handle handle, int func)
{ {
struct acpi_buffer output = { ACPI_ALLOCATE_BUFFER, NULL }; struct acpi_buffer output = { ACPI_ALLOCATE_BUFFER, NULL };
struct acpi_object_list input; struct acpi_object_list input;
...@@ -46,8 +46,9 @@ static int intel_dsm(acpi_handle handle, int func, int arg) ...@@ -46,8 +46,9 @@ static int intel_dsm(acpi_handle handle, int func, int arg)
params[1].integer.value = INTEL_DSM_REVISION_ID; params[1].integer.value = INTEL_DSM_REVISION_ID;
params[2].type = ACPI_TYPE_INTEGER; params[2].type = ACPI_TYPE_INTEGER;
params[2].integer.value = func; params[2].integer.value = func;
params[3].type = ACPI_TYPE_INTEGER; params[3].type = ACPI_TYPE_PACKAGE;
params[3].integer.value = arg; params[3].package.count = 0;
params[3].package.elements = NULL;
ret = acpi_evaluate_object(handle, "_DSM", &input, &output); ret = acpi_evaluate_object(handle, "_DSM", &input, &output);
if (ret) { if (ret) {
...@@ -151,8 +152,9 @@ static void intel_dsm_platform_mux_info(void) ...@@ -151,8 +152,9 @@ static void intel_dsm_platform_mux_info(void)
params[1].integer.value = INTEL_DSM_REVISION_ID; params[1].integer.value = INTEL_DSM_REVISION_ID;
params[2].type = ACPI_TYPE_INTEGER; params[2].type = ACPI_TYPE_INTEGER;
params[2].integer.value = INTEL_DSM_FN_PLATFORM_MUX_INFO; params[2].integer.value = INTEL_DSM_FN_PLATFORM_MUX_INFO;
params[3].type = ACPI_TYPE_INTEGER; params[3].type = ACPI_TYPE_PACKAGE;
params[3].integer.value = 0; params[3].package.count = 0;
params[3].package.elements = NULL;
ret = acpi_evaluate_object(intel_dsm_priv.dhandle, "_DSM", &input, ret = acpi_evaluate_object(intel_dsm_priv.dhandle, "_DSM", &input,
&output); &output);
...@@ -205,7 +207,7 @@ static bool intel_dsm_pci_probe(struct pci_dev *pdev) ...@@ -205,7 +207,7 @@ static bool intel_dsm_pci_probe(struct pci_dev *pdev)
return false; return false;
} }
ret = intel_dsm(dhandle, INTEL_DSM_FN_SUPPORTED_FUNCTIONS, 0); ret = intel_dsm(dhandle, INTEL_DSM_FN_SUPPORTED_FUNCTIONS);
if (ret < 0) { if (ret < 0) {
DRM_DEBUG_KMS("failed to get supported _DSM functions\n"); DRM_DEBUG_KMS("failed to get supported _DSM functions\n");
return false; return false;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment