diff mbox

Ignore garbage in dell-wmi events

Message ID 49F73F92.9000201@dell.com (mailing list archive)
State RFC, archived
Headers show

Commit Message

Mario Limonciello April 28, 2009, 5:40 p.m. UTC
Hi:

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.

I'm attaching a patch (Exchange would munge up the line breaks otherwise).

Thanks,

Comments

Matthew Garrett April 29, 2009, 4:55 p.m. UTC | #1
Hi Mario,

Can you add your signed-off-by: for this?

Thanks,
Andrew Morton April 29, 2009, 8:16 p.m. UTC | #2
On Tue, 28 Apr 2009 12:40:34 -0500
Mario Limonciello <mario_limonciello@dell.com> wrote:

> 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.
> 
> I'm attaching a patch (Exchange would munge up the line breaks otherwise).

Can you please send along a Signed-off-by: for this patch? 
Documentation/SubmittingPatches explains what it's all about.

Thanks.
--
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

--- a/drivers/platform/x86/dell-wmi.c~	2009-04-28 12:32:32.000000000 -0500
+++ b/drivers/platform/x86/dell-wmi.c	2009-04-28 12:33:02.000000000 -0500
@@ -182,7 +182,7 @@ 
 
 	if (obj && obj->type == ACPI_TYPE_BUFFER) {
 		int *buffer = (int *)obj->buffer.pointer;
-		key = dell_wmi_get_entry_by_scancode(buffer[1]);
+		key = dell_wmi_get_entry_by_scancode(0xFFFF & buffer[1]);
 		if (key) {
 			input_report_key(dell_wmi_input_dev, key->keycode, 1);
 			input_sync(dell_wmi_input_dev);
@@ -190,7 +190,7 @@ 
 			input_sync(dell_wmi_input_dev);
 		} else
 			printk(KERN_INFO "dell-wmi: Unknown key %x pressed\n",
-			       buffer[1]);
+			       0xFFFF & buffer[1]);
 	}
 }