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/