aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/platform/x86
diff options
context:
space:
mode:
authorAzael Avalos <coproscefalo@gmail.com>2014-11-24 21:29:36 -0500
committerDarren Hart <dvhart@linux.intel.com>2014-12-03 13:10:14 -0500
commita39f46df33c6847399f9b41b74ef09a4095fb996 (patch)
treea013d8e4d0497f67d3282a5697d16cddb66a2556 /drivers/platform/x86
parent841e11ccdf90c29a7778a5d5d553bc716c3d477a (diff)
toshiba_acpi: Fix regression caused by backlight extra check code
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>
Diffstat (limited to 'drivers/platform/x86')
-rw-r--r--drivers/platform/x86/toshiba_acpi.c21
1 files changed, 4 insertions, 17 deletions
diff --git a/drivers/platform/x86/toshiba_acpi.c b/drivers/platform/x86/toshiba_acpi.c
index 96076d99cf33..06362b7d3ad7 100644
--- a/drivers/platform/x86/toshiba_acpi.c
+++ b/drivers/platform/x86/toshiba_acpi.c
@@ -928,9 +928,7 @@ static int lcd_proc_open(struct inode *inode, struct file *file)
928 928
929static int set_lcd_brightness(struct toshiba_acpi_dev *dev, int value) 929static int set_lcd_brightness(struct toshiba_acpi_dev *dev, int value)
930{ 930{
931 u32 in[TCI_WORDS] = { HCI_SET, HCI_LCD_BRIGHTNESS, 0, 0, 0, 0 }; 931 u32 hci_result;
932 u32 out[TCI_WORDS];
933 acpi_status status;
934 932
935 if (dev->tr_backlight_supported) { 933 if (dev->tr_backlight_supported) {
936 bool enable = !value; 934 bool enable = !value;
@@ -941,20 +939,9 @@ static int set_lcd_brightness(struct toshiba_acpi_dev *dev, int value)
941 value--; 939 value--;
942 } 940 }
943 941
944 in[2] = value << HCI_LCD_BRIGHTNESS_SHIFT; 942 value = value << HCI_LCD_BRIGHTNESS_SHIFT;
945 status = tci_raw(dev, in, out); 943 hci_result = hci_write1(dev, HCI_LCD_BRIGHTNESS, value);
946 if (ACPI_FAILURE(status) || out[0] == TOS_FAILURE) { 944 return hci_result == TOS_SUCCESS ? 0 : -EIO;
947 pr_err("ACPI call to set brightness failed");
948 return -EIO;
949 }
950 /* Extra check for "incomplete" backlight method, where the AML code
951 * doesn't check for HCI_SET or HCI_GET and returns TOS_SUCCESS,
952 * the actual brightness, and in some cases the max brightness.
953 */
954 if (out[2] > 0 || out[3] == 0xE000)
955 return -ENODEV;
956
957 return out[0] == TOS_SUCCESS ? 0 : -EIO;
958} 945}
959 946
960static int set_lcd_status(struct backlight_device *bd) 947static int set_lcd_status(struct backlight_device *bd)