os/linux-2.6-tag--devboard-R2_10-4/arch/cris/arch-v32/drivers/elphel/mt9x001.h

Go to the documentation of this file.
00001 //mt9x001.h
00002 #define MT9M001_PARTID     0x8411
00003 #define MT9D001_PARTID     0x8511
00004 #define MT9T001_PARTID     0x1601
00005 #define MT9P001_PARTID     0x1801
00006 #define MT9X001_PARTIDMASK 0xff00
00007 #define MT9X001_I2C_ADDR    0xba
00008 #define MT9P001_I2C_ADDR    0x90 //change later to the same 0xba as others
00009 #define MT9M_TYP 1
00010 #define MT9D_TYP 2
00011 #define MT9T_TYP 3
00012 #define MT9P_TYP 4
00013 
00014 /* i2c Micron MI-1300 registers will be defined here */
00015 #define P_MT9X001_CHIPVER   0x00  /* Chip version, dflt= 0x8411 - will change??? /0x1801 */
00016 #define P_MT9X001_ROWSTART  0x01  /* First row to read out, dflt=0x0c/0x0c/0x14/0x36 [0..2004],even*/
00017 #define P_MT9X001_COLSTART  0x02  /* First column to read out, must be even! Dflt=0x14/18/20/0x10 [0..2750],even */
00018 #define P_MT9X001_HEIGHT    0x03  /* Number of rows-1 (min value=2), dflt=0x03ff/4af/5ff/0x797 1..2005], odd */
00019 #define P_MT9X001_WIDTH     0x04  /* Number of columns-1 (odd, >=3),dflt =0x4ff/63f/7ff/a1f [1..2751] odd */
00020 #define P_MT9X001_HORBLANK  0x05  /* Horizontal blanking, dflt=0x09/35/8e/0 pixels [0..4095]*/
00021 #define P_MT9X001_VERTBLANK 0x06  /* Vertical blanking,  dflt=0x19/19/19/19 rows [8..2047]*/
00022 #define P_MT9X001_OUTCTRL   0x07  /* Output format bits (dflt=2/2/2/1f82) :
00023    bit 0 - 0 - normal, 1 - do not update integration, gains, blanking, flip, decimation''
00024    bit 1 - 0 - stop sensor, 1 - normal (0->1 restarts from start of the frame)
00025    bits 2,3 should be 0 (in mt9p bit 2 selects fifo output data)
00026    bit 6 - 0 - normal, 1 - test (mt9p - reserved)
00027 mt9p001:
00028    9:7  pixclk slew rate (0..7, higher - faster) dflt - 7
00029   12:10 output (but pixclk) slew rate (0..7, higher - faster) dflt -7
00030 
00031     */
00032 #define P_MT9X001_SHTRWDTHU 0x08  /* Shutter width upper - number of rows to integrate (dflt=0x?/?/0/0)  */   
00033 #define P_MT9X001_SHTRWDTH  0x09  /* Shutter width - number of rows to integrate (dflt=0x419/4c9/619/797)  */
00034 #define P_MT9X001_PXLCTL    0x0a  /* MT9P: Pixel clock control (dflt=0) 
00035   bits 6:0 - divide pixel clock {0,1,2,4,8,16,32,64}
00036   bits 10:8 - shift pixel clock [-2,2]
00037   bit 15 - invert pixel clock
00038   */
00039 #define P_MT9X001_RESTART   0x0b  /* Sensor restart (autozeroed) writing 1 restarts frame /0 
00040   bit 0 - 1 - restart (autoclearing bit)
00041   bit 1 - pause restart
00042   bit 2 - trigger (like trigger input)
00043 */
00044 
00045 #define P_MT9X001_SHTRDLY   0x0c  /* Shutter delay - number of pixels before row reset (dflt=0/0/0) - not mt9p*/
00046 
00047 #define P_MT9X001_RESET     0x0d  /* 0 - normal, 1 - reset /0 */
00048 
00049 #define P_MT9X001_PLL1      0x10  /* MT9P: PLL CTL 1  (dflt=0x50) 
00050   bit 0 - power PLL
00051   bit 1 - use PLL
00052   other bits - set to dflt (0x50)
00053  */
00054 
00055 #define P_MT9X001_PLL2      0x11  /* MT9P: PLL CTL 2  (dflt=0x6404) 
00056  5:0 - PLL n divider [0,63] - dflt 4
00057  15:8 PLL m factor [16,255] - dflt 0x64
00058  */
00059 #define P_MT9X001_PLL3      0x12  /* MT9P: PLL CTL 3  (dflt=0x0)
00060  4:0 PLL p1 divider [0,127]
00061   */
00062 
00063 #define P_MT9X001_RMODE1    0x1e  /* Read options 1, (dflt=0x8000/8040/8040/4006):
00064 ---+bits 0,1 - reserved, sould be 0 | strobe end
00065 ++--bit  2 - column skip 4 (1- skip, 0 - no) reg 0x20 bit 3 should be 0 to enable this bit
00066 ++--bit  3 - row skip 4 (1- skip, 0 - no) reg 0x20 bit 4 should be 0 to enable this bit
00067 ---+bits 3:2 - Strobe start
00068 ++-+bit  4 - column skip 8 (1- skip, 0 - no) bit 2 and reg 0x20 bit 3 should be 0 to enable this bit
00069 ---+bit  4 - Strobe enable
00070 ++--bit  5 - row skip 8 (1- skip, 0 - no) bit 3 and reg 0x20 bit 4 should be 0 to enable this bit
00071 ---+bit  5 - invert strobe
00072 -+--bit  6 - Noise suppression (1 - enabled, default=1)
00073 ---+bit  6 - bulb exposure
00074 ---+bit  7 - Global shutter reset (0 - ers)
00075 ++++bit  8 - snapshot mode (0 - continuous, 1 - wait trigger)
00076 +++-bit  9 - strobe enable (1 - enable, 0 - disable)
00077 ---+bit  9 - inver trigger
00078 +++-bit 10 - strobe width (0 - minimal, 1 - extended)
00079 ---+bit 10 - continuous line valid (during vert blank)
00080 +++-bit 11 - strobe override (strobe enable should be 0) - set strobe active if 1, 0 - normal
00081 ---+bit 11 - XOR line valid
00082 ---bits 12,13,14 - reserved, should be 0
00083 +++bit 15 - reserved, should be 1
00084  */
00085 #define P_MT9X001_RMODE2    0x20  /* Read options 2, (dflt=0x1104/1104/0/40):
00086 +++-bit  0 - allow "bad frames". 0 (default) - output only good frames, 1 - allow bad also
00087 ----bits 1 - reserved, sould be 0
00088 ++--bit  2 - reserved, sould be 1/1/0
00089 ++--bit  3 - column skip (1 - read 2, skip 2; 0 - read all) If this bit is 1,  both column skip 4 and column skip 8 (0x1e) are ignored
00090 ++--bit  4 - row skip (1 - read 2, skip 2; 0 - read all)  Similar to the above
00091 ---+bit  5 -column sum in binning (0 - average)
00092 ++--bit  6 - reserved, should be 0
00093 ---+bit  6 - row BLC (dflt=`1) (use per-row black level, 0 - global)
00094 +??-bit  7 - flip odd/even rows (0 - normal)
00095 ++--bit  8 - reserved, should be 1
00096 +++-bit  9 - enable "line valid" during vertical blanking, 0 - normal (no lane valid during blanking)
00097 +++-bit 10 - XOR "line valid" with vertical blanking, 0 just mask "l.v." with bit 9
00098 +---bit 11 - reserved, sould be 0
00099 ---+bit 11 - show dark rows
00100 +---bit 12 - reserved, sould be 1
00101 ---+bit 12 - show dark columns
00102 +---bits 13 - reserved, sould be 0
00103 --++bit 14 - flip horizontal (0 - normal) *UNDOCUMENTED* documented in MT9P001 !!
00104 --++bit 15 - flip vertical (0 - normal)
00105  */
00106 #define P_MT9X001_RMODE3    0x21  /* Read options 3   (MT9T only), (dflt=0x0):
00107 --+-bit 0 - Global Reset. If set, uses global reset in snapshot mode (dflt=0x0)
00108 --+-bit 1 - Use GSHT_CTL (if set uses GSHT_CTL pad signal only, if 0 - together with TRIGGER
00109  */
00110 #define P_MT9X001_RAM       0x22  /* Row address mode (MT9T,P only), (dflt=0x0):
00111 --++bits 2:0 Row skip - number of rows to skip (0 - each row). Row period will be this value+1 (even in binning mode)
00112 --++bits 5:4 Row Bin - number of rows to bin to the first one. For full binning <Row skip>==<row bin>
00113  */
00114 #define P_MT9X001_CAM       0x23  /* Column address mode (MT9T,P only), (dflt=0x0):
00115 --++bits 2:0 Column skip - number of column-pairs to skip (0 - each column-pair). Column-pair period will be this value+1 (even in binning mode)
00116 --++bits 5:4 Column Bin - number of columns to bin to the first one. Not clear is binning also in pairs? needs testing
00117   Column start address should be multiple of <column bin>+1
00118  */
00119 #define P_MT9X001_GREEN1    0x2b  /* Green Gain 1, dflt= 0x08 (1x)
00120                                      for MT9T bits 14:8 - "digital gain"  */
00121 #define P_MT9X001_BLUE      0x2c  /* Green Gain 1, dflt= 0x08 (1x)
00122                                      for MT9T bits 14:8 - "digital gain"  */
00123 #define P_MT9X001_RED       0x2d  /* Green Gain 1, dflt= 0x08 (1x)
00124                                      for MT9T bits 14:8 - "digital gain"  */
00125 #define P_MT9X001_GREEN2    0x2e  /* Green Gain 1, dflt= 0x08 (1x)
00126                                      for MT9T bits 14:8 - "digital gain"  */
00127 #define P_MT9X001_ALLGAINS  0x35  /* write to all 4 gains (0x2b,0x2c,0x2d,0x2e), read from red (0x2b)  */
00128 #define P_MT9X001_DESIRBLACK  0x49 /* bits 11:2 - desired  black level (MT9T,P only dflt=0xa8) */
00129 #define P_MT9X001_ROWRBLACKOFFS  0x4b /* bits 11:0 - desired  black level (MT9P only - dflt=0x28) */
00130 #define P_MT9X001_COARSETHRSH 0x5d /* Black level calibration coarse thersholds (MT9T only), dflt=0x2d13
00131 --+bits  6:0 low coarse thershold (should be less than low thershold - see 0x5f) ,dflt=0x13
00132 --+bits 14:8 high coarse thershold (should be noless than high thershold - see 0x5f) ,dflt=0x2d
00133  */
00134 
00135 #define P_MT9X001_CALTHRESH 0x5f  /* Black level calibration control fields b(dflt=0x904/a39f/231d):
00136 +--bits 5:0 - Low threshold for black in ADC LSBs (default - 4)
00137 -+-bits 5:0 - Low threshold for black in ADC LSBs (default - 29)
00138 --+bits 6:0 - Low threshold for black in ADC LSBs (default - 0x13)
00139 ++-bit  7 - Override automatic bits 5:0 and 14:8, 0 - automatic. dflt= 0/1/x
00140 +--bits 14:8 - Maximal allowed black level in ADC LSBs (default - low theresh+5=0x09)
00141 -+-bits 14:8 - Maximal allowed black level in ADC LSBs (default - low theresh+5=0x23)
00142 --+bits 14:8 - Maximal allowed black level in ADC LSBs (default - low theresh+5=0x23)
00143 ++-bit 15 - no gain dependence, 0 - both thresholds set automatically, dflt=0/1/x
00144   */
00145 #define P_MT9X001_CALGREEN1 0x60  /* analog offset for GREEN1. For MT9M, MT9D: bits 7:0 - magnitude, bit 8 - sign,
00146                                      MT9T - two's complement
00147   */
00148 #define P_MT9X001_CALGREEN2 0x61  /* analog offset for GREEN21. For MT9M, MT9D: bits 7:0 - magnitude, bit 8 - sign,
00149                                      MT9T - two's complement
00150   */
00151 #define P_MT9X001_CALCTRL   0x62  /* Black levels calibration control fields (dflt 0x498/8498/0)
00152 +++bit  0   - manual override, correct with programmed values. 0 (default) - automatically adjust offset values
00153 ++-bits 2,1 - force/disable black level calibration. 00 - apply calibration during ADC operation only (default),
00154               10 - apply calibration continuously, X1 - disable black level correction (set calibration voltages to 0)
00155 --+bit  2 0 - enable offset calibration (dflt), 1 - disable offset calibration voltage              
00156 ++-bits 4:3 - reserved, sould be 1
00157 ++-bits 6:5 - reserved, sould be 0
00158 ++-bit  7   - reserved, sould be 1
00159 ++-bits 9:8 - reserved, sould be 0
00160 ++-bit 10   - reserved, sould be 1
00161 ++-bit 11   - 1 - do not reset the upper threshold after a black level recalculation sweep, 0 - reset after sweep (default)
00162 +++bit 12   - (autoreset bit) - start a new running average and perform a fast black level calibration (0 - normal)
00163 ++-bits 14:13 - reserved, sould be 0
00164 --+bit 13   - if set, lock red and blue channels calibration (red and blue gains should be equal)
00165 --+bit 14   - if set, lock green1 and green2 channels calibration (red and blue gains should be equal)
00166 ++-bit 15   -  1 - do not perform fast sweep after gains change, 0 - normal operation
00167 */
00168 #define P_MT9X001_CALRED   0x63  /* analog offset for RED.    For MT9M, MT9D: bits 7:0 - magnitude, bit 8 - sign
00169                                      MT9T - two's complement
00170   */
00171 #define P_MT9X001_CALBLUE  0x64  /* analog offset for BLUE.   For MT9M, MT9D: bits 7:0 - magnitude, bit 8 - sign
00172                                      MT9T - two's complement   */
00173 #define P_MT9X001_7F       0x7f  /* Should be written 0 to prevent blue "bluming" columns*/
00174 
00175 #define P_MT9X001_TEST     0xa0  
00176 
00193 #define P_MT9X001_CHIPEN   0xF1  /* Chip enable and i2c sync (mirrors bits in feg 0x07 (default=0x01):
00194 ++-bit  0   -  1 - normal operation, 0 - stop readout (same as reg 0x07, bit 1)
00195 ++-bit  1   -  0 - normal, appropriate changes are made at frame boudary. 1 - do not update (same as reg 7 bit 0)
00196  */
00197 #define P_MT9X001_CHIPEN1  0xF8  /* Chip enable and i2c sync (mirrors bits in feg 0x07 (default=0x01):
00198 --+bit  0   -  1 - normal operation, 0 - stop readout (same as reg 0x07, bit 1)
00199 --+bit  1   -  0 - normal, appropriate changes are made at frame boudary. 1 - do not update (same as reg 7 bit 0)
00200  */
00201 
00202 int mt9x001_pgm_detectsensor   (struct sensor_t * sensor,  struct framepars_t * thispars, struct framepars_t * prevpars, int frame8);
00203 #if 0
00204 int adjustBinning_mt9x001(void);
00205 int program_woi_mt9x001(int nonstop);
00206 int program_gains_mt9x001(void);
00207 int program_exposure_mt9x001(void);
00208 #endif

Generated on Fri Nov 28 00:06:23 2008 for elphel by  doxygen 1.5.1