2003-07-22 22:23:05

by

[permalink] [raw]
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);


2003-07-23 15:32:06

by Vojtech Pavlik

[permalink] [raw]
Subject: Re: [PATCH][2.6] Fix for Toshiba laptop keyboards

On Tue, Jul 22, 2003 at 06:37:47PM -0400, Chris Heath wrote:
> 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.

Good fix, thanks!


--
Vojtech Pavlik
SuSE Labs, SuSE CR