Linux kernel & device driver programming

Cross-Referenced Linux and Device Driver Code

[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ]
Version: [ 2.6.11.8 ] [ 2.6.25 ] [ 2.6.25.8 ] [ 2.6.31.13 ] Architecture: [ i386 ]
  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  * You should have received a copy of the GNU General Public License
 18  * along with this program; if not, write to the Free Software
 19  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 20  *
 21  * P/N 861037:      Sensor HDCS1000        ASIC STV0600
 22  * P/N 861050-0010: Sensor HDCS1000        ASIC STV0600
 23  * P/N 861050-0020: Sensor Photobit PB100  ASIC STV0600-1 - QuickCam Express
 24  * P/N 861055:      Sensor ST VV6410       ASIC STV0610   - LEGO cam
 25  * P/N 861075-0040: Sensor HDCS1000        ASIC
 26  * P/N 961179-0700: Sensor ST VV6410       ASIC STV0602   - Dexxa WebCam USB
 27  * P/N 861040-0000: Sensor ST VV6410       ASIC STV0610   - QuickCam Web
 28  */
 29 
 30 #ifndef STV06XX_PB0100_H_
 31 #define STV06XX_PB0100_H_
 32 
 33 #include "stv06xx_sensor.h"
 34 
 35 /* mode priv field flags */
 36 #define PB0100_CROP_TO_VGA      0x01
 37 #define PB0100_SUBSAMPLE        0x02
 38 
 39 /* I2C Registers */
 40 #define PB_IDENT                0x00    /* Chip Version */
 41 #define PB_RSTART               0x01    /* Row Window Start */
 42 #define PB_CSTART               0x02    /* Column Window Start */
 43 #define PB_RWSIZE               0x03    /* Row Window Size */
 44 #define PB_CWSIZE               0x04    /* Column  Window Size */
 45 #define PB_CFILLIN              0x05    /* Column Fill-In */
 46 #define PB_VBL                  0x06    /* Vertical Blank Count */
 47 #define PB_CONTROL              0x07    /* Control Mode */
 48 #define PB_FINTTIME             0x08    /* Integration Time/Frame Unit Count */
 49 #define PB_RINTTIME             0x09    /* Integration Time/Row Unit Count */
 50 #define PB_ROWSPEED             0x0a    /* Row Speed Control */
 51 #define PB_ABORTFRAME           0x0b    /* Abort Frame */
 52 #define PB_R12                  0x0c    /* Reserved */
 53 #define PB_RESET                0x0d    /* Reset */
 54 #define PB_EXPGAIN              0x0e    /* Exposure Gain Command */
 55 #define PB_R15                  0x0f    /* Expose0 */
 56 #define PB_R16                  0x10    /* Expose1 */
 57 #define PB_R17                  0x11    /* Expose2 */
 58 #define PB_R18                  0x12    /* Low0_DAC */
 59 #define PB_R19                  0x13    /* Low1_DAC */
 60 #define PB_R20                  0x14    /* Low2_DAC */
 61 #define PB_R21                  0x15    /* Threshold11 */
 62 #define PB_R22                  0x16    /* Threshold0x */
 63 #define PB_UPDATEINT            0x17    /* Update Interval */
 64 #define PB_R24                  0x18    /* High_DAC */
 65 #define PB_R25                  0x19    /* Trans0H */
 66 #define PB_R26                  0x1a    /* Trans1L */
 67 #define PB_R27                  0x1b    /* Trans1H */
 68 #define PB_R28                  0x1c    /* Trans2L */
 69 #define PB_R29                  0x1d    /* Reserved */
 70 #define PB_R30                  0x1e    /* Reserved */
 71 #define PB_R31                  0x1f    /* Wait to Read */
 72 #define PB_PREADCTRL            0x20    /* Pixel Read Control Mode */
 73 #define PB_R33                  0x21    /* IREF_VLN */
 74 #define PB_R34                  0x22    /* IREF_VLP */
 75 #define PB_R35                  0x23    /* IREF_VLN_INTEG */
 76 #define PB_R36                  0x24    /* IREF_MASTER */
 77 #define PB_R37                  0x25    /* IDACP */
 78 #define PB_R38                  0x26    /* IDACN */
 79 #define PB_R39                  0x27    /* DAC_Control_Reg */
 80 #define PB_R40                  0x28    /* VCL */
 81 #define PB_R41                  0x29    /* IREF_VLN_ADCIN */
 82 #define PB_R42                  0x2a    /* Reserved */
 83 #define PB_G1GAIN               0x2b    /* Green 1 Gain */
 84 #define PB_BGAIN                0x2c    /* Blue Gain */
 85 #define PB_RGAIN                0x2d    /* Red Gain */
 86 #define PB_G2GAIN               0x2e    /* Green 2 Gain */
 87 #define PB_R47                  0x2f    /* Dark Row Address */
 88 #define PB_R48                  0x30    /* Dark Row Options */
 89 #define PB_R49                  0x31    /* Reserved */
 90 #define PB_R50                  0x32    /* Image Test Data */
 91 #define PB_ADCMAXGAIN           0x33    /* Maximum Gain */
 92 #define PB_ADCMINGAIN           0x34    /* Minimum Gain */
 93 #define PB_ADCGLOBALGAIN        0x35    /* Global Gain */
 94 #define PB_R54                  0x36    /* Maximum Frame */
 95 #define PB_R55                  0x37    /* Minimum Frame */
 96 #define PB_R56                  0x38    /* Reserved */
 97 #define PB_VOFFSET              0x39    /* VOFFSET */
 98 #define PB_R58                  0x3a    /* Snap-Shot Sequence Trigger */
 99 #define PB_ADCGAINH             0x3b    /* VREF_HI */
