toshiba_acpi: Fix regression caused by backlight extra check code
authorAzael Avalos <coproscefalo@gmail.com>
Tue, 25 Nov 2014 02:29:36 +0000 (19:29 -0700)
committerDarren Hart <dvhart@linux.intel.com>
Wed, 3 Dec 2014 18:10:14 +0000 (10:10 -0800)
Bug 86521 uncovered that some TOS6208 devices also return
non zero values on a write call to the backlight method,
thus getting caught and bailed out by the extra check code.

This patch changes the set_lcd_brightness function to its
"original" state by just adapting it to the new function
format.

Signed-off-by: Azael Avalos <coproscefalo@gmail.com>
Signed-off-by: Darren Hart <dvhart@linux.intel.com>
drivers/platform/x86/toshiba_acpi.c

index 96076d99cf3365b4558f6ae3887fa080ad5da6b3..06362b7d3ad7fa770136ac640eab4b0d84cf7531 100644 (file)
@@ -928,9 +928,7 @@ static int lcd_proc_open(struct inode *inode, struct file *file)
 
 static int set_lcd_brightness(struct toshiba_acpi_dev *dev, int value)
 {
-       u32 in[TCI_WORDS] = { HCI_SET, HCI_LCD_BRIGHTNESS, 0, 0, 0, 0 };
-       u32 out[TCI_WORDS];
-       acpi_status status;
+       u32 hci_result;
 
        if (dev->tr_backlight_supported) {
                bool enable = !value;
@@ -941,20 +939,9 @@ static int set_lcd_brightness(struct toshiba_acpi_dev *dev, int value)
                        value--;
        }
 
-       in[2] = value << HCI_LCD_BRIGHTNESS_SHIFT;
-       status = tci_raw(dev, in, out);
-       if (ACPI_FAILURE(status) || out[0] == TOS_FAILURE) {
-               pr_err("ACPI call to set brightness failed");
-               return -EIO;
-       }
-       /* Extra check for "incomplete" backlight method, where the AML code
-        * doesn't check for HCI_SET or HCI_GET and returns TOS_SUCCESS,
-        * the actual brightness, and in some cases the max brightness.
-        */
-       if (out[2] > 0  || out[3] == 0xE000)
-               return -ENODEV;
-
-       return out[0] == TOS_SUCCESS ? 0 : -EIO;
+       value = value << HCI_LCD_BRIGHTNESS_SHIFT;
+       hci_result = hci_write1(dev, HCI_LCD_BRIGHTNESS, value);
+       return hci_result == TOS_SUCCESS ? 0 : -EIO;
 }
 
 static int set_lcd_status(struct backlight_device *bd)