|
@@ -258,6 +258,13 @@ uvc_function_setup(struct usb_function *f, const struct usb_ctrlrequest *ctrl)
|
|
|
memcpy(&uvc_event->req, ctrl, sizeof(uvc_event->req));
|
|
|
v4l2_event_queue(&uvc->vdev, &v4l2_event);
|
|
|
|
|
|
+ /* Pass additional setup data to userspace */
|
|
|
+ if (uvc->event_setup_out && uvc->event_length) {
|
|
|
+ uvc->control_req->length = uvc->event_length;
|
|
|
+ return usb_ep_queue(uvc->func.config->cdev->gadget->ep0,
|
|
|
+ uvc->control_req, GFP_ATOMIC);
|
|
|
+ }
|
|
|
+
|
|
|
return 0;
|
|
|
}
|
|
|
|