[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Date: Fri, 3 Mar 2017 13:17:15 +0200
From: Roger Quadros <rogerq@...com>
To: <laurent.pinchart@...asonboard.com>
CC: <balbi@...nel.org>, <b-liu@...com>, <nsekhar@...com>,
<linux-usb@...r.kernel.org>, <linux-kernel@...r.kernel.org>,
Roger Quadros <rogerq@...com>
Subject: [PATCH] uvc-gadget: Fix Set Interface (alternate setting) response behaviour
On alternate setting change, webcam gadget sends us a UVC_EVENT_STREAMON
or UVC_EVENT_STREAMOFF event. It expects delayed status response on
STREAMON event only but doesn't expect us to send that response over USB.
It sends the delayed response when we issue the VIDIOC_STREAMON ioctl.
So we must not send UVCIOC_SEND_RESPONSE ioctl in these cases that too
with invalid response length.
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 <rogerq@...com>
---
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);
--
2.7.4
Powered by blists - more mailing lists