PS/2 keyboard support in mid-boot borked
Maksim Yevmenkin
maksim.yevmenkin at savvis.net
Tue Jul 11 19:52:00 UTC 2006
Eric Anderson wrote:
[..]
>>> I hope this will be something more than a FAQ with some patches floating
>>> around for 7.0-RELEASE.
>>
>> if you use usb keyboard (or ps2 to usb converter with ps2 keyboard),
>> does it work?
>
> Yes.
ok, good.
>> like i said before, i think, the problem is that atkbd(4) does not
>> deal with "polled" mode properly. kbdmux(4) never sees input from
>> atkbd(4) because (imo) atkbd(4) interrupt handler is never called. the
>> atkbd(4) patch i posted awhile ago has a regression, i.e. atkbd(4)
>> produces duplicate characters in ddb(4), midboot, etc. *without*
>> kbdmux(4). patched atkbd(4) with kbdmux(4) works fine.
>>
>> i'm actually a bit puzzled why atkbd(4) works without kbdmux(4) in
>> ddb(4), midboot,e etc. obviously i need to spend some quality time
>> with the debugger :) i hope to get to it, eventually :) sorry for the
>> delay.
>
> What can we do to help you debug it? I know for me, it's a major pain,
> and I'm sure others have gotten jammed up too.
i just spent half of my lunch hour with the debugger :) and, i think, i
know what is going on here. i think, there is some twisted interaction
going on in
sccngetch(int flags)
{
...
kbd_poll(scp->sc->kbd, TRUE);
c = scgetc(scp->sc, SCGETC_CN | flags);
kbd_poll(scp->sc->kbd, FALSE);
...
}
and
sckbdevent()
{
...
while ((c = scgetc(sc, SCGETC_NONBLOCK)) != NOKEY) {
...
}
code that causes duplicated input in atkbd(4) without kbdmux(4). so, my
original patch was not 100% correct. i will try to redo it to see if i
can work around the problem.
thanks,
max
More information about the freebsd-current
mailing list