aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/platform/x86
diff options
context:
space:
mode:
authorMario Limonciello <mario_limonciello@dell.com>2009-06-10 15:40:46 -0400
committerLen Brown <len.brown@intel.com>2009-06-17 23:44:07 -0400
commit75d71c40dde5a9474c09ee291df22d50a1215bef (patch)
treee4ed056b2f6add618a3eeb8410ab9b8cf8143a7d /drivers/platform/x86
parent07a2039b8eb0af4ff464efd3dfd95de5c02648c6 (diff)
dell-wmi: mask off upper bytes of event response
In debugging with some future machines that actually contain BIOS level support for dell-wmi, I've determined that the upper half of the data that comes back from wmi_get_event_data may sometimes contain extra information that isn't currently relevant when pulling scan codes out of the data. This causes dell-wmi to improperly respond to these events. Signed-off-by: Mario Limonciello <mario_limonciello@dell.com> Signed-off-by: Matthew Garrett <mjg@redhat.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Len Brown <len.brown@intel.com>
Diffstat (limited to 'drivers/platform/x86')
-rw-r--r--drivers/platform/x86/dell-wmi.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/platform/x86/dell-wmi.c b/drivers/platform/x86/dell-wmi.c
index 2fab94162147..8a0d39ee9217 100644
--- a/drivers/platform/x86/dell-wmi.c
+++ b/drivers/platform/x86/dell-wmi.c
@@ -122,7 +122,12 @@ static void dell_wmi_notify(u32 value, void *context)
122 122
123 if (obj && obj->type == ACPI_TYPE_BUFFER) { 123 if (obj && obj->type == ACPI_TYPE_BUFFER) {
124 int *buffer = (int *)obj->buffer.pointer; 124 int *buffer = (int *)obj->buffer.pointer;
125 key = dell_wmi_get_entry_by_scancode(buffer[1]); 125 /*
126 * The upper bytes of the event may contain
127 * additional information, so mask them off for the
128 * scancode lookup
129 */
130 key = dell_wmi_get_entry_by_scancode(buffer[1] & 0xFFFF);
126 if (key) { 131 if (key) {
127 input_report_key(dell_wmi_input_dev, key->keycode, 1); 132 input_report_key(dell_wmi_input_dev, key->keycode, 1);
128 input_sync(dell_wmi_input_dev); 133 input_sync(dell_wmi_input_dev);