linux/drivers/media/usb/gspca/stv06xx/stv06xx.c

// SPDX-License-Identifier: GPL-2.0-or-later
/*
 * Copyright (c) 2001 Jean-Fredric Clere, Nikolas Zimmermann, Georg Acher
 *		      Mark Cave-Ayland, Carlo E Prelz, Dick Streefland
 * Copyright (c) 2002, 2003 Tuukka Toivonen
 * Copyright (c) 2008 Erik Andrén
 *
 * P/N 861037:      Sensor HDCS1000        ASIC STV0600
 * P/N 861050-0010: Sensor HDCS1000        ASIC STV0600
 * P/N 861050-0020: Sensor Photobit PB100  ASIC STV0600-1 - QuickCam Express
 * P/N 861055:      Sensor ST VV6410       ASIC STV0610   - LEGO cam
 * P/N 861075-0040: Sensor HDCS1000        ASIC
 * P/N 961179-0700: Sensor ST VV6410       ASIC STV0602   - Dexxa WebCam USB
 * P/N 861040-0000: Sensor ST VV6410       ASIC STV0610   - QuickCam Web
 */

#define pr_fmt(fmt)

#include <linux/input.h>
#include "stv06xx_sensor.h"

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

static bool dump_bridge;
static bool dump_sensor;

int stv06xx_write_bridge(struct sd *sd, u16 address, u16 i2c_data)
{}

int stv06xx_read_bridge(struct sd *sd, u16 address, u8 *i2c_data)
{}

/* Wraps the normal write sensor bytes / words functions for writing a
   single value */
int stv06xx_write_sensor(struct sd *sd, u8 address, u16 value)
{}

static int stv06xx_write_sensor_finish(struct sd *sd)
{}

int stv06xx_write_sensor_bytes(struct sd *sd, const u8 *data, u8 len)
{}

int stv06xx_write_sensor_words(struct sd *sd, const u16 *data, u8 len)
{}

int stv06xx_read_sensor(struct sd *sd, const u8 address, u16 *value)
{}

/* Dumps all bridge registers */
static void stv06xx_dump_bridge(struct sd *sd)
{}

/* this function is called at probe and resume time */
static int stv06xx_init(struct gspca_dev *gspca_dev)
{}

/* this function is called at probe time */
static int stv06xx_init_controls(struct gspca_dev *gspca_dev)
{}

/* Start the camera */
static int stv06xx_start(struct gspca_dev *gspca_dev)
{}

static int stv06xx_isoc_init(struct gspca_dev *gspca_dev)
{}

static int stv06xx_isoc_nego(struct gspca_dev *gspca_dev)
{}

static void stv06xx_stopN(struct gspca_dev *gspca_dev)
{}

/*
 * Analyse an USB packet of the data stream and store it appropriately.
 * Each packet contains an integral number of chunks. Each chunk has
 * 2-bytes identification, followed by 2-bytes that describe the chunk
 * length. Known/guessed chunk identifications are:
 * 8001/8005/C001/C005 - Begin new frame
 * 8002/8006/C002/C006 - End frame
 * 0200/4200           - Contains actual image data, bayer or compressed
 * 0005                - 11 bytes of unknown data
 * 0100                - 2 bytes of unknown data
 * The 0005 and 0100 chunks seem to appear only in compressed stream.
 */
static void stv06xx_pkt_scan(struct gspca_dev *gspca_dev,
			u8 *data,			/* isoc packet */
			int len)			/* iso packet length */
{}

#if IS_ENABLED(CONFIG_INPUT)
static int sd_int_pkt_scan(struct gspca_dev *gspca_dev,
			u8 *data,		/* interrupt packet data */
			int len)		/* interrupt packet length */
{}
#endif

static int stv06xx_config(struct gspca_dev *gspca_dev,
			  const struct usb_device_id *id);

static void stv06xx_probe_error(struct gspca_dev *gspca_dev)
{}

/* sub-driver description */
static const struct sd_desc sd_desc =;

/* This function is called at probe time */
static int stv06xx_config(struct gspca_dev *gspca_dev,
			  const struct usb_device_id *id)
{}



/* -- module initialisation -- */
static const struct usb_device_id device_table[] =;
MODULE_DEVICE_TABLE(usb, device_table);

/* -- device connect -- */
static int sd_probe(struct usb_interface *intf,
			const struct usb_device_id *id)
{}

static void sd_disconnect(struct usb_interface *intf)
{}

static struct usb_driver sd_driver =;

module_usb_driver();

module_param(dump_bridge, bool, S_IRUGO | S_IWUSR);
MODULE_PARM_DESC();

module_param(dump_sensor, bool, S_IRUGO | S_IWUSR);
MODULE_PARM_DESC();