100 #define PB_ADCGAINL             0x3c    /* VREF_LO */
101 #define PB_R61                  0x3d    /* Reserved */
102 #define PB_R62                  0x3e    /* Reserved */
103 #define PB_R63                  0x3f    /* Reserved */
104 #define PB_R64                  0x40    /* Red/Blue Gain */
105 #define PB_R65                  0x41    /* Green 2/Green 1 Gain */
106 #define PB_R66                  0x42    /* VREF_HI/LO */
107 #define PB_R67                  0x43    /* Integration Time/Row Unit Count */
108 #define PB_R240                 0xf0    /* ADC Test */
109 #define PB_R241                 0xf1    /* Chip Enable */
110 #define PB_R242                 0xf2    /* Reserved */
111 
112 static int pb0100_probe(struct sd *sd);
113 static int pb0100_start(struct sd *sd);
114 static int pb0100_init(struct sd *sd);
115 static int pb0100_stop(struct sd *sd);
116 static int pb0100_dump(struct sd *sd);
117 static void pb0100_disconnect(struct sd *sd);
118 
119 /* V4L2 controls supported by the driver */
120 static int pb0100_get_gain(struct gspca_dev *gspca_dev, __s32 *val);
121 static int pb0100_set_gain(struct gspca_dev *gspca_dev, __s32 val);
122 static int pb0100_get_red_balance(struct gspca_dev *gspca_dev, __s32 *val);
123 static int pb0100_set_red_balance(struct gspca_dev *gspca_dev, __s32 val);
124 static int pb0100_get_blue_balance(struct gspca_dev *gspca_dev, __s32 *val);
125 static int pb0100_set_blue_balance(struct gspca_dev *gspca_dev, __s32 val);
126 static int pb0100_get_exposure(struct gspca_dev *gspca_dev, __s32 *val);
127 static int pb0100_set_exposure(struct gspca_dev *gspca_dev, __s32 val);
128 static int pb0100_get_autogain(struct gspca_dev *gspca_dev, __s32 *val);
129 static int pb0100_set_autogain(struct gspca_dev *gspca_dev, __s32 val);
130 static int pb0100_get_autogain_target(struct gspca_dev *gspca_dev, __s32 *val);
131 static int pb0100_set_autogain_target(struct gspca_dev *gspca_dev, __s32 val);
132 static int pb0100_get_natural(struct gspca_dev *gspca_dev, __s32 *val);
133 static int pb0100_set_natural(struct gspca_dev *gspca_dev, __s32 val);
134 
135 const struct stv06xx_sensor stv06xx_sensor_pb0100 = {
136         .name = "PB-0100",
137         .i2c_flush = 1,
138         .i2c_addr = 0xba,
139         .i2c_len = 2,
140 
141         .init = pb0100_init,
142         .probe = pb0100_probe,
143         .start = pb0100_start,
144         .stop = pb0100_stop,
145         .dump = pb0100_dump,
146         .disconnect = pb0100_disconnect,
147 };
148 
149 #endif
150 
  This page was automatically generated by the LXR engine.