[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <1243865677-25425-1-git-send-email-mjg@redhat.com>
Date: Mon, 1 Jun 2009 15:14:35 +0100
From: Matthew Garrett <mjg@...hat.com>
To: linux-acpi@...r.kernel.org
Cc: linux-kernel@...r.kernel.org,
Mario Limonciello <mario_limonciello@...l.com>,
Matthew Garrett <mjg@...hat.com>
Subject: [PATCH 1/3] dell-wmi: Mask off upper bytes of event response
From: Mario Limonciello <mario_limonciello@...l.com>
From: Mario Limonciello <mario_limonciello@...l.com>
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@...l.com>
Signed-off-by: Matthew Garrett <mjg@...hat.com>
---
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 2fab941..8a0d39e 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)
if (obj && obj->type == ACPI_TYPE_BUFFER) {
int *buffer = (int *)obj->buffer.pointer;
- key = dell_wmi_get_entry_by_scancode(buffer[1]);
+ /*
+ * The upper bytes of the event may contain
+ * additional information, so mask them off for the
+ * scancode lookup
+ */
+ key = dell_wmi_get_entry_by_scancode(buffer[1] & 0xFFFF);
if (key) {
input_report_key(dell_wmi_input_dev, key->keycode, 1);
input_sync(dell_wmi_input_dev);
--
1.6.2.2
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists