diff options
author | Mario Limonciello <mario_limonciello@dell.com> | 2009-06-10 15:40:46 -0400 |
---|---|---|
committer | Len Brown <len.brown@intel.com> | 2009-06-17 23:44:07 -0400 |
commit | 75d71c40dde5a9474c09ee291df22d50a1215bef (patch) | |
tree | e4ed056b2f6add618a3eeb8410ab9b8cf8143a7d /drivers/platform/x86 | |
parent | 07a2039b8eb0af4ff464efd3dfd95de5c02648c6 (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.c | 7 |
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); |