#ifndef _UVC_GADGET_H_
#define _UVC_GADGET_H_
#include <linux/list.h>
#include <linux/mutex.h>
#include <linux/spinlock.h>
#include <linux/usb/composite.h>
#include <linux/videodev2.h>
#include <linux/wait.h>
#include <media/v4l2-device.h>
#include <media/v4l2-dev.h>
#include <media/v4l2-fh.h>
#include "uvc_queue.h"
struct usb_ep;
struct usb_request;
struct uvc_descriptor_header;
struct uvc_device;
#define UVC_TRACE_PROBE …
#define UVC_TRACE_DESCR …
#define UVC_TRACE_CONTROL …
#define UVC_TRACE_FORMAT …
#define UVC_TRACE_CAPTURE …
#define UVC_TRACE_CALLS …
#define UVC_TRACE_IOCTL …
#define UVC_TRACE_FRAME …
#define UVC_TRACE_SUSPEND …
#define UVC_TRACE_STATUS …
#define UVC_WARN_MINMAX …
#define UVC_WARN_PROBE_DEF …
extern unsigned int uvc_gadget_trace_param;
#define uvc_trace(flag, msg...) …
#define uvcg_dbg(f, fmt, args...) …
#define uvcg_info(f, fmt, args...) …
#define uvcg_warn(f, fmt, args...) …
#define uvcg_err(f, fmt, args...) …
#define UVC_MAX_REQUEST_SIZE …
#define UVC_MAX_EVENTS …
#define UVCG_REQUEST_HEADER_LEN …
struct uvc_request { … };
struct uvc_video { … };
enum uvc_state { … };
struct uvc_device { … };
static inline struct uvc_device *to_uvc(struct usb_function *f)
{ … }
struct uvc_file_handle { … };
#define to_uvc_file_handle(handle) …
extern void uvc_function_setup_continue(struct uvc_device *uvc, int disable_ep);
extern void uvc_function_connect(struct uvc_device *uvc);
extern void uvc_function_disconnect(struct uvc_device *uvc);
#endif