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 [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to