For Review/Testing: uhidev(4) USB driver level for devices with multiple report ids

From: Mark Hobden <markhobden_at_gmail.com>
Date: Sun, 4 Mar 2007 00:38:25 +0000
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
Received on Sun Mar 04 2007 - 00:03:48 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:39:06 UTC