From b556dbd0ada30c80284146c06452bb045979e0a6 Mon Sep 17 00:00:00 2001 From: Josh Boyer Date: Mon, 12 Jan 2015 09:09:01 -0500 Subject: [PATCH] Backlight fixes for Samsung and Dell machines (rhbz 1094948 1115713) --- ...isable_native_backlight-quirk-for-Sa.patch | 37 ++++++ kernel.spec | 11 ++ ...dd-use_native_backlight-quirk-and-en.patch | 107 ++++++++++++++++++ 3 files changed, 155 insertions(+) create mode 100644 acpi-video-Add-disable_native_backlight-quirk-for-Sa.patch create mode 100644 samsung-laptop-Add-use_native_backlight-quirk-and-en.patch diff --git a/acpi-video-Add-disable_native_backlight-quirk-for-Sa.patch b/acpi-video-Add-disable_native_backlight-quirk-for-Sa.patch new file mode 100644 index 000000000..daba28bfa --- /dev/null +++ b/acpi-video-Add-disable_native_backlight-quirk-for-Sa.patch @@ -0,0 +1,37 @@ +From: Hans de Goede +Date: Fri, 9 Jan 2015 15:28:29 +0100 +Subject: [PATCH] acpi-video: Add disable_native_backlight quirk for Samsung + 730U3E/740U3E + +The Samsung 730U3E/740U3E has integrated ATI Radeon graphics, and backlight +control does not work properly when using the native interfaces. + +BugLink: https://bugzilla.redhat.com/show_bug.cgi?id=1094948 +Signed-off-by: Hans de Goede +--- + drivers/acpi/video.c | 9 +++++++++ + 1 file changed, 9 insertions(+) + +diff --git a/drivers/acpi/video.c b/drivers/acpi/video.c +index 5b9c0bae4503..998c47f6d42b 100644 +--- a/drivers/acpi/video.c ++++ b/drivers/acpi/video.c +@@ -522,6 +522,15 @@ static struct dmi_system_id video_dmi_table[] __initdata = { + DMI_MATCH(DMI_PRODUCT_NAME, "370R4E/370R4V/370R5E/3570RE/370R5V"), + }, + }, ++ { ++ /* https://bugzilla.redhat.com/show_bug.cgi?id=1094948 */ ++ .callback = video_disable_native_backlight, ++ .ident = "SAMSUNG 730U3E/740U3E", ++ .matches = { ++ DMI_MATCH(DMI_SYS_VENDOR, "SAMSUNG ELECTRONICS CO., LTD."), ++ DMI_MATCH(DMI_PRODUCT_NAME, "730U3E/740U3E"), ++ }, ++ }, + + { + /* https://bugzilla.redhat.com/show_bug.cgi?id=1163574 */ +-- +2.1.0 + diff --git a/kernel.spec b/kernel.spec index 5e6f642e1..935967514 100644 --- a/kernel.spec +++ b/kernel.spec @@ -622,6 +622,11 @@ Patch26126: uas-Do-not-blacklist-ASM1153-disk-enclosures.patch Patch26127: uas-Add-US_FL_NO_ATA_1X-for-2-more-Seagate-disk-encl.patch Patch26128: uas-Add-no-report-opcodes-quirk-for-Simpletech-devic.patch +#rhbz 1115713 +Patch26129: samsung-laptop-Add-use_native_backlight-quirk-and-en.patch +#rhbz 1094948 +Patch26131: acpi-video-Add-disable_native_backlight-quirk-for-Sa.patch + # git clone ssh://git.fedorahosted.org/git/kernel-arm64.git, git diff master...devel Patch30000: kernel-arm64.patch @@ -1352,6 +1357,11 @@ ApplyPatch uas-Do-not-blacklist-ASM1153-disk-enclosures.patch ApplyPatch uas-Add-US_FL_NO_ATA_1X-for-2-more-Seagate-disk-encl.patch ApplyPatch uas-Add-no-report-opcodes-quirk-for-Simpletech-devic.patch +#rhbz 1115713 +ApplyPatch samsung-laptop-Add-use_native_backlight-quirk-and-en.patch +#rhbz 1094948 +ApplyPatch acpi-video-Add-disable_native_backlight-quirk-for-Sa.patch + %if 0%{?aarch64patches} ApplyPatch kernel-arm64.patch %ifnarch aarch64 # this is stupid, but i want to notice before secondary koji does. @@ -2219,6 +2229,7 @@ fi # || || %changelog * Mon Jan 12 2015 Josh Boyer +- Backlight fixes for Samsung and Dell machines (rhbz 1094948 1115713) - Add various UAS quirks (rhbz 1124119) - Add patch to fix loop in VDSO (rhbz 1178975) diff --git a/samsung-laptop-Add-use_native_backlight-quirk-and-en.patch b/samsung-laptop-Add-use_native_backlight-quirk-and-en.patch new file mode 100644 index 000000000..30f57302a --- /dev/null +++ b/samsung-laptop-Add-use_native_backlight-quirk-and-en.patch @@ -0,0 +1,107 @@ +From: Hans de Goede +Date: Fri, 9 Jan 2015 14:51:21 +0100 +Subject: [PATCH] samsung-laptop: Add use_native_backlight quirk, and enable it + on some models + +Since kernel 3.14 the backlight control has been broken on various Samsung +Atom based netbooks. This has been bisected and this problem happens since +commit b35684b8fa94 ("drm/i915: do full backlight setup at enable time") + +This has been reported and discussed in detail here: +http://lists.freedesktop.org/archives/intel-gfx/2014-July/049395.html + +Unfortunately no-one has been able to fix this. This only affects Samsung +Atom netbooks, and the Linux kernel and the BIOS of those laptops have never +worked well together. All affected laptops already have a quirk to avoid using +the standard acpi-video interface and instead use the samsung specific SABI +interface which samsung-laptop uses. It seems that recent fixes to the i915 +driver have also broken backlight control through the SABI interface. + +The intel_backlight driver OTOH works fine, and also allows for finer grained +backlight control. So add a new use_native_backlight quirk, and replace the +broken_acpi_video quirk with this quirk for affected models. This new quirk +disables acpi-video as before and also stops samsung-laptop from registering +the SABI based samsung_laptop backlight interface, leaving only the working +intel_backlight interface. + +This commit enables this new quirk for 3 models which are known to be affected, +chances are that it needs to be used on other models too. + +BugLink: https://bugzilla.redhat.com/show_bug.cgi?id=1094948 # N145P +BugLink: https://bugzilla.redhat.com/show_bug.cgi?id=1115713 # N250P +Reported-by: Bertrik Sikken # N150P +Cc: stable@vger.kernel.org # 3.16 +Signed-off-by: Hans de Goede +--- + drivers/platform/x86/samsung-laptop.c | 20 +++++++++++++++++--- + 1 file changed, 17 insertions(+), 3 deletions(-) + +diff --git a/drivers/platform/x86/samsung-laptop.c b/drivers/platform/x86/samsung-laptop.c +index 864290243e46..477de0a9e1ee 100644 +--- a/drivers/platform/x86/samsung-laptop.c ++++ b/drivers/platform/x86/samsung-laptop.c +@@ -353,6 +353,7 @@ struct samsung_quirks { + bool broken_acpi_video; + bool four_kbd_backlight_levels; + bool enable_kbd_backlight; ++ bool use_native_backlight; + }; + + static struct samsung_quirks samsung_unknown = {}; +@@ -361,6 +362,10 @@ static struct samsung_quirks samsung_broken_acpi_video = { + .broken_acpi_video = true, + }; + ++static struct samsung_quirks samsung_use_native_backlight = { ++ .use_native_backlight = true, ++}; ++ + static struct samsung_quirks samsung_np740u3e = { + .four_kbd_backlight_levels = true, + .enable_kbd_backlight = true, +@@ -1507,7 +1512,7 @@ static struct dmi_system_id __initdata samsung_dmi_table[] = { + DMI_MATCH(DMI_PRODUCT_NAME, "N150P"), + DMI_MATCH(DMI_BOARD_NAME, "N150P"), + }, +- .driver_data = &samsung_broken_acpi_video, ++ .driver_data = &samsung_use_native_backlight, + }, + { + .callback = samsung_dmi_matched, +@@ -1517,7 +1522,7 @@ static struct dmi_system_id __initdata samsung_dmi_table[] = { + DMI_MATCH(DMI_PRODUCT_NAME, "N145P/N250P/N260P"), + DMI_MATCH(DMI_BOARD_NAME, "N145P/N250P/N260P"), + }, +- .driver_data = &samsung_broken_acpi_video, ++ .driver_data = &samsung_use_native_backlight, + }, + { + .callback = samsung_dmi_matched, +@@ -1557,7 +1562,7 @@ static struct dmi_system_id __initdata samsung_dmi_table[] = { + DMI_MATCH(DMI_PRODUCT_NAME, "N250P"), + DMI_MATCH(DMI_BOARD_NAME, "N250P"), + }, +- .driver_data = &samsung_broken_acpi_video, ++ .driver_data = &samsung_use_native_backlight, + }, + { + .callback = samsung_dmi_matched, +@@ -1626,6 +1631,15 @@ static int __init samsung_init(void) + pr_info("Disabling ACPI video driver\n"); + acpi_video_unregister(); + } ++ ++ if (samsung->quirks->use_native_backlight) { ++ pr_info("Using native backlight driver\n"); ++ /* Tell acpi-video to not handle the backlight */ ++ acpi_video_dmi_promote_vendor(); ++ acpi_video_unregister(); ++ /* And also do not handle it ourselves */ ++ samsung->handle_backlight = false; ++ } + #endif + + ret = samsung_platform_init(samsung); +-- +2.1.0 +