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¬±¨


Reply via email to