#include <linux/kernel.h>
#include <linux/device.h>
#include <linux/errno.h>
#include <linux/usb/ch9.h>
#include <linux/usb/gadget.h>
#include <linux/usb/video.h>
#include <linux/unaligned.h>
#include <media/v4l2-dev.h>
#include "uvc.h"
#include "uvc_queue.h"
#include "uvc_video.h"
static int
uvc_video_encode_header(struct uvc_video *video, struct uvc_buffer *buf,
u8 *data, int len)
{ … }
static int
uvc_video_encode_data(struct uvc_video *video, struct uvc_buffer *buf,
u8 *data, int len)
{ … }
static void
uvc_video_encode_bulk(struct usb_request *req, struct uvc_video *video,
struct uvc_buffer *buf)
{ … }
static void
uvc_video_encode_isoc_sg(struct usb_request *req, struct uvc_video *video,
struct uvc_buffer *buf)
{ … }
static void
uvc_video_encode_isoc(struct usb_request *req, struct uvc_video *video,
struct uvc_buffer *buf)
{ … }
static void
uvc_video_free_request(struct uvc_request *ureq, struct usb_ep *ep)
{ … }
static int uvcg_video_ep_queue(struct uvc_video *video, struct usb_request *req)
{ … }
static int uvcg_video_usb_req_queue(struct uvc_video *video,
struct usb_request *req, bool queue_to_ep)
{ … }
static void uvc_video_ep_queue_initial_requests(struct uvc_video *video)
{ … }
static void
uvc_video_complete(struct usb_ep *ep, struct usb_request *req)
{ … }
static int
uvc_video_free_requests(struct uvc_video *video)
{ … }
static int
uvc_video_alloc_requests(struct uvc_video *video)
{ … }
static void uvcg_video_pump(struct work_struct *work)
{ … }
int
uvcg_video_disable(struct uvc_video *video)
{ … }
int uvcg_video_enable(struct uvc_video *video)
{ … }
int uvcg_video_init(struct uvc_video *video, struct uvc_device *uvc)
{ … }