[PATCH 14/28] asus-laptop: stop using read_status for lcd

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



(anyway lcd code is scheduled for removal)

Signed-off-by: Corentin Chary <corentincj@xxxxxxxxxx>
---
 drivers/platform/x86/asus-laptop.c |   37 +++++++++++++++++++----------------
 1 files changed, 20 insertions(+), 17 deletions(-)

diff --git a/drivers/platform/x86/asus-laptop.c b/drivers/platform/x86/asus-laptop.c
index ea51d7e..d726db3 100644
--- a/drivers/platform/x86/asus-laptop.c
+++ b/drivers/platform/x86/asus-laptop.c
@@ -241,6 +241,7 @@ struct asus_laptop {
 
 	int wireless_status;
 	bool have_rsts;
+	int lcd_state;
 
 	acpi_handle handle;	/* the handle of the hotk device */
 	char status;		/* status of the hotk, for LEDs, ... */
@@ -538,30 +539,33 @@ error:
 /*
  * Backlight device
  */
-static int get_lcd_state(struct asus_laptop *asus)
+static int asus_lcd_status(struct asus_laptop *asus)
 {
-	return read_status(asus, LCD_ON);
+	return asus->lcd_state;
 }
 
-static int set_lcd_state(struct asus_laptop *asus, int value)
+static int asus_lcd_set(struct asus_laptop *asus, int value)
 {
 	int lcd = 0;
 	acpi_status status = 0;
 
-	lcd = value ? 1 : 0;
+	lcd = !!value;
 
-	if (lcd == get_lcd_state(asus))
+	if (lcd == asus_lcd_status(asus))
 		return 0;
 
-	if (lcd_switch_handle) {
-		status = acpi_evaluate_object(lcd_switch_handle,
-					      NULL, NULL, NULL);
+	if (!lcd_switch_handle)
+		return -ENODEV;
+
+	status = acpi_evaluate_object(lcd_switch_handle,
+				      NULL, NULL, NULL);
 
-		if (ACPI_FAILURE(status))
-			pr_warning("Error switching LCD\n");
+	if (ACPI_FAILURE(status)) {
+		pr_warning("Error switching LCD\n");
+		return -ENODEV;
 	}
 
-	write_status(asus, NULL, lcd, LCD_ON);
+	asus->lcd_state = lcd;
 	return 0;
 }
 
@@ -569,6 +573,8 @@ static void lcd_blank(struct asus_laptop *asus, int blank)
 {
 	struct backlight_device *bd = asus->backlight_device;
 
+	asus->lcd_state = (blank == FB_BLANK_UNBLANK);
+
 	if (bd) {
 		bd->props.power = blank;
 		backlight_update_status(bd);
@@ -607,7 +613,7 @@ static int update_bl_status(struct backlight_device *bd)
 		return rv;
 
 	value = (bd->props.power == FB_BLANK_UNBLANK) ? 1 : 0;
-	return set_lcd_state(asus, value);
+	return asus_lcd_set(asus, value);
 }
 
 static struct backlight_ops asusbl_ops = {
@@ -1144,13 +1150,10 @@ static void asus_acpi_notify(struct acpi_device *device, u32 event)
 	 * We need to tell the backlight device when the backlight power is
 	 * switched
 	 */
-	if (event == ATKD_LCD_ON) {
-		write_status(asus, NULL, 1, LCD_ON);
+	if (event == ATKD_LCD_ON)
 		lcd_blank(asus, FB_BLANK_UNBLANK);
-	} else if (event == ATKD_LCD_OFF) {
-		write_status(asus, NULL, 0, LCD_ON);
+	else if (event == ATKD_LCD_OFF)
 		lcd_blank(asus, FB_BLANK_POWERDOWN);
-	}
 
 	/* TODO Find a better way to handle events count. */
 	count = asus->event_count[event % 128]++;
-- 
1.6.6.1

--
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux IBM ACPI]     [Linux Power Management]     [Linux Kernel]     [Linux Laptop]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]     [Linux Resources]

  Powered by Linux