From 3c5a666f9d2eea0e0f7e9a8a0eb8bbfd7687ca13 Mon Sep 17 00:00:00 2001 From: Roger Quadros Date: Fri, 3 Mar 2017 13:17:15 +0200 Subject: uvc-gadget: Do not send Set Interface (alternate setting) response twice On alternate setting change, the webcam gadget sends us a UVC_EVENT_STREAMON or UVC_EVENT_STREAMOFF event. In the first case, the driver will issue a delayed status response automatically when we call the VIDIOC_STREAMON ioctl. In the second case, the driver sends the status response immediately. We must thus not send the status response manually with UVCIOC_SEND_RESPONSE in any of those cases. Without this, the ISO streaming doesn't work if host application (e.g. luvcview) is closed and restarted. On dwc3 gadget controller it was resulting in Buffer Expiry error on the ISO endpoint. Signed-off-by: Roger Quadros Signed-off-by: Laurent Pinchart --- uvc-gadget.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/uvc-gadget.c b/uvc-gadget.c index 9ef315c..4d59ab8 100644 --- a/uvc-gadget.c +++ b/uvc-gadget.c @@ -597,12 +597,12 @@ uvc_events_process(struct uvc_device *dev) case UVC_EVENT_STREAMON: uvc_video_reqbufs(dev, 4); uvc_video_stream(dev, 1); - break; + return; case UVC_EVENT_STREAMOFF: uvc_video_stream(dev, 0); uvc_video_reqbufs(dev, 0); - break; + return; } ioctl(dev->fd, UVCIOC_SEND_RESPONSE, &resp); -- cgit v1.2.3