diff mbox

ACPI / video: update the condition to check if a device is in _DOD list

Message ID 547A6F75.6050806@intel.com (mailing list archive)
State Accepted, archived
Headers show

Commit Message

Aaron Lu Nov. 30, 2014, 1:14 a.m. UTC
On 11/30/2014 01:34 AM, Brian Norris wrote:
> Tested-by: Brian Norris <computersforpeace@gmail.com>

Thanks for the test! Updated patch with changelog:

From 0b11bb529245ddceb69eb558477b9b4a81208f4b Mon Sep 17 00:00:00 2001
From: Aaron Lu <aaron.lu@intel.com>
Date: Sun, 30 Nov 2014 09:01:15 +0800
Subject: [PATCH] ACPI / video: update the condition to check if a device is in _DOD list

Commit 0b8db271f159 ("ACPI / video: check _DOD list when creating
backlight devices") checks if the video device is in the bind devices
list to decide if we should create backlight device for it, that causes
problem for one Dell Latitude E6410, where none of the video output
devices are properly bound due to the way how we did the comparing
between its _ADR and the _DOD's values. Solve this problem by comparing
the lower 12 bits of both the device's _ADR and the _DOD's values instead
of relying on bind result.

Fixes: 0b8db271f159 ("ACPI / video: check _DOD list when creating backlight devices")
Signed-off-by: Aaron Lu <aaron.lu@intel.com>
Tested-by: Brian Norris <computersforpeace@gmail.com>
---
 drivers/acpi/video.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

Comments

Rafael J. Wysocki Dec. 3, 2014, 2:25 a.m. UTC | #1
On Sunday, November 30, 2014 09:14:29 AM Aaron Lu wrote:
> On 11/30/2014 01:34 AM, Brian Norris wrote:
> > Tested-by: Brian Norris <computersforpeace@gmail.com>
> 
> Thanks for the test! Updated patch with changelog:
> 
> From 0b11bb529245ddceb69eb558477b9b4a81208f4b Mon Sep 17 00:00:00 2001
> From: Aaron Lu <aaron.lu@intel.com>
> Date: Sun, 30 Nov 2014 09:01:15 +0800
> Subject: [PATCH] ACPI / video: update the condition to check if a device is in _DOD list
> 
> Commit 0b8db271f159 ("ACPI / video: check _DOD list when creating
> backlight devices") checks if the video device is in the bind devices
> list to decide if we should create backlight device for it, that causes
> problem for one Dell Latitude E6410, where none of the video output
> devices are properly bound due to the way how we did the comparing
> between its _ADR and the _DOD's values. Solve this problem by comparing
> the lower 12 bits of both the device's _ADR and the _DOD's values instead
> of relying on bind result.
> 
> Fixes: 0b8db271f159 ("ACPI / video: check _DOD list when creating backlight devices")
> Signed-off-by: Aaron Lu <aaron.lu@intel.com>
> Tested-by: Brian Norris <computersforpeace@gmail.com>

Queued up as a fix for 3.18.

> ---
>  drivers/acpi/video.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/acpi/video.c b/drivers/acpi/video.c
> index 41e6b977ceb2..185a57d13723 100644
> --- a/drivers/acpi/video.c
> +++ b/drivers/acpi/video.c
> @@ -1164,7 +1164,8 @@ static bool acpi_video_device_in_dod(struct acpi_video_device *device)
>  		return true;
>  
>  	for (i = 0; i < video->attached_count; i++) {
> -		if (video->attached_array[i].bind_info == device)
> +		if ((video->attached_array[i].value.int_val & 0xfff) ==
> +		    (device->device_id & 0xfff))
>  			return true;
>  	}
>  
>
diff mbox

Patch

diff --git a/drivers/acpi/video.c b/drivers/acpi/video.c
index 41e6b977ceb2..185a57d13723 100644
--- a/drivers/acpi/video.c
+++ b/drivers/acpi/video.c
@@ -1164,7 +1164,8 @@  static bool acpi_video_device_in_dod(struct acpi_video_device *device)
 		return true;
 
 	for (i = 0; i < video->attached_count; i++) {
-		if (video->attached_array[i].bind_info == device)
+		if ((video->attached_array[i].value.int_val & 0xfff) ==
+		    (device->device_id & 0xfff))
 			return true;
 	}