lkml.org 
[lkml]   [2003]   [Jul]   [22]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
Subject[PATCH][2.6] Fix for Toshiba laptop keyboards
Here is a patch that fixes the problem we've seen on Toshiba laptop
keyboards.

It has been tested on my regular keyboard, and Ralf Hildebrandt has
confirmed that it fixes the problem on his Toshiba.

Chris


--- a/drivers/input/serio/i8042.c 2003-06-01 09:56:28.000000000 -0400
+++ b/drivers/input/serio/i8042.c 2003-07-21 22:19:53.000000000 -0400
@@ -59,6 +59,7 @@
static unsigned char i8042_initial_ctr;
static unsigned char i8042_ctr;
static unsigned char i8042_last_e0;
+static unsigned char i8042_last_release;
static unsigned char i8042_mux_open;
struct timer_list i8042_timer;

@@ -406,15 +407,22 @@

if (data > 0x7f) {
unsigned char index = (data & 0x7f) | (i8042_last_e0 << 7);
+ /* work around hardware that doubles key releases */
+ if (index == i8042_last_release) {
+ dbg("i8042 skipped double release (%d)\n", index);
+ continue;
+ }
if (index == 0xaa || index == 0xb6)
set_bit(index, i8042_unxlate_seen);
if (test_and_clear_bit(index, i8042_unxlate_seen)) {
serio_interrupt(&i8042_kbd_port, 0xf0, dfl, regs);
data = i8042_unxlate_table[data & 0x7f];
+ i8042_last_release = index;
}
} else {
set_bit(data | (i8042_last_e0 << 7), i8042_unxlate_seen);
data = i8042_unxlate_table[data];
+ i8042_last_release = 0;
}

i8042_last_e0 = (data == 0xe0);
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2005-03-22 13:47    [W:0.044 / U:0.612 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site