lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite for Android: free password hash cracker in your pocket
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Sat, 26 Feb 2011 10:20:37 +0100
From:	Corentin Chary <corentincj@...aif.net>
To:	Matthew Garrett <mjg@...hat.com>
Cc:	Dmitry Torokhov <dmitry.torokhov@...il.com>,
	Corentin Chary <corentincj@...aif.net>,
	acpi4asus-user@...ts.sourceforge.net (open list:ASUS NOTEBOOKS AN...),
	platform-driver-x86@...r.kernel.org (open list:ASUS NOTEBOOKS AN...),
	linux-kernel@...r.kernel.org (open list)
Subject: [PATCH 08/14] asus-wmi: fix and clean backlight code

Signed-off-by: Corentin Chary <corentincj@...aif.net>
---
 drivers/platform/x86/asus-wmi.c |   44 +++++++++++++++++++++++++-------------
 1 files changed, 29 insertions(+), 15 deletions(-)

diff --git a/drivers/platform/x86/asus-wmi.c b/drivers/platform/x86/asus-wmi.c
index fd5b08ee..adf7b05 100644
--- a/drivers/platform/x86/asus-wmi.c
+++ b/drivers/platform/x86/asus-wmi.c
@@ -765,9 +765,8 @@ static int read_backlight_power(struct asus_wmi *asus)
 	return ret ? FB_BLANK_UNBLANK : FB_BLANK_POWERDOWN;
 }
 
-static int read_brightness(struct backlight_device *bd)
+static int read_brightness_max(struct asus_wmi *asus)
 {
-	struct asus_wmi *asus = bl_get_data(bd);
 	u32 retval;
 	int err;
 
@@ -776,6 +775,25 @@ static int read_brightness(struct backlight_device *bd)
 	if (err < 0)
 		return err;
 
+	retval = retval & ASUS_WMI_DSTS_MAX_BRIGTH_MASK;
+	retval >>= 8;
+
+	if (!retval)
+		return -ENODEV;
+
+	return retval;
+}
+
+static int read_brightness(struct backlight_device *bd)
+{
+	struct asus_wmi *asus = bl_get_data(bd);
+	u32 retval, err;
+
+	err = asus_wmi_get_devstate(asus, ASUS_WMI_DEVID_BRIGHTNESS, &retval);
+
+	if (err < 0)
+		return err;
+
 	return retval & ASUS_WMI_DSTS_BRIGHTNESS_MASK;
 }
 
@@ -799,7 +817,7 @@ static int update_bl_status(struct backlight_device *bd)
 		err = asus_wmi_set_devstate(ASUS_WMI_DEVID_BACKLIGHT,
 					    ctrl_param, NULL);
 	}
-	return 0;
+	return err;
 }
 
 static const struct backlight_ops asus_wmi_bl_ops = {
@@ -832,23 +850,19 @@ static int asus_wmi_backlight_init(struct asus_wmi *asus)
 	int max;
 	int power;
 
-	max = asus_wmi_get_devstate_bits(asus, ASUS_WMI_DEVID_BRIGHTNESS,
-					 ASUS_WMI_DSTS_MAX_BRIGTH_MASK);
-	power = read_backlight_power(asus);
+	max = read_brightness_max(asus);
 
-	if (max < 0 && power < 0) {
-		/* Try to keep the original error */
-		if (max == -ENODEV && power == -ENODEV)
-			return -ENODEV;
-		if (max != -ENODEV)
-			return max;
-		else
-			return power;
-	}
 	if (max == -ENODEV)
 		max = 0;
+	else if (max < 0)
+		return max;
+
+	power = read_backlight_power(asus);
+
 	if (power == -ENODEV)
 		power = FB_BLANK_UNBLANK;
+	else if (power < 0)
+		return power;
 
 	memset(&props, 0, sizeof(struct backlight_properties));
 	props.max_brightness = max;
-- 
1.7.4

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