lkml.org 
[lkml]   [2005]   [Jan]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: AT-Keyboard probing too strict in current bk?
On Thu, Jan 27, 2005 at 05:47:34PM +0100, Michael Gernoth wrote:
> Hi,
>
> since the introduction of libps2 in the mainline 2.6 kernel I had the
> issue that my keyboard[1] was no longer recognized.
> The cause of this is that my "keyboard" responds to all commands with
> an acknowledgement (0xFA), even if the command is not implemented. One
> of those not implemented commands is 0xF2 (ATKBD_GETID_CMD).
>
> In drivers/input/keyboard/atkbd.c ATKBD_GETID_CMD is used to probe
> for the keyboard, and if this fails, another method of detecting
> the keyboard is used. It seems that in 2.6.10 atkbd_command
> indicated that my keyboard did not successfully execute the command,
> but in the current bk-version ps2_command is used, which indicates
> a successfull execution, leaving behind invalid keyboard-ids.
> This leads to the kernel ignoring my keyboard.

This is a bug in libps2, that's been fixed and submitted for 2.6.11.
Your keyboard should work again with 2.6.11, if the fix makes it there.
If a keyboard doesn't report the ID on a GETID command, ps2_command
should fail.

Old AT keyboards don't know the GETID command but at least they know
the SETLEDS command, which is how they're identified.

As a temporary workaround you can use atkbd.dumbkbd=1, which will cause
your LEDs not to work as a side effect, though.

> I fixed the problem in my keyboard-converter, but I don't know if
> the checking in keyboard-probing shouldn't be changed to catch that
> case, too. I have included a patch which does that.

We don't need to check the values, since the ps2_command will return an
error when the bug in libps2 is fixed.

> [1] SUN Type 5 keyboard connected to a self-built sun->ps2 adapter
>
> --- 1.73/drivers/input/keyboard/atkbd.c 2005-01-06 17:42:09 +01:00
> +++ edited/drivers/input/keyboard/atkbd.c 2005-01-27 17:27:03 +01:00
> @@ -512,7 +512,8 @@
> */
>
> param[0] = param[1] = 0xa5; /* initialize with invalid values */
> - if (ps2_command(ps2dev, param, ATKBD_CMD_GETID)) {
> + if (ps2_command(ps2dev, param, ATKBD_CMD_GETID) ||
> + (param[0] == 0xa5 && param[1] == 0xa5)) {
>
> /*
> * If the get ID command failed, we check if we can at least set the LEDs on

--
Vojtech Pavlik
SuSE Labs, SuSE CR
-
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 14:09    [W:0.054 / U:0.372 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site