I'm using a similar diff since january. This fix an issue with my mouse where I need to unplug the mouse then plug it back in another port to get it working.
http://cosmos.imaginatif.org/junk/patch-usb.h This problem still exist in -current. uhidev0 at uhub1 port 4 configuration 1 interface 0 "Microsoft Microsoft Basic Optical Mouse" rev 1.10/1.04 addr 2 uhidev0: iclass 3/1 ums0 at uhidev0: 3 buttons, Z dir wsmouse0 at ums0 mux 0 fb On Sun, Feb 27, 2011 at 10:30:02PM +0100, Mark Kettenis wrote: > The delays we use in our USB stack are typically larger than the values > mentioned in the offcial specs to: > > /* Allow for marginal (i.e. non-conforming) devices. */ > > It seems though that at least the USB_PORT_ROOT_RESET_DELAY is too > large and upsets the USB touchpanel on the Sony UX91S, resuting in: > > uhub2: device problem, disabling port 1 > > Reducing the delay makes the device appear: > > uhidev0 at uhub2 port 1 configuration 1 interface 0 "GUNZE USB Touch Panel" > rev 2.00/1.00 addr 2 > uhidev0: iclass 3/1 > ums0 at uhidev0: 3 buttons > wsmouse1 at ums0 mux 0 > > I've done some experimentation; 150 ms is still ok, but 200 ms isn't. > Linux uses only 50 ms here, so I settled for 100 ms to make sure that > if we tsleep slightly longer we don't run into problems. > > Obviously this diff can't go in until after release. But if this > fixes a significant number of devices, we might consider a temporary > hack. > > So please test, especially on systems where USB works fine! > > > Index: usb.h > =================================================================== > RCS file: /cvs/src/sys/dev/usb/usb.h,v > retrieving revision 1.36 > diff -u -p -r1.36 usb.h > --- usb.h 15 Jan 2011 23:58:43 -0000 1.36 > +++ usb.h 27 Feb 2011 21:24:12 -0000 > @@ -511,7 +511,7 @@ typedef struct { > #else > /* Allow for marginal (i.e. non-conforming) devices. */ > #define USB_PORT_RESET_DELAY 50 /* ms */ > -#define USB_PORT_ROOT_RESET_DELAY 250 /* ms */ > +#define USB_PORT_ROOT_RESET_DELAY 100 /* ms */ > #define USB_PORT_RESET_RECOVERY 250 /* ms */ > #define USB_PORT_POWERUP_DELAY 300 /* ms */ > #define USB_SET_ADDRESS_SETTLE 10 /* ms */