Skip to contentSkip to conversation

dell-laptop: Fix backlight detection

PATCH In review Damien Thébault 2 participants 2 messages Jul 18, 2018 x86 platform drivers

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 dell-laptop: Fix backlight detection

Fix return code check for "max brightness" ACPI call.

The dell laptop ACPI video brightness control is not present on dell laptops anymore, but was present in older kernel versions.

The code that checks the return value is incorrect since the SMM refactoring.

The old code was:
if (buffer->output[0] == 0)

Which was changed to:
ret = dell_send_request(...)
if (ret)

However, dell_send_request() will return 0 if buffer->output[0] == 0, so we must change the check to:
if (ret == 0)

This issue was found on a Dell M4800 laptop, and the fix tested on it as well.

Fixes 549b4930f057 ("dell-smbios: Introduce dispatcher for SMM calls")
---
 drivers/platform/x86/dell-laptop.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/platform/x86/dell-laptop.c +1 -1
index f1fa8612db40..06978c14c83b 100644
@@ -2185,7 +2185,7 @@ static int __init dell_init(void)
 		dell_fill_request(&buffer, token->location, 0, 0, 0);
 		ret = dell_send_request(&buffer,
 					CLASS_TOKEN_READ, SELECT_TOKEN_AC);
-		if (ret)
+		if (ret == 0)
 			max_intensity = buffer.output[3];
 	}
 
Signature · 1 line
2.18.0
#1 lore raw
Quoted 15 lines · Damien Thébault

Fix return code check for "max brightness" ACPI call.

The dell laptop ACPI video brightness control is not present on dell laptops anymore, but was present in older kernel versions.

The code that checks the return value is incorrect since the SMM refactoring.

The old code was:
if (buffer->output[0] == 0)

Which was changed to:
ret = dell_send_request(...)
if (ret)

Quoted 7 lines

However, dell_send_request() will return 0 if buffer->output[0] == 0, so we must change the check to:
if (ret == 0)

This issue was found on a Dell M4800 laptop, and the fix tested on it as well.

I have pushed this to my review and testing queue, thanks!

But I'm going to push this to Linus this week since it's definitely stable material.

Quoted 25 lines
Fixes 549b4930f057 ("dell-smbios: Introduce dispatcher for SMM calls")
---
 drivers/platform/x86/dell-laptop.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/platform/x86/dell-laptop.c +1 -2
index f1fa8612db40..06978c14c83b 100644
@@ -2185,7 +2185,7 @@ static int __init dell_init(void)
                dell_fill_request(&buffer, token->location, 0, 0, 0);
                ret = dell_send_request(&buffer,
                                        CLASS_TOKEN_READ, SELECT_TOKEN_AC);
-               if (ret)
+               if (ret == 0)
                        max_intensity = buffer.output[3];
        }
 
--

2.18.0

Signature · 2 lines
With Best Regards,
Andy Shevchenko