For Review/Testing: uhidev(4) USB driver level for devices with
multiple report ids
Mark Hobden
markhobden at gmail.com
Sun Mar 4 00:38:27 UTC 2007
This was originally ported from NetBSD by Maxime Henrion (mux), more recently
I have updated the patch and fixed a few bugs.
Current
http://www.terinea.co.uk/~mark/patches/uhidev-7-current-p1.diff
Stable (slightly older, should still apply)
http://www.terinea.co.uk/~mark/patches/uhidev-6-stable-p1.diff
I have also created a patch the gets some Microsoft keyboard/mouse sets and
Microsoft notebook mice working with the uhidev driver. Without this patch
invalid offsets cause the report size to be incorrect. It could make more sense
to change offsets in hid_get_item() instead though. I am sure there will be more
device Id's I have missed if you know of any please email me so I can update
the patch.
For Current and 6-Stable (requires uhidev patch to be applied first)
http://www.terinea.co.uk/~mark/patches/uhidev-add-ms.diff
The only problem I know of only exists in -CURRENT and is not caused by this
patch. On one of my machines since bus_dmamap_load() was introduced
(May 28 05:27:09) when the keyboard driver calls usbd_set_report_async()
to set the LEDs but nothing happens. If this happens for anyone else the
easiest way around this is to change 'uhidev_set_report_async' to
'uhidev_set_report' which is somewhere around line 1406 of the patched ukbd.c
but if kbdmux is disabled or not loaded this will cause a panic as it will try
and sleep in an interrupt thread.
I am currently working on a version for the "new" USB stack that I will post
when it works.
--
Mark
More information about the freebsd-usb
mailing list