2.4.x kernel keyboard fix for Digital HiNote Ultra 2000
PATCH 1/1 2.4.x kernel keyboard fix for Digital HiNote Ultra 2000
I have been using the 2.2.x kernels on the Digital HiNote Ultra 2000 (Mobile Pentium MMX 266) (I think this system was later rebadged as a Compaq Armada 6500) without problem, however, on upgrading to the 2.4 series (2.4.0, 2.4.1 and 2.4.2) I have experienced the system hanging quite reliably. - The problem goes away when an external keyboard/mouse is attached.
Further investigation showed that the system itself isn't hanging, just the keyboard/mouse becomes inoperable (I can still telnet into the system). Booting without X and GPM is fine but cat /dev/psaux will zap the keyboard.
I have traced this to drivers/char/pc_keyb.c and it is related to operation of the builtin mouse (synaptics touchpad).
It would appear that the keyboard hardware is rather sensitive to something. (RedHat 6.2 Kudzu locks it out as well - this one is documented in the HiNote HOWTO)).
I have resolved the problem by commenting out a line in drivers/char/pc_keyb.c related to fixing problems on a Toshiba 4030cdt. It would appear that the fix for the Tosh, breaks the HiNote. (I don't have a Tosh to experiment with).
Patch below.....
Regards
Mark
char/pc_keyb.c Sat Feb 24 20:02:03 2001 renamed from char/pc_keyb.c.orig Sat Feb 24 20:01:46 2001 +0 -1
@@ -909,7 +909,7 @@ aux_write_ack(AUX_ENABLE_DEV); /* Enable aux device */ kbd_write_cmd(AUX_INTS_ON); /* Enable controller ints */ - send_data(KBD_CMD_ENABLE); /* try to workaround
toshiba4030cdt problem */
+// send_data(KBD_CMD_ENABLE); /* try to workaround
toshiba4030cdt problem */
return 0;
}
Quoted 3 lines
drivers/char/pc_keyb.crelated to fixing problems on a Toshiba 4030cdt. It would appear that the fix for the Tosh, breaks the HiNote. (I don't have a Tosh to experiment with).
Reading the pc_keyb.c code two things strike me. The first is to wonder how the hell Linus let that code get submitted ;) and the second is that the delay rules are totally violated, and thats something we know the hinote's hate.
Quoted 10 lines
char/pc_keyb.c Sat Feb 24 20:02:03 2001 renamed from char/pc_keyb.c.orig Sat Feb 24 20:01:46 2001 +0
-1@@ -909,7 +909,7 @@ aux_write_ack(AUX_ENABLE_DEV); /* Enable aux device */ kbd_write_cmd(AUX_INTS_ON); /* Enable controller ints */ - send_data(KBD_CMD_ENABLE); /* try to workaroundtoshiba4030cdt problem */
+//send_data(KBD_CMD_ENABLE); /* try to workaround
toshiba4030cdt problem */
Instead of commenting it put
mdelay(1);
before and after, and let me know if that helps
Alan
I've tried adding mdelay(1) before and after but this doesn't help. However, increasing the delay does, and the minimum I've got to work is mdelay(2) before, with no delay afterwards. I don't know what the delay rules for the controller are, so it may be necessary to add one afterwards as well. It certainly doesn't seem to hurt the HiNote whether there is or not.
Regards
Mark
Revised patch....
char/pc_keyb.c Mon Feb 26 20:15:48 2001 renamed from char/pc_keyb.c.orig Mon Feb 26 20:22:45 2001 +1 -0
@@ -909,6 +909,7 @@ aux_write_ack(AUX_ENABLE_DEV); /* Enable aux device */ kbd_write_cmd(AUX_INTS_ON); /* Enable controller ints */ + mdelay(2); send_data(KBD_CMD_ENABLE); /* try to workaround toshiba4030cdt
problem */
return 0;
Akan Cox wrote.
Quoted 22 lines
Quoted 3 lines
drivers/char/pc_keyb.crelated to fixing problems on a Toshiba 4030cdt. It would appear that the fix for the Tosh, breaks the HiNote. (I don't have a Tosh to experiment with).Reading the
pc_keyb.ccode two things strike me. The first is to wonder how the hell Linus let that code get submitted ;) and the second is that the delay rules are totally violated, and thats something we know the hinote's hate.Quoted 10 lines
char/pc_keyb.c Sat Feb 24 20:02:03 2001 renamed from char/pc_keyb.c.orig Sat Feb 24 20:01:46 2001 +0
-1@@ -909,7 +909,7 @@ aux_write_ack(AUX_ENABLE_DEV); /* Enable aux device */ kbd_write_cmd(AUX_INTS_ON); /* Enable controller ints */ - send_data(KBD_CMD_ENABLE); /* try to workaroundtoshiba4030cdt problem */
+//send_data(KBD_CMD_ENABLE); /* try to workaround
toshiba4030cdt problem */Instead of commenting it put
Quoted 5 lines
mdelay(1);before and after, and let me know if that helps
Alan
--
+-------------------------------------------------------------------+ | Mark Clegg www.cleggies.freeserve.co.uk | | 38th Rossendale (Open) Scout Group www.the38thrsg.org.uk | +-------------------------------------------------------------------+