Re: 2.5.40: AT keyboard input problem

From: Vojtech Pavlik (vojtech@suse.cz)
Date: Mon Oct 07 2002 - 07:31:33 EST


On Thu, Oct 03, 2002 at 02:43:04PM +0200, Tobias Ringstrom wrote:
> On Thu, 3 Oct 2002, Vojtech Pavlik wrote:
>
> > Good. You can use that for now, and I'll make a fix so that it works
> > even without it.
>
> Great, thanks!

Ok, here is the promised fix. I'll send it to Linus soon.

===================================================================

diff -Nru a/drivers/input/serio/i8042.c b/drivers/input/serio/i8042.c
--- a/drivers/input/serio/i8042.c Mon Oct 7 14:30:14 2002
+++ b/drivers/input/serio/i8042.c Mon Oct 7 14:30:14 2002
@@ -63,7 +63,7 @@
 
 extern struct pt_regs *kbd_pt_regs;
 
-static unsigned long i8042_unxlate_seen[128 / BITS_PER_LONG];
+static unsigned long i8042_unxlate_seen[256 / BITS_PER_LONG];
 static unsigned char i8042_unxlate_table[128] = {
           0,118, 22, 30, 38, 37, 46, 54, 61, 62, 70, 69, 78, 85,102, 13,
          21, 29, 36, 45, 44, 53, 60, 67, 68, 77, 84, 91, 90, 20, 28, 27,
@@ -407,14 +407,14 @@
                 }
 
                 if (data > 0x7f) {
- if (test_and_clear_bit(data & 0x7f, i8042_unxlate_seen)) {
+ if (test_and_clear_bit((data & 0x7f) | (i8042_last_e0 << 7), i8042_unxlate_seen)) {
                                 serio_interrupt(&i8042_kbd_port, 0xf0, dfl);
                                 if (i8042_last_e0 && (data == 0xaa || data == 0xb6))
- set_bit(data & 0x7f, i8042_unxlate_seen);
+ set_bit((data & 0x7f) | (i8042_last_e0 << 7), i8042_unxlate_seen);
                                 data = i8042_unxlate_table[data & 0x7f];
                         }
                 } else {
- set_bit(data, i8042_unxlate_seen);
+ set_bit(data | (i8042_last_e0 << 7), i8042_unxlate_seen);
                         data = i8042_unxlate_table[data];
                 }
 

===================================================================

-- 
Vojtech Pavlik
SuSE Labs
-
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/



This archive was generated by hypermail 2b29 : Mon Oct 07 2002 - 22:00:58 EST