summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2018-05-21uvc-gadget: Dynamically watch/unwatch uvc device fdPaul Elder
When the uvc device fd is put on the watch list statically, then there are many "Unable to dequeue buffer: Invalid argument (22)." because the V4L2 API returns write events immediately when the stream is off. To fix this, add the fd to the watch list on streamon, and remove it on streamoff. Signed-off-by: Paul Elder <paul.elder@ideasonboard.com> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2018-05-21uvc-gadget: Use events libraryPaul Elder
Replace the manual implementation of the select-based event loop with the events library. This cleans up the code and simplifies event handling. Signed-off-by: Paul Elder <paul.elder@ideasonboard.com> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2018-05-21events: Remove select timeoutPaul Elder
The reason why no timeout is needed is twofold: When the stream is off extensive periods of time can pass without an event occurring if the host doesn't send any UVC request. As that period of time is unbound, we can't set any meaningful timeout. When the stream is on buffers are supposed to flow constantly. If buffers stop flowing that would indicate a bug somewhere in the stack, which could be caught by a timeout, but that we wouldn't be able to recover from anyway. The timeout is thus not needed and harmful when the stream is off. Remove it. Signed-off-by: Paul Elder <paul.elder@ideasonboard.com> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2018-05-21events: Switch to _DEFAULT_SOURCEPaul Elder
glibc version 2.27 warns that _BSD_SOURCE is deprecated in favour of _DEFAULT _SOURCE: # warning "_BSD_SOURCE and _SVID_SOURCE are deprecated, use _DEFAULT_SOURCE" Fix the source code accordingly. Signed-off-by: Paul Elder <paul.elder@ideasonboard.com> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2018-05-21events: Add a cleanup functionLaurent Pinchart
Add events to the watch list allocates memory. Add a cleanup function to free all memory at cleanup time without having to remove all events explicitly one by one. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2018-05-21events: Extend the events_unwatch_fd() API with an event typeLaurent Pinchart
If a single file descriptor is being watch for multiple event types, it will be present in multiple entries in the watch list. The events_unwatch_fd() function will remove the first entry regardless of its type, not allowing removal of a particular event type. Fix this by extending the events_unwatch_fd() API to take an event type, and remove the corresponding entry. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2018-05-21events: Import event handling library from omap3-isp-liveLaurent Pinchart
The omap3-isp-live project [1] includes a generic event handling library that implements a select-based loop. Instead of reinventing the wheel, import the library and use it. The original license hasn't been modified, and includes both GPL-2.0+ and LGPL-2.1+ code. The sole copyright owner is Laurent Pinchart. [1] git://git.ideasonboard.org/omap3-isp-live.git Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2018-05-21uvc-gadget: Add .gitignore filePaul Elder
Signed-off-by: Paul Elder <paul.elder@ideasonboard.com> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2018-05-20uvc-gadget: Use new kernel API headerLaurent Pinchart
The UVC gadget driver now defines its API in the linux/usb/g_uvc.h public header, use it instead of including an internal kernel header through a relative path. The public API doesn't define the UVC_INTF_CONTROL and UVC_INTF_STREAMING macros, define them locally until we can get rid of them. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2017-03-06uvc-gadget: Do not send Set Interface (alternate setting) response twiceRoger Quadros
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 <rogerq@ti.com> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2010-06-07Initial importLaurent Pinchart
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>