diff --git a/scripts/kernel/uvc-debug.patch b/scripts/kernel/uvc-debug.patch index ce2416e..75a3365 100644 --- a/scripts/kernel/uvc-debug.patch +++ b/scripts/kernel/uvc-debug.patch @@ -42,10 +42,26 @@ + video->uvc_num_requests, video->reqs_per_frame, + video->queue.use_sg, video->queue.flags); + +@@ -807,6 +820,15 @@ + video->is_enabled = true; + ++ if (!video->queue.queue.lock || !video->queue.queue.ops || ++ !video->queue.queue.mem_ops) { ++ uvcg_err(&video->uvc->func, ++ "Video queue not ready: dev=%p lock=%p ops=%p mem_ops=%p buf_ops=%p drv_priv=%p type=%u io_modes=0x%x\n", ++ video->queue.queue.dev, video->queue.queue.lock, ++ video->queue.queue.ops, video->queue.queue.mem_ops, ++ video->queue.queue.buf_ops, video->queue.queue.drv_priv, ++ video->queue.queue.type, video->queue.queue.io_modes); ++ return -EINVAL; ++ } ++ + if ((ret = uvcg_queue_enable(&video->queue, 1)) < 0) + return ret; /* * Safe to access request related fields without req_lock because * this is the only thread currently active, and no other - + @@ -510,6 +532,19 @@ if (req_size > max_req_size) { /* The prepared interval length and expected buffer size @@ -55,7 +71,7 @@ req_size = max_req_size; } video->req_size = req_size; - + if (!req_size || !video->max_payload_size || !video->imagesize || !nreq) { uvcg_info(&uvc->func, "Video prep requests: imagesize=%u interval=%u interval_dur=%u nreq=%u header=%u req_size=%u max_req=%u max_payload=%u ep_maxpacket=%u maxburst=%u mult=%u bInterval=%u speed=%u\n", @@ -65,5 +81,5 @@ video->ep->maxburst, video->ep->mult, video->ep->desc->bInterval, cdev->gadget->speed); } - + /* We need to compensate the amount of requests to be