Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 16 Jul 2007 21:09:43 +1200
From:      Sam Banks <w0lfie@clear.net.nz>
To:        current@FreeBSD.org
Subject:   Re: ukbd patch advice
Message-ID:  <469b35d7.197.31f0.5575@clear.net.nz>

index | next in thread | raw e-mail

[-- Attachment #1 --]
As suggested by Andrew Thompson, I have attached the patch
for ukbd.c to show the changes I've made.

Sam.




----- Original Message Follows -----
> 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.
> _______________________________________________
> freebsd-current@freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-current
> To unsubscribe, send any mail to
> "freebsd-current-unsubscribe@freebsd.org"

[-- Attachment #2 --]
--- ukbd.c.orig	2007-07-16 20:59:34.000000000 +1200
+++ ukbd.c	2007-07-16 21:02:37.000000000 +1200
 /*
  * HID spec: http://www.usb.org/developers/devclass_docs/HID1_11.pdf
@@ -93,6 +93,7 @@
 #define NKEYCODE 6
 
 struct ukbd_data {
+    u_int8_t    reserved;
 	u_int8_t	modifiers;
 #define MOD_CONTROL_L	0x01
 #define MOD_CONTROL_R	0x10
@@ -102,7 +103,6 @@
 #define MOD_ALT_R	0x40
 #define MOD_WIN_L	0x08
 #define MOD_WIN_R	0x80
-	u_int8_t	reserved;
 	u_int8_t	keycode[NKEYCODE];
 };
help

Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?469b35d7.197.31f0.5575>