On Sat, Feb 24, 2007 at 07:51:17PM -0800, Pete Zaitcev wrote:
> Fix high-speed HID. According to Stuart:
> 
>  The problem is that the usbhid driver (in hid-core.c) is _not_ modifying
>  the  interrupt URB interval for high speed devices before calling 
>  FILL_INT_URB, which causes the interval to be too low, and the ehci
>  driver won't schedule the URB.
> 
>  Specifically this was seen with a new USB 2.0 Avocent KVM dongle.
> 
> Signed-off-by: Pete Zaitcev <[EMAIL PROTECTED]>
> 
> --- linux-2.4.33/drivers/usb/hid-core.c       2005-04-03 18:42:19.000000000 
> -0700
> +++ linux-2.4.33-highhid/drivers/usb/hid-core.c       2007-02-22 
> 11:19:05.000000000 -0800
> @@ -1329,7 +1329,7 @@ static struct hid_device *usb_hid_config
>       for (n = 0; n < interface->bNumEndpoints; n++) {
>  
>               struct usb_endpoint_descriptor *endpoint = 
> &interface->endpoint[n];
> -             int pipe, maxp;
> +             int pipe, maxp, interval;
>  
>               if ((endpoint->bmAttributes & 3) != 3)          /* Not an 
> interrupt endpoint */
>                       continue;
> @@ -1339,8 +1339,11 @@ static struct hid_device *usb_hid_config
>  
>               pipe = usb_rcvintpipe(dev, endpoint->bEndpointAddress);
>               maxp = usb_maxpacket(dev, pipe, usb_pipeout(pipe));
> +             interval = endpoint->bInterval;
> +             if (dev->speed == USB_SPEED_HIGH)
> +                     interval = 1 << (interval - 1);
>  
> -             FILL_INT_URB(&hid->urb, dev, pipe, hid->buffer, maxp > 32 ? 32 
> : maxp, hid_irq, hid, endpoint->bInterval);
> +             FILL_INT_URB(&hid->urb, dev, pipe, hid->buffer, maxp > 32 ? 32 
> : maxp, hid_irq, hid, interval);
>  
>               break;
>       }

Applied to both 2.4.35-pre and 2.4.34-stable.
Thanks Pete !

Willy


-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys-and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
linux-usb-devel@lists.sourceforge.net
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to