linux/drivers/media/usb/gspca/stv06xx/stv06xx_vv6410.h

/* 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
 */

#ifndef STV06XX_VV6410_H_
#define STV06XX_VV6410_H_

#include "stv06xx_sensor.h"

#define VV6410_COLS
#define VV6410_ROWS

/* Status registers */
/* Chip identification number including revision indicator */
#define VV6410_DEVICEH
#define VV6410_DEVICEL

/* User can determine whether timed I2C data
   has been consumed by interrogating flag states */
#define VV6410_STATUS0

/* Current line counter value */
#define VV6410_LINECOUNTH
#define VV6410_LINECOUNTL

/* End x coordinate of image size */
#define VV6410_XENDH
#define VV6410_XENDL

/* End y coordinate of image size */
#define VV6410_YENDH
#define VV6410_YENDL

/* This is the average pixel value returned from the
   dark line offset cancellation algorithm */
#define VV6410_DARKAVGH
#define VV6410_DARKAVGL

/* This is the average pixel value returned from the
   black line offset cancellation algorithm  */
#define VV6410_BLACKAVGH
#define VV6410_BLACKAVGL

/* Flags to indicate whether the x or y image coordinates have been clipped */
#define VV6410_STATUS1

/* Setup registers */

/* Low-power/sleep modes & video timing */
#define VV6410_SETUP0

/* Various parameters */
#define VV6410_SETUP1

/* Contains pixel counter reset value used by external sync */
#define VV6410_SYNCVALUE

/* Frame grabbing modes (FST, LST and QCK) */
#define VV6410_FGMODES

/* FST and QCK mapping modes. */
#define VV6410_PINMAPPING

/* Data resolution */
#define VV6410_DATAFORMAT

/* Output coding formats */
#define VV6410_OPFORMAT

/* Various mode select bits */
#define VV6410_MODESELECT

/* Exposure registers */
/* Fine exposure. */
#define VV6410_FINEH
#define VV6410_FINEL

/* Coarse exposure */
#define VV6410_COARSEH
#define VV6410_COARSEL

/* Analog gain setting */
#define VV6410_ANALOGGAIN

/* Clock division */
#define VV6410_CLKDIV

/* Dark line offset cancellation value */
#define VV6410_DARKOFFSETH
#define VV6410_DARKOFFSETL

/* Dark line offset cancellation enable */
#define VV6410_DARKOFFSETSETUP

/* Video timing registers */
/* Line Length (Pixel Clocks) */
#define VV6410_LINELENGTHH
#define VV6410_LINELENGTHL

/* X-co-ordinate of top left corner of region of interest (x-offset) */
#define VV6410_XOFFSETH
#define VV6410_XOFFSETL

/* Y-coordinate of top left corner of region of interest (y-offset) */
#define VV6410_YOFFSETH
#define VV6410_YOFFSETL

/* Field length (Lines) */
#define VV6410_FIELDLENGTHH
#define VV6410_FIELDLENGTHL

/* System registers */
/* Black offset cancellation default value */
#define VV6410_BLACKOFFSETH
#define VV6410_BLACKOFFSETL

/* Black offset cancellation setup */
#define VV6410_BLACKOFFSETSETUP

/* Analog Control Register 0 */
#define VV6410_CR0

/* Analog Control Register 1 */
#define VV6410_CR1

/* ADC Setup Register */
#define VV6410_AS0

/* Analog Test Register */
#define VV6410_AT0

/* Audio Amplifier Setup Register */
#define VV6410_AT1

#define VV6410_HFLIP
#define VV6410_VFLIP

#define VV6410_LOW_POWER_MODE
#define VV6410_SOFT_RESET
#define VV6410_PAL_25_FPS

#define VV6410_CLK_DIV_2

#define VV6410_FINE_EXPOSURE
#define VV6410_COARSE_EXPOSURE
#define VV6410_DEFAULT_GAIN

#define VV6410_SUBSAMPLE
#define VV6410_CROP_TO_QVGA

#define VV6410_CIF_LINELENGTH

static int vv6410_probe(struct sd *sd);
static int vv6410_start(struct sd *sd);
static int vv6410_init(struct sd *sd);
static int vv6410_init_controls(struct sd *sd);
static int vv6410_stop(struct sd *sd);
static int vv6410_dump(struct sd *sd);

/* V4L2 controls supported by the driver */
static int vv6410_set_hflip(struct gspca_dev *gspca_dev, __s32 val);
static int vv6410_set_vflip(struct gspca_dev *gspca_dev, __s32 val);
static int vv6410_set_analog_gain(struct gspca_dev *gspca_dev, __s32 val);
static int vv6410_set_exposure(struct gspca_dev *gspca_dev, __s32 val);

const struct stv06xx_sensor stv06xx_sensor_vv6410 =;

/* If NULL, only single value to write, stored in len */
struct stv_init {};

static const struct stv_init stv_bridge_init[] =;

static const u8 vv6410_sensor_init[][2] =;

#endif