Hi Michael, On Monday 04 February 2013 19:03:56 Michael Grzeschik wrote: > On Thu, Jan 17, 2013 at 04:23:51PM +0530, Bhupesh Sharma wrote: > > This patch reworks the videobuffer management logic present in the UVC > > webcam gadget and ports it to use the "more apt" videobuf2 framework for > > video buffer management. > > > > To support routing video data captured from a real V4L2 video capture > > device with a "zero copy" operation on videobuffers (as they pass from > > the V4L2 domain to UVC domain via a user-space application), we need to > > support USER_PTR IO method at the UVC gadget side. > > > > So the V4L2 capture device driver can still continue to use MMAP IO > > method and now the user-space application can just pass a pointer to the > > video buffers being dequeued from the V4L2 device side while queueing > > them at the UVC gadget end. This ensures that we have a "zero-copy" > > design as the videobuffers pass from the V4L2 capture device to the UVC > > gadget. > > > > Note that there will still be a need to apply UVC specific payload > > headers on top of each UVC payload data, which will still require a copy > > operation to be performed in the 'encode' routines of the UVC gadget. > > > > This patch also addresses one issue found out while porting the UVC > > gadget to videobuf2 framework: > > - In case the usb requests queued by the gadget get completed > > with a status of -ESHUTDOWN (disconnected from host), > > the queue of videobuf2 should be cancelled to ensure that the > > application space daemon is not left in a state waiting for > > a vb2 to be successfully absorbed at the USB side. > > > > Signed-off-by: Bhupesh Sharma <bhupesh.sharma@xxxxxx> > > --- > > > > drivers/usb/gadget/Kconfig | 1 + > > drivers/usb/gadget/uvc_queue.c | 537 +++++++++++------------------------ > > drivers/usb/gadget/uvc_queue.h | 25 +-- > > drivers/usb/gadget/uvc_v4l2.c | 27 +-- > > With this Patch you could add this hunk: > > drivers/usb/gadget/uvc_v4l2.c | 5 ----- > 1 file changed, 5 deletions(-) > > diff --git a/drivers/usb/gadget/uvc_v4l2.c b/drivers/usb/gadget/uvc_v4l2.c > index b47e0f7..fa445d9 100644 > --- a/drivers/usb/gadget/uvc_v4l2.c > +++ b/drivers/usb/gadget/uvc_v4l2.c > @@ -337,13 +337,8 @@ uvc_v4l2_poll(struct file *file, poll_table *wait) > { > struct video_device *vdev = video_devdata(file); > struct uvc_device *uvc = video_get_drvdata(vdev); > - struct uvc_file_handle *handle = > to_uvc_file_handle(file->private_data); > unsigned int mask = 0; You can also remove the local mask variable and return uvc_queue_poll() directly. Bhupesh, could you please post a v4 of this patch with these modifications integrated, and rebased on top of my latest uvc-gadget branch ? > - poll_wait(file, &handle->vfh.wait, wait); > - if (v4l2_event_pending(&handle->vfh)) > - mask |= POLLPRI; > - > mask |= uvc_queue_poll(&uvc->video.queue, file, wait); > > return mask; > > The current implementation of vb2_poll already checks for pending events if > the fh has the v4l2_fh type. -- Regards, Laurent Pinchart -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html