Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 16 Jul 2007 18:54:07 +1200
From:      Sam Banks <w0lfie@clear.net.nz>
To:        current@FreeBSD.org
Subject:   ukbd patch advice
Message-ID:  <469b160f.3c6.2409.12123@clear.net.nz>

index | next in thread | raw e-mail

Hey all,

I have been having a problem with my particular usb keyboard
(0x03 was always being written into the first element of
ukbd_data->keycode basically). I have tracked it down to a
problem somewhere in between the uhci chipset (same problem
with other cuts of uhci chipset), the uhci and/or ukbd
drivers and the keyboard.

A fix to the problem is to reorder members of the struct
ukbd_data. Originally, the members are ordered as modifiers,
reserved and keycode[6] (minus a bunch of #define's). If I
change this order to reserved, modifiers and keycode[6], my
keyboard starts to function as it should (minus lighting up
the LED's but that's another email all together :)). With
this reordering, it stops other usb keyboards which function
with the original code from working.

I'm wanting submit a patch for this fix (as other people are
experiencing the same problems) but I'm not sure how to do
this. I was thinking along the lines of the usb quirks
function but it appears outside of a function body, you
cannot have the normal if() type statements, only the
preprocessor #ifdef types. To me, having a kernel config
option for a single keyboard on a single driver seems quite
overkill.

Does anyone have any suggestions on what I should do or can
anyone point me to some code that deals with a similar
problem?

On a side note, is anyone able to shed any light into why
they think the above fix works? I am drawing a bit of a
blank to be honest. Is it possible that my fix is only
masking the problem?

If you need any more info or whatever, yell out.

Cheers,

Sam.


home | help

Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?469b160f.3c6.2409.12123>