From 8f12f4a6b474fd14fa8de28cbf5df71c725cb2c0 Mon Sep 17 00:00:00 2001 From: Josh Boyer Date: Apr 30 2015 12:46:08 +0000 Subject: Fix backlight on various Toshiba machines (rhbz 1206036 1215989) --- diff --git a/kernel.spec b/kernel.spec index aa71c60..e7926a0 100644 --- a/kernel.spec +++ b/kernel.spec @@ -649,6 +649,9 @@ Patch26191: nfs-remove-WARN_ON_ONCE-from-nfs_direct_good_bytes.patch #rhbz 1210857 Patch26192: blk-loop-avoid-too-many-pending-per-work-IO.patch +#rhbz 1206036 1215989 +Patch26193: toshiba_acpi-Do-not-register-vendor-backlight-when-a.patch + # END OF PATCH DEFINITIONS %endif @@ -1412,6 +1415,9 @@ ApplyPatch nfs-remove-WARN_ON_ONCE-from-nfs_direct_good_bytes.patch #rhbz 1210857 ApplyPatch blk-loop-avoid-too-many-pending-per-work-IO.patch +#rhbz 1206036 1215989 +ApplyPatch toshiba_acpi-Do-not-register-vendor-backlight-when-a.patch + # END OF PATCH APPLICATIONS @@ -2263,6 +2269,9 @@ fi # # %changelog +* Thu Apr 30 2015 Josh Boyer +- Fix backlight on various Toshiba machines (rhbz 1206036 1215989) + * Wed Apr 29 2015 Justin M. Forbes - 4.0.1-300 - Linux v4.0.1 diff --git a/toshiba_acpi-Do-not-register-vendor-backlight-when-a.patch b/toshiba_acpi-Do-not-register-vendor-backlight-when-a.patch new file mode 100644 index 0000000..9e3102e --- /dev/null +++ b/toshiba_acpi-Do-not-register-vendor-backlight-when-a.patch @@ -0,0 +1,97 @@ +From: Hans de Goede +Date: Tue, 21 Apr 2015 12:01:32 +0200 +Subject: [PATCH] toshiba_acpi: Do not register vendor backlight when + acpi_video bl is available + +commit a39f46df33c6 ("toshiba_acpi: Fix regression caused by backlight extra +check code") causes the backlight to no longer work on the Toshiba Z30, +reverting that commit fixes this but restores the original issue fixed +by that commit. + +Looking at the toshiba_acpi backlight code for a fix for this I noticed that +the toshiba code is the only code under platform/x86 which unconditionally +registers a vendor acpi backlight interface, without checking for acpi_video +backlight support first. + +This commit adds the necessary checks bringing toshiba_acpi in line with the +other drivers, and fixing the Z30 regression without needing to revert the +commit causing it. + +Chances are that there will be some Toshiba models which have a non working +acpi-video implementation while the toshiba vendor backlight interface does +work, this commit adds an empty dmi_id table where such systems can be added, +this is identical to how other drivers handle such systems. + +BugLink: https://bugzilla.redhat.com/show_bug.cgi?id=1206036 +BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=86521 +Signed-off-by: Hans de Goede +Reviewed-and-tested-by: Azael Avalos +Signed-off-by: Darren Hart +--- + drivers/platform/x86/Kconfig | 1 + + drivers/platform/x86/toshiba_acpi.c | 23 +++++++++++++++++++++++ + 2 files changed, 24 insertions(+) + +diff --git a/drivers/platform/x86/Kconfig b/drivers/platform/x86/Kconfig +index 97527614141b..f9f205cb1f11 100644 +--- a/drivers/platform/x86/Kconfig ++++ b/drivers/platform/x86/Kconfig +@@ -614,6 +614,7 @@ config ACPI_TOSHIBA + depends on INPUT + depends on RFKILL || RFKILL = n + depends on SERIO_I8042 || SERIO_I8042 = n ++ depends on ACPI_VIDEO || ACPI_VIDEO = n + select INPUT_POLLDEV + select INPUT_SPARSEKMAP + ---help--- +diff --git a/drivers/platform/x86/toshiba_acpi.c b/drivers/platform/x86/toshiba_acpi.c +index dbcb7a8915b8..2da716c3b648 100644 +--- a/drivers/platform/x86/toshiba_acpi.c ++++ b/drivers/platform/x86/toshiba_acpi.c +@@ -51,6 +51,7 @@ + #include + #include + #include ++#include + + MODULE_AUTHOR("John Belmonte"); + MODULE_DESCRIPTION("Toshiba Laptop ACPI Extras Driver"); +@@ -281,6 +282,14 @@ static const struct key_entry toshiba_acpi_alt_keymap[] = { + }; + + /* ++ * List of models which have a broken acpi-video backlight interface and thus ++ * need to use the toshiba (vendor) interface instead. ++ */ ++static const struct dmi_system_id toshiba_vendor_backlight_dmi[] = { ++ {} ++}; ++ ++/* + * Utility + */ + +@@ -2541,6 +2550,20 @@ static int toshiba_acpi_setup_backlight(struct toshiba_acpi_dev *dev) + ret = get_tr_backlight_status(dev, &enabled); + dev->tr_backlight_supported = !ret; + ++ /* ++ * Tell acpi-video-detect code to prefer vendor backlight on all ++ * systems with transflective backlight and on dmi matched systems. ++ */ ++ if (dev->tr_backlight_supported || ++ dmi_check_system(toshiba_vendor_backlight_dmi)) ++ acpi_video_dmi_promote_vendor(); ++ ++ if (acpi_video_backlight_support()) ++ return 0; ++ ++ /* acpi-video may have loaded before we called dmi_promote_vendor() */ ++ acpi_video_unregister_backlight(); ++ + memset(&props, 0, sizeof(props)); + props.type = BACKLIGHT_PLATFORM; + props.max_brightness = HCI_LCD_BRIGHTNESS_LEVELS - 1; +-- +2.1.0 +