usb: gadget: uvc: Make video streaming buffer size comply with USB3.0 SS
[deliverable/linux.git] / drivers / usb / gadget / uvc_video.c
index 885c393ee470f39b5e26ef63d46b29321f269981..fac99a97b7824e3a3cb9d40e055b0a6b0f8f87b6 100644 (file)
@@ -229,13 +229,18 @@ uvc_video_free_requests(struct uvc_video *video)
 static int
 uvc_video_alloc_requests(struct uvc_video *video)
 {
+       unsigned int req_size;
        unsigned int i;
        int ret = -ENOMEM;
 
        BUG_ON(video->req_size);
 
+       req_size = video->ep->maxpacket
+                * max_t(unsigned int, video->ep->maxburst, 1)
+                * (video->ep->mult + 1);
+
        for (i = 0; i < UVC_NUM_REQUESTS; ++i) {
-               video->req_buffer[i] = kmalloc(video->ep->maxpacket, GFP_KERNEL);
+               video->req_buffer[i] = kmalloc(req_size, GFP_KERNEL);
                if (video->req_buffer[i] == NULL)
                        goto error;
 
@@ -251,7 +256,8 @@ uvc_video_alloc_requests(struct uvc_video *video)
                list_add_tail(&video->req[i]->list, &video->req_free);
        }
 
-       video->req_size = video->ep->maxpacket;
+       video->req_size = req_size;
+
        return 0;
 
 error:
This page took 0.030282 seconds and 5 git commands to generate.