[media] uvcvideo: Update uvc_endpoint_max_bpi to handle USB_SPEED_WIRELESS devices
authorThomas Pugliese <thomas.pugliese@gmail.com>
Fri, 24 Jan 2014 21:17:28 +0000 (18:17 -0300)
committerMauro Carvalho Chehab <m.chehab@samsung.com>
Fri, 28 Feb 2014 16:21:57 +0000 (13:21 -0300)
Isochronous endpoints on devices with speed == USB_SPEED_WIRELESS can
have a max packet size ranging from 1-3584 bytes.  Add a case to
uvc_endpoint_max_bpi to handle USB_SPEED_WIRELESS.  Otherwise endpoints
for those devices will fall to the default case which masks off any
values > 2047.  This causes uvc_init_video to underestimate the
bandwidth available and fail to find a suitable alt setting for high
bandwidth video streams.

Signed-off-by: Thomas Pugliese <thomas.pugliese@gmail.com>
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
drivers/media/usb/uvc/uvc_video.c

index 898c208889cd2d55dd5a22522a2d06340eb0891d..103cd4e91855bc21b313c5f7d5aa90400d970136 100644 (file)
@@ -1453,6 +1453,9 @@ static unsigned int uvc_endpoint_max_bpi(struct usb_device *dev,
        case USB_SPEED_HIGH:
                psize = usb_endpoint_maxp(&ep->desc);
                return (psize & 0x07ff) * (1 + ((psize >> 11) & 3));
+       case USB_SPEED_WIRELESS:
+               psize = usb_endpoint_maxp(&ep->desc);
+               return psize;
        default:
                psize = usb_endpoint_maxp(&ep->desc);
                return psize & 0x07ff;