linux/drivers/media/usb/gspca/stv06xx/stv06xx_pb0100.h
<<
>>
Prefs
   1/*
   2 * Copyright (c) 2001 Jean-Fredric Clere, Nikolas Zimmermann, Georg Acher
   3 *                    Mark Cave-Ayland, Carlo E Prelz, Dick Streefland
   4 * Copyright (c) 2002, 2003 Tuukka Toivonen
   5 * Copyright (c) 2008 Erik Andrén
   6 *
   7 * This program is free software; you can redistribute it and/or modify
   8 * it under the terms of the GNU General Public License as published by
   9 * the Free Software Foundation; either version 2 of the License, or
  10 * (at your option) any later version.
  11 *
  12 * This program is distributed in the hope that it will be useful,
  13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
  14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  15 * GNU General Public License for more details.
  16 *
  17 * P/N 861037:      Sensor HDCS1000        ASIC STV0600
  18 * P/N 861050-0010: Sensor HDCS1000        ASIC STV0600
  19 * P/N 861050-0020: Sensor Photobit PB100  ASIC STV0600-1 - QuickCam Express
  20 * P/N 861055:      Sensor ST VV6410       ASIC STV0610   - LEGO cam
  21 * P/N 861075-0040: Sensor HDCS1000        ASIC
  22 * P/N 961179-0700: Sensor ST VV6410       ASIC STV0602   - Dexxa WebCam USB
  23 * P/N 861040-0000: Sensor ST VV6410       ASIC STV0610   - QuickCam Web
  24 */
  25
  26#ifndef STV06XX_PB0100_H_
  27#define STV06XX_PB0100_H_
  28
  29#include "stv06xx_sensor.h"
  30
  31/* mode priv field flags */
  32#define PB0100_CROP_TO_VGA      0x01
  33#define PB0100_SUBSAMPLE        0x02
  34
  35/* I2C Registers */
  36#define PB_IDENT                0x00    /* Chip Version */
  37#define PB_RSTART               0x01    /* Row Window Start */
  38#define PB_CSTART               0x02    /* Column Window Start */
  39#define PB_RWSIZE               0x03    /* Row Window Size */
  40#define PB_CWSIZE               0x04    /* Column  Window Size */
  41#define PB_CFILLIN              0x05    /* Column Fill-In */
  42#define PB_VBL                  0x06    /* Vertical Blank Count */
  43#define PB_CONTROL              0x07    /* Control Mode */
  44#define PB_FINTTIME             0x08    /* Integration Time/Frame Unit Count */
  45#define PB_RINTTIME             0x09    /* Integration Time/Row Unit Count */
  46#define PB_ROWSPEED             0x0a    /* Row Speed Control */
  47#define PB_ABORTFRAME           0x0b    /* Abort Frame */
  48#define PB_R12                  0x0c    /* Reserved */
  49#define PB_RESET                0x0d    /* Reset */
  50#define PB_EXPGAIN              0x0e    /* Exposure Gain Command */
  51#define PB_R15                  0x0f    /* Expose0 */
  52#define PB_R16                  0x10    /* Expose1 */
  53#define PB_R17                  0x11    /* Expose2 */
  54#define PB_R18                  0x12    /* Low0_DAC */
  55#define PB_R19                  0x13    /* Low1_DAC */
  56#define PB_R20                  0x14    /* Low2_DAC */
  57#define PB_R21                  0x15    /* Threshold11 */
  58#define PB_R22                  0x16    /* Threshold0x */
  59#define PB_UPDATEINT            0x17    /* Update Interval */
  60#define PB_R24                  0x18    /* High_DAC */
  61#define PB_R25                  0x19    /* Trans0H */
  62#define PB_R26                  0x1a    /* Trans1L */
  63#define PB_R27                  0x1b    /* Trans1H */
  64#define PB_R28                  0x1c    /* Trans2L */
  65#define PB_R29                  0x1d    /* Reserved */
  66#define PB_R30                  0x1e    /* Reserved */
  67#define PB_R31                  0x1f    /* Wait to Read */
  68#define PB_PREADCTRL            0x20    /* Pixel Read Control Mode */
  69#define PB_R33                  0x21    /* IREF_VLN */
  70#define PB_R34                  0x22    /* IREF_VLP */
  71#define PB_R35                  0x23    /* IREF_VLN_INTEG */
  72#define PB_R36                  0x24    /* IREF_MASTER */
  73#define PB_R37                  0x25    /* IDACP */
  74#define PB_R38                  0x26    /* IDACN */
  75#define PB_R39                  0x27    /* DAC_Control_Reg */
  76#define PB_R40                  0x28    /* VCL */
  77#define PB_R41                  0x29    /* IREF_VLN_ADCIN */
  78#define PB_R42                  0x2a    /* Reserved */
  79#define PB_G1GAIN               0x2b    /* Green 1 Gain */
  80#define PB_BGAIN                0x2c    /* Blue Gain */
  81#define PB_RGAIN                0x2d    /* Red Gain */
  82#define PB_G2GAIN               0x2e    /* Green 2 Gain */
  83#define PB_R47                  0x2f    /* Dark Row Address */
  84#define PB_R48                  0x30    /* Dark Row Options */
  85#define PB_R49                  0x31    /* Reserved */
  86#define PB_R50                  0x32    /* Image Test Data */
  87#define PB_ADCMAXGAIN           0x33    /* Maximum Gain */
  88#define PB_ADCMINGAIN           0x34    /* Minimum Gain */
  89#define PB_ADCGLOBALGAIN        0x35    /* Global Gain */
  90#define PB_R54                  0x36    /* Maximum Frame */
  91#define PB_R55                  0x37    /* Minimum Frame */
  92#define PB_R56                  0x38    /* Reserved */
  93#define PB_VOFFSET              0x39    /* VOFFSET */
  94#define PB_R58                  0x3a    /* Snap-Shot Sequence Trigger */
  95#define PB_ADCGAINH             0x3b    /* VREF_HI */
  96#define PB_ADCGAINL             0x3c    /* VREF_LO */
  97#define PB_R61                  0x3d    /* Reserved */
  98#define PB_R62                  0x3e    /* Reserved */
  99#define PB_R63                  0x3f    /* Reserved */
 100#define PB_R64                  0x40    /* Red/Blue Gain */
 101#define PB_R65                  0x41    /* Green 2/Green 1 Gain */
 102#define PB_R66                  0x42    /* VREF_HI/LO */
 103#define PB_R67                  0x43    /* Integration Time/Row Unit Count */
 104#define PB_R240                 0xf0    /* ADC Test */
 105#define PB_R241                 0xf1    /* Chip Enable */
 106#define PB_R242                 0xf2    /* Reserved */
 107
 108static int pb0100_probe(struct sd *sd);
 109static int pb0100_start(struct sd *sd);
 110static int pb0100_init(struct sd *sd);
 111static int pb0100_init_controls(struct sd *sd);
 112static int pb0100_stop(struct sd *sd);
 113static int pb0100_dump(struct sd *sd);
 114
 115/* V4L2 controls supported by the driver */
 116static int pb0100_set_gain(struct gspca_dev *gspca_dev, __s32 val);
 117static int pb0100_set_red_balance(struct gspca_dev *gspca_dev, __s32 val);
 118static int pb0100_set_blue_balance(struct gspca_dev *gspca_dev, __s32 val);
 119static int pb0100_set_exposure(struct gspca_dev *gspca_dev, __s32 val);
 120static int pb0100_set_autogain(struct gspca_dev *gspca_dev, __s32 val);
 121static int pb0100_set_autogain_target(struct gspca_dev *gspca_dev, __s32 val);
 122
 123const struct stv06xx_sensor stv06xx_sensor_pb0100 = {
 124        .name = "PB-0100",
 125        .i2c_flush = 1,
 126        .i2c_addr = 0xba,
 127        .i2c_len = 2,
 128
 129        .min_packet_size = { 635, 847 },
 130        .max_packet_size = { 847, 923 },
 131
 132        .init = pb0100_init,
 133        .init_controls = pb0100_init_controls,
 134        .probe = pb0100_probe,
 135        .start = pb0100_start,
 136        .stop = pb0100_stop,
 137        .dump = pb0100_dump,
 138};
 139
 140#endif
 141