#include <asm/barrier.h>
#include <linux/kernel.h>
#include <linux/input.h>
#include <linux/slab.h>
#include <linux/usb.h>
#include <linux/usb/input.h>
#include "uvcvideo.h"
#ifdef CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV
static bool uvc_input_has_button(struct uvc_device *dev)
{ … }
static int uvc_input_init(struct uvc_device *dev)
{ … }
static void uvc_input_unregister(struct uvc_device *dev)
{ … }
static void uvc_input_report_key(struct uvc_device *dev, unsigned int code,
int value)
{ … }
#else
#define uvc_input_init …
#define uvc_input_unregister …
#define uvc_input_report_key …
#endif
static void uvc_event_streaming(struct uvc_device *dev,
struct uvc_status *status, int len)
{ … }
#define UVC_CTRL_VALUE_CHANGE …
#define UVC_CTRL_INFO_CHANGE …
#define UVC_CTRL_FAILURE_CHANGE …
#define UVC_CTRL_MIN_CHANGE …
#define UVC_CTRL_MAX_CHANGE …
static struct uvc_control *uvc_event_entity_find_ctrl(struct uvc_entity *entity,
u8 selector)
{ … }
static struct uvc_control *uvc_event_find_ctrl(struct uvc_device *dev,
const struct uvc_status *status,
struct uvc_video_chain **chain)
{ … }
static bool uvc_event_control(struct urb *urb,
const struct uvc_status *status, int len)
{ … }
static void uvc_status_complete(struct urb *urb)
{ … }
int uvc_status_init(struct uvc_device *dev)
{ … }
void uvc_status_unregister(struct uvc_device *dev)
{ … }
void uvc_status_cleanup(struct uvc_device *dev)
{ … }
int uvc_status_start(struct uvc_device *dev, gfp_t flags)
{ … }
void uvc_status_stop(struct uvc_device *dev)
{ … }