fd469c7
Bugzilla: 1012674
fd469c7
Upstream-status: Queued for 3.16
fd469c7
fd469c7
From d8aceabf18681a92e8031c43d3917f6826ac6691 Mon Sep 17 00:00:00 2001
fd469c7
From: Hans de Goede <hdegoede@redhat.com>
fd469c7
Date: Mon, 2 Jun 2014 17:41:05 +0200
fd469c7
Subject: [PATCH 08/14] acer-wmi: Switch to acpi_video_unregister_backlight
fd469c7
fd469c7
Switch from acpi_video_unregister(), to acpi_video_unregister_backlight(),
fd469c7
so that the hotkeys handler registered by acpi-video stays in place.
fd469c7
fd469c7
Since there are no mappings for the atkbd raw codes for the brightness
fd469c7
keys used by newer Acer models in /lib/udev/hwdb.d/60-keyboard.hwdb, and
fd469c7
since we map the wmi events with a code of KE_IGNORE, we rely on acpi-video
fd469c7
to do the hotkey handling for us.
fd469c7
fd469c7
For laptops such as the Acer Aspire 5750 which uses intel gfx this works
fd469c7
despite us calling acpi_video_unregister() because the following happens:
fd469c7
fd469c7
1) acpi-video module gets loaded (as it is a dependency of acer-wmi and i915)
fd469c7
2) acpi-video does NOT call acpi_video_register()
fd469c7
3) acer-wmi loads (assume it loads before i915), calls
fd469c7
acpi_video_dmi_promote_vendor(); which sets ACPI_VIDEO_BACKLIGHT_DMI_VENDOR
fd469c7
4) calls acpi_video_unregister -> not registered, nop
fd469c7
5) i915 loads, calls acpi_video_register
fd469c7
6) acpi_video_register registers the acpi_notifier for the hotkeys,
fd469c7
   does NOT register a backlight device because of ACPI_VIDEO_BACKLIGHT_DMI_VENDOR
fd469c7
fd469c7
But on the Acer Aspire 5750G, which uses nvidia graphics the following happens:
fd469c7
1) acpi-video module gets loaded (as it is a dependency of acer-wmi)
fd469c7
2) acpi-video calls acpi_video_register()
fd469c7
3) acpi_video_register registers the acpi_notifier for the hotkeys,
fd469c7
   and a backlight device
fd469c7
4) acer-wmi loads, calls acpi_video_dmi_promote_vendor()
fd469c7
5) calls acpi_video_unregister, this unregisters BOTH the acpi_notifier for
fd469c7
   the hotkeys AND the backlight device
fd469c7
fd469c7
And we end up without any handler for the brightness hotkeys. This patch fixes
fd469c7
this by switching over to acpi_video_unregister_backlight() which keeps the
fd469c7
hotkey handler in place.
fd469c7
fd469c7
https://bugzilla.kernel.org/show_bug.cgi?id=35622
fd469c7
fd469c7
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
fd469c7
---
fd469c7
 drivers/platform/x86/acer-wmi.c | 2 +-
fd469c7
 1 file changed, 1 insertion(+), 1 deletion(-)
fd469c7
fd469c7
diff --git a/drivers/platform/x86/acer-wmi.c b/drivers/platform/x86/acer-wmi.c
fd469c7
index c91f69b39db4..3a746998f92a 100644
fd469c7
--- a/drivers/platform/x86/acer-wmi.c
fd469c7
+++ b/drivers/platform/x86/acer-wmi.c
fd469c7
@@ -2228,7 +2228,7 @@ static int __init acer_wmi_init(void)
fd469c7
 		pr_info("Brightness must be controlled by acpi video driver\n");
fd469c7
 	} else {
fd469c7
 		pr_info("Disabling ACPI video driver\n");
fd469c7
-		acpi_video_unregister();
fd469c7
+		acpi_video_unregister_backlight();
fd469c7
 	}
fd469c7
 
fd469c7
 	if (wmi_has_guid(WMID_GUID3)) {
fd469c7
-- 
fd469c7
1.9.0
fd469c7