I have a CD Tower device (a USB HID device) which always failed to be identified
under CURRENT source without following patch, it is always timeout, could anyone
look the following patch:
Index: usb_subr.c
===================================================================
RCS file: /home/ncvs/src/sys/dev/usb/usb_subr.c,v
retrieving revision 1.52
diff -u -u -r1.52 usb_subr.c
--- usb_subr.c 17 Jun 2002 20:52:26 -0000 1.52
+++ usb_subr.c 6 Jan 2003 07:48:51 -0000
@@ -1106,9 +1106,15 @@
usbd_reload_device_desc(usbd_device_handle dev)
{
usbd_status err;
-
+ int i;
+
/* Get the full device descriptor. */
- err = usbd_get_device_desc(dev, &dev->ddesc);
+ for (i = 0; i < 3; ++i) {
+ err = usbd_get_device_desc(dev, &dev->ddesc);
+ if (!err)
+ break;
+ usbd_delay_ms(dev, 200);
+ }
if (err)
return (err);
--
After patched, I can use usbhidctl to dump some informaton:
Report descriptor:
Collection page=0xffa0 usage=0x0001
Collection page=0xffa0 usage=0x0002
Input size=8 count=1 page=0xffa1 usage=0x0003, logical range -128..127, physical
range 0..-1
Input size=8 count=1 page=0xffa1 usage=0x0004, logical range -128..127, physical
range 0..-1
Input size=8 count=1 page=0xffa1 usage=0x0004, logical range -128..127, physical
range 0..-1
Input size=8 count=1 page=0xffa1 usage=0x0004, logical range -128..127, physical
range 0..-1
Input size=8 count=1 page=0xffa1 usage=0x0004, logical range -128..127, physical
range 0..-1
Input size=8 count=1 page=0xffa1 usage=0x0004, logical range -128..127, physical
range 0..-1
Input size=8 count=1 page=0xffa1 usage=0x0004, logical range -128..127, physical
range 0..-1
Input size=8 count=1 page=0xffa1 usage=0x0004, logical range -128..127, physical
range 0..-1
Output size=8 count=1 page=0xffa1 usage=0x0005, logical range -128..127, physical
range 0..-1
Output size=8 count=1 page=0xffa1 usage=0x0006, logical range -128..127, physical
range 0..-1
Output size=8 count=1 page=0xffa1 usage=0x0006, logical range -128..127, physical
range 0..-1
Output size=8 count=1 page=0xffa1 usage=0x0006, logical range -128..127, physical
range 0..-1
Output size=8 count=1 page=0xffa1 usage=0x0006, logical range -128..127, physical
range 0..-1
Output size=8 count=1 page=0xffa1 usage=0x0006, logical range -128..127, physical
range 0..-1
Output size=8 count=1 page=0xffa1 usage=0x0006, logical range -128..127, physical
range 0..-1
Output size=8 count=1 page=0xffa1 usage=0x0006, logical range -128..127, physical
range 0..-1
End collection
End collection
Total input size 8 bytes
Total output size 8 bytes
Total feature size 0 bytes
N�'���r��zǧvf���&j:+v���� �"�����r��y��y�r��z{b��^n�r��azg���