linux/drivers/usb/gadget/legacy/webcam.c

// SPDX-License-Identifier: GPL-2.0+
/*
 *	webcam.c -- USB webcam gadget driver
 *
 *	Copyright (C) 2009-2010
 *	    Laurent Pinchart ([email protected])
 */

#include <linux/kernel.h>
#include <linux/device.h>
#include <linux/module.h>
#include <linux/usb/video.h>

#include "u_uvc.h"
#include "uvc_configfs.h"

USB_GADGET_COMPOSITE_OPTIONS();

/*-------------------------------------------------------------------------*/

/* module parameters specific to the Video streaming endpoint */
static unsigned int streaming_interval =;
module_param(streaming_interval, uint, S_IRUGO|S_IWUSR);
MODULE_PARM_DESC();

static unsigned int streaming_maxpacket =;
module_param(streaming_maxpacket, uint, S_IRUGO|S_IWUSR);
MODULE_PARM_DESC();

static unsigned int streaming_maxburst;
module_param(streaming_maxburst, uint, S_IRUGO|S_IWUSR);
MODULE_PARM_DESC();

/* --------------------------------------------------------------------------
 * Device descriptor
 */

#define WEBCAM_VENDOR_ID
#define WEBCAM_PRODUCT_ID
#define WEBCAM_DEVICE_BCD

static char webcam_vendor_label[] =;
static char webcam_product_label[] =;
static char webcam_config_label[] =;

/* string IDs are assigned dynamically */

#define STRING_DESCRIPTION_IDX

static struct usb_string webcam_strings[] =;

static struct usb_gadget_strings webcam_stringtab =;

static struct usb_gadget_strings *webcam_device_strings[] =;

static struct usb_function_instance *fi_uvc;
static struct usb_function *f_uvc;

static struct usb_device_descriptor webcam_device_descriptor =;

static const struct UVC_HEADER_DESCRIPTOR(1) uvc_control_header =;

static const struct uvc_camera_terminal_descriptor uvc_camera_terminal =;

static const struct uvc_processing_unit_descriptor uvc_processing =;

static const struct uvc_output_terminal_descriptor uvc_output_terminal =;

DECLARE_UVC_INPUT_HEADER_DESCRIPTOR(1, 2);

static const struct UVC_INPUT_HEADER_DESCRIPTOR(1, 2) uvc_input_header =;

static const struct uvcg_color_matching uvcg_color_matching =;

static struct uvcg_uncompressed uvcg_format_yuv =;

static struct uvcg_format_ptr uvcg_format_ptr_yuv =;

DECLARE_UVC_FRAME_UNCOMPRESSED(1);
DECLARE_UVC_FRAME_UNCOMPRESSED(3);

#define UVCG_WIDTH_360P
#define UVCG_HEIGHT_360P
#define UVCG_MIN_BITRATE_360P
#define UVCG_MAX_BITRATE_360P
#define UVCG_MAX_VIDEO_FB_SZ_360P
#define UVCG_FRM_INTERV_0_360P
#define UVCG_FRM_INTERV_1_360P
#define UVCG_FRM_INTERV_2_360P
#define UVCG_DEFAULT_FRM_INTERV_360P

static const struct UVC_FRAME_UNCOMPRESSED(3) uvc_frame_yuv_360p =;

static u32 uvcg_frame_yuv_360p_dw_frame_interval[] =;

static const struct uvcg_frame uvcg_frame_yuv_360p =;

static struct uvcg_frame_ptr uvcg_frame_ptr_yuv_360p =;
#define UVCG_WIDTH_720P
#define UVCG_HEIGHT_720P
#define UVCG_MIN_BITRATE_720P
#define UVCG_MAX_BITRATE_720P
#define UVCG_MAX_VIDEO_FB_SZ_720P
#define UVCG_FRM_INTERV_0_720P
#define UVCG_DEFAULT_FRM_INTERV_720P

static const struct UVC_FRAME_UNCOMPRESSED(1) uvc_frame_yuv_720p =;

static u32 uvcg_frame_yuv_720p_dw_frame_interval[] =;

static const struct uvcg_frame uvcg_frame_yuv_720p =;

static struct uvcg_frame_ptr uvcg_frame_ptr_yuv_720p =;

static struct uvcg_mjpeg uvcg_format_mjpeg =;

static struct uvcg_format_ptr uvcg_format_ptr_mjpeg =;

DECLARE_UVC_FRAME_MJPEG(1);
DECLARE_UVC_FRAME_MJPEG(3);

static const struct UVC_FRAME_MJPEG(3) uvc_frame_mjpg_360p =;

static u32 uvcg_frame_mjpeg_360p_dw_frame_interval[] =;

static const struct uvcg_frame uvcg_frame_mjpeg_360p =;

static struct uvcg_frame_ptr uvcg_frame_ptr_mjpeg_360p =;

static const struct UVC_FRAME_MJPEG(1) uvc_frame_mjpg_720p =;

static u32 uvcg_frame_mjpeg_720p_dw_frame_interval[] =;

static const struct uvcg_frame uvcg_frame_mjpeg_720p =;

static struct uvcg_frame_ptr uvcg_frame_ptr_mjpeg_720p =;

static struct uvcg_streaming_header uvcg_streaming_header =;

static const struct uvc_descriptor_header * const uvc_fs_control_cls[] =;

static const struct uvc_descriptor_header * const uvc_ss_control_cls[] =;

static const struct uvc_descriptor_header * const uvc_fs_streaming_cls[] =;

static const struct uvc_descriptor_header * const uvc_hs_streaming_cls[] =;

static const struct uvc_descriptor_header * const uvc_ss_streaming_cls[] =;

/* --------------------------------------------------------------------------
 * USB configuration
 */

static int
webcam_config_bind(struct usb_configuration *c)
{}

static struct usb_configuration webcam_config_driver =;

static int
webcam_unbind(struct usb_composite_dev *cdev)
{}

static int
webcam_bind(struct usb_composite_dev *cdev)
{}

/* --------------------------------------------------------------------------
 * Driver
 */

static struct usb_composite_driver webcam_driver =;

module_usb_composite_driver();

MODULE_AUTHOR();
MODULE_DESCRIPTION();
MODULE_LICENSE();