| From 769c4bfea7d9f6c47ed7e40fe42cca7dcaadfb66 Mon Sep 17 00:00:00 2001 |
| From: Peter Wu <lekensteyn@gmail.com> |
| Date: Thu, 1 Aug 2013 18:21:28 +0200 |
| Subject: i915: fix ACPI _DSM warning |
| |
| Since commit 29a241c (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: Peter Wu <lekensteyn@gmail.com> |
| Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=32602 |
| Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch> |
| (cherry picked from commit 6d5c2d8ca3c15a191a8078316e547c1f4e5ad6eb) |
| Signed-off-by: Darren Hart <dvhart@linux.intel.com> |
| --- |
| drivers/gpu/drm/i915/intel_acpi.c | 14 ++++++++------ |
| 1 file changed, 8 insertions(+), 6 deletions(-) |
| |
| diff --git a/drivers/gpu/drm/i915/intel_acpi.c b/drivers/gpu/drm/i915/intel_acpi.c |
| index bcbbaea2a78e..57fe1ae32a0d 100644 |
| --- a/drivers/gpu/drm/i915/intel_acpi.c |
| +++ b/drivers/gpu/drm/i915/intel_acpi.c |
| @@ -28,7 +28,7 @@ static const u8 intel_dsm_guid[] = { |
| 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_object_list input; |
| @@ -46,8 +46,9 @@ static int intel_dsm(acpi_handle handle, int func, int arg) |
| params[1].integer.value = INTEL_DSM_REVISION_ID; |
| params[2].type = ACPI_TYPE_INTEGER; |
| params[2].integer.value = func; |
| - params[3].type = ACPI_TYPE_INTEGER; |
| - params[3].integer.value = arg; |
| + params[3].type = ACPI_TYPE_PACKAGE; |
| + params[3].package.count = 0; |
| + params[3].package.elements = NULL; |
| |
| ret = acpi_evaluate_object(handle, "_DSM", &input, &output); |
| if (ret) { |
| @@ -151,8 +152,9 @@ static void intel_dsm_platform_mux_info(void) |
| params[1].integer.value = INTEL_DSM_REVISION_ID; |
| params[2].type = ACPI_TYPE_INTEGER; |
| params[2].integer.value = INTEL_DSM_FN_PLATFORM_MUX_INFO; |
| - params[3].type = ACPI_TYPE_INTEGER; |
| - params[3].integer.value = 0; |
| + params[3].type = ACPI_TYPE_PACKAGE; |
| + params[3].package.count = 0; |
| + params[3].package.elements = NULL; |
| |
| ret = acpi_evaluate_object(intel_dsm_priv.dhandle, "_DSM", &input, |
| &output); |
| @@ -205,7 +207,7 @@ static bool intel_dsm_pci_probe(struct pci_dev *pdev) |
| return false; |
| } |
| |
| - ret = intel_dsm(dhandle, INTEL_DSM_FN_SUPPORTED_FUNCTIONS, 0); |
| + ret = intel_dsm(dhandle, INTEL_DSM_FN_SUPPORTED_FUNCTIONS); |
| if (ret < 0) { |
| DRM_DEBUG_KMS("failed to get supported _DSM functions\n"); |
| return false; |
| -- |
| 1.8.5.rc3 |
| |