summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichał Kępień <kernel@kempniu.pl>2016-03-04 14:09:09 +0100
committerDarren Hart <dvhart@linux.intel.com>2016-03-23 10:05:50 -0700
commit13f5059ac5a6b8a824f8657e2fcf084ebecef896 (patch)
tree3f5ba2d57ddd19d42892a442ff37a8678b138483
parente09c4d5b15438bd86ff8bfb05d70f17915bb5979 (diff)
downloadlinux-13f5059ac5a6b8a824f8657e2fcf084ebecef896.tar.gz
linux-13f5059ac5a6b8a824f8657e2fcf084ebecef896.tar.bz2
linux-13f5059ac5a6b8a824f8657e2fcf084ebecef896.zip
dell-wmi: properly process Dell Instant Launch hotkey
On models on which an SMBIOS request needs to be issued in order for WMI events to be generated, pressing the Dell Instant Launch hotkey does not raise an i8042 interrupt - only a WMI event is generated (0xe025 on Dell Vostro V131). As that WMI event is the only way the kernel will be notified about pressing the Dell Instant Launch hotkey on such machines, the relevant keymap entry has to be changed to a KE_KEY one. However, the same WMI event should still be ignored on machines which do not require an SMBIOS request for enabling WMI, so filter it conditionally in dell_wmi_process_key(). Signed-off-by: Michał Kępień <kernel@kempniu.pl> Reviewed-by: Pali Rohár <pali.rohar@gmail.com> Signed-off-by: Darren Hart <dvhart@linux.intel.com>
-rw-r--r--drivers/platform/x86/dell-wmi.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/platform/x86/dell-wmi.c b/drivers/platform/x86/dell-wmi.c
index 65edd93df7de..3ea959ecd635 100644
--- a/drivers/platform/x86/dell-wmi.c
+++ b/drivers/platform/x86/dell-wmi.c
@@ -111,7 +111,7 @@ static const struct key_entry dell_wmi_legacy_keymap[] __initconst = {
{ KE_IGNORE, 0xe020, { KEY_MUTE } },
/* Shortcut and audio panel keys */
- { KE_IGNORE, 0xe025, { KEY_RESERVED } },
+ { KE_KEY, 0xe025, { KEY_PROG4 } },
{ KE_IGNORE, 0xe026, { KEY_RESERVED } },
{ KE_IGNORE, 0xe02e, { KEY_VOLUMEDOWN } },
@@ -235,6 +235,9 @@ static void dell_wmi_process_key(int reported_key)
acpi_video_handles_brightness_key_presses())
return;
+ if (reported_key == 0xe025 && !wmi_requires_smbios_request)
+ return;
+
sparse_keymap_report_entry(dell_wmi_input_dev, key, 1, true);
}