2001-02-25 13:13:41

by Mark Clegg

[permalink] [raw]
Subject: [PATCH] 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


--- drivers/char/pc_keyb.c.orig Sat Feb 24 20:01:46 2001
+++ drivers/char/pc_keyb.c Sat Feb 24 20:02:03 2001
@@ -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;
}



2001-02-25 17:55:40

by Alan

[permalink] [raw]
Subject: Re: [PATCH] 2.4.x kernel keyboard fix for Digital HiNote Ultra 2000

> 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).

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.

> --- drivers/char/pc_keyb.c.orig Sat Feb 24 20:01:46 2001
> +++ drivers/char/pc_keyb.c Sat Feb 24 20:02:03 2001
> @@ -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 */

Instead of commenting it put

mdelay(1);

before and after, and let me know if that helps

Alan

2001-02-26 20:45:30

by Mark Clegg

[permalink] [raw]
Subject: Re: [PATCH] 2.4.x kernel keyboard fix for Digital HiNote Ultra 2000

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....

--- drivers/char/pc_keyb.c.orig Mon Feb 26 20:22:45 2001
+++ drivers/char/pc_keyb.c Mon Feb 26 20:15:48 2001
@@ -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.

> > 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).
>
> 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.
>
> > --- drivers/char/pc_keyb.c.orig Sat Feb 24 20:01:46 2001
> > +++ drivers/char/pc_keyb.c Sat Feb 24 20:02:03 2001
> > @@ -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 */
>
> Instead of commenting it put
>
> mdelay(1);
>
> before and after, and let me know if that helps
>
> Alan

--
+-------------------------------------------------------------------+
| Mark Clegg http://www.cleggies.freeserve.co.uk |
| 38th Rossendale (Open) Scout Group http://www.the38thrsg.org.uk |
+-------------------------------------------------------------------+