Logo Search packages:      
Sourcecode: linux-fsl-imx51 version File versions  Download package

mt9v111.h

Go to the documentation of this file.
/*
 * Copyright 2004-2008 Freescale Semiconductor, Inc. All Rights Reserved.
 */

/*
 * The code contained herein is licensed under the GNU General Public
 * License. You may obtain a copy of the GNU General Public License
 * Version 2 or later at the following locations:
 *
 * http://www.opensource.org/licenses/gpl-license.html
 * http://www.gnu.org/copyleft/gpl.html
 */

/*!
 * @defgroup Camera Sensor Drivers
 */

/*!
 * @file mt9v111.h
 *
 * @brief MT9V111 Camera Header file
 *
 * This header file contains defines and structures for the iMagic mi8012
 * aka the Micron mt9v111 camera.
 *
 * @ingroup Camera
 */

#ifndef MT9V111_H_
#define MT9V111_H_

/*!
 * Basic camera values
 */
00035 #define MT9V111_FRAME_RATE        30
#define MT9V111_MCLK              27000000 /* Desired clock rate */
#define MT9V111_CLK_MIN           12000000 /* This clock rate yields 15 fps */
#define MT9V111_CLK_MAX           27000000
#define MT9V111_MAX_WIDTH         640      /* Max width for this camera */
#define MT9V111_MAX_HEIGHT        480      /* Max height for this camera */

/*!
 * mt9v111 IFP REGISTER BANK MAP
 */
00045 #define MT9V111I_ADDR_SPACE_SEL           0x1
#define MT9V111I_BASE_MAXTRIX_SIGN        0x2
#define MT9V111I_BASE_MAXTRIX_SCALE15     0x3
#define MT9V111I_BASE_MAXTRIX_SCALE69     0x4
#define MT9V111I_APERTURE_GAIN            0x5
#define MT9V111I_MODE_CONTROL             0x6
#define MT9V111I_SOFT_RESET               0x7
#define MT9V111I_FORMAT_CONTROL           0x8
#define MT9V111I_BASE_MATRIX_CFK1         0x9
#define MT9V111I_BASE_MATRIX_CFK2         0xa
#define MT9V111I_BASE_MATRIX_CFK3         0xb
#define MT9V111I_BASE_MATRIX_CFK4         0xc
#define MT9V111I_BASE_MATRIX_CFK5         0xd
#define MT9V111I_BASE_MATRIX_CFK6         0xe
#define MT9V111I_BASE_MATRIX_CFK7         0xf
#define MT9V111I_BASE_MATRIX_CFK8         0x10
#define MT9V111I_BASE_MATRIX_CFK9         0x11
#define MT9V111I_AWB_POSITION             0x12
#define MT9V111I_AWB_RED_GAIN             0x13
#define MT9V111I_AWB_BLUE_GAIN            0x14
#define MT9V111I_DELTA_MATRIX_CF_SIGN     0x15
#define MT9V111I_DELTA_MATRIX_CF_D1       0x16
#define MT9V111I_DELTA_MATRIX_CF_D2       0x17
#define MT9V111I_DELTA_MATRIX_CF_D3       0x18
#define MT9V111I_DELTA_MATRIX_CF_D4       0x19
#define MT9V111I_DELTA_MATRIX_CF_D5       0x1a
#define MT9V111I_DELTA_MATRIX_CF_D6       0x1b
#define MT9V111I_DELTA_MATRIX_CF_D7       0x1c
#define MT9V111I_DELTA_MATRIX_CF_D8       0x1d
#define MT9V111I_DELTA_MATRIX_CF_D9       0x1e
#define MT9V111I_LUMINANCE_LIMIT_WB       0x20
#define MT9V111I_RBG_MANUUAL_WB           0x21
#define MT9V111I_AWB_RED_LIMIT            0x22
#define MT9V111I_AWB_BLUE_LIMIT           0x23
#define MT9V111I_MATRIX_ADJUST_LIMIT      0x24
#define MT9V111I_AWB_SPEED                0x25
#define MT9V111I_H_BOUND_AE               0x26
#define MT9V111I_V_BOUND_AE               0x27
#define MT9V111I_H_BOUND_AE_CEN_WIN       0x2b
#define MT9V111I_V_BOUND_AE_CEN_WIN       0x2c
#define MT9V111I_BOUND_AWB_WIN            0x2d
#define MT9V111I_AE_PRECISION_TARGET      0x2e
#define MT9V111I_AE_SPEED                 0x2f
#define MT9V111I_RED_AWB_MEASURE          0x30
#define MT9V111I_LUMA_AWB_MEASURE         0x31
#define MT9V111I_BLUE_AWB_MEASURE         0x32
#define MT9V111I_LIMIT_SHARP_SATU_CTRL    0x33
#define MT9V111I_LUMA_OFFSET              0x34
#define MT9V111I_CLIP_LIMIT_OUTPUT_LUMI   0x35
#define MT9V111I_GAIN_LIMIT_AE            0x36
#define MT9V111I_SHUTTER_WIDTH_LIMIT_AE   0x37
#define MT9V111I_UPPER_SHUTTER_DELAY_LIM  0x39
#define MT9V111I_OUTPUT_FORMAT_CTRL2      0x3a
#define MT9V111I_IPF_BLACK_LEVEL_SUB      0x3b
#define MT9V111I_IPF_BLACK_LEVEL_ADD      0x3c
#define MT9V111I_ADC_LIMIT_AE_ADJ         0x3d
#define MT9V111I_GAIN_THRE_CCAM_ADJ       0x3e
#define MT9V111I_LINEAR_AE                0x3f
#define MT9V111I_THRESHOLD_EDGE_DEFECT    0x47
#define MT9V111I_LUMA_SUM_MEASURE         0x4c
#define MT9V111I_TIME_ADV_SUM_LUMA        0x4d
#define MT9V111I_MOTION                   0x52
#define MT9V111I_GAMMA_KNEE_Y12           0x53
#define MT9V111I_GAMMA_KNEE_Y34           0x54
#define MT9V111I_GAMMA_KNEE_Y56           0x55
#define MT9V111I_GAMMA_KNEE_Y78           0x56
#define MT9V111I_GAMMA_KNEE_Y90           0x57
#define MT9V111I_GAMMA_VALUE_Y0           0x58
#define MT9V111I_SHUTTER_60               0x59
#define MT9V111I_SEARCH_FLICK_60          0x5c
#define MT9V111I_RATIO_IMAGE_GAIN_BASE    0x5e
#define MT9V111I_RATIO_IMAGE_GAIN_DELTA   0x5f
#define MT9V111I_SIGN_VALUE_REG5F         0x60
#define MT9V111I_AE_GAIN                  0x62
#define MT9V111I_MAX_GAIN_AE              0x67
#define MT9V111I_LENS_CORRECT_CTRL        0x80
#define MT9V111I_SHADING_PARAMETER1       0x81
#define MT9V111I_SHADING_PARAMETER2       0x82
#define MT9V111I_SHADING_PARAMETER3       0x83
#define MT9V111I_SHADING_PARAMETER4       0x84
#define MT9V111I_SHADING_PARAMETER5       0x85
#define MT9V111I_SHADING_PARAMETER6       0x86
#define MT9V111I_SHADING_PARAMETER7       0x87
#define MT9V111I_SHADING_PARAMETER8       0x88
#define MT9V111I_SHADING_PARAMETER9       0x89
#define MT9V111I_SHADING_PARAMETER10      0x8A
#define MT9V111I_SHADING_PARAMETER11      0x8B
#define MT9V111I_SHADING_PARAMETER12      0x8C
#define MT9V111I_SHADING_PARAMETER13      0x8D
#define MT9V111I_SHADING_PARAMETER14      0x8E
#define MT9V111I_SHADING_PARAMETER15      0x8F
#define MT9V111I_SHADING_PARAMETER16      0x90
#define MT9V111I_SHADING_PARAMETER17      0x91
#define MT9V111I_SHADING_PARAMETER18      0x92
#define MT9V111I_SHADING_PARAMETER19      0x93
#define MT9V111I_SHADING_PARAMETER20      0x94
#define MT9V111I_SHADING_PARAMETER21      0x95
#define MT9V111i_FLASH_CTRL               0x98
#define MT9V111i_LINE_COUNTER             0x99
#define MT9V111i_FRAME_COUNTER            0x9A
#define MT9V111i_H_PAN                    0xA5
#define MT9V111i_H_ZOOM                   0xA6
#define MT9V111i_H_SIZE                   0xA7
#define MT9V111i_V_PAN                    0xA8
#define MT9V111i_V_ZOOM                   0xA9
#define MT9V111i_V_SIZE                   0xAA

#define MT9V111I_SEL_IFP                  0x1
#define MT9V111I_SEL_SCA                  0x4
#define MT9V111I_FC_RGB_OR_YUV            0x1000

/*!
 * Mt9v111 SENSOR CORE REGISTER BANK MAP
 */
00159 #define MT9V111S_ADDR_SPACE_SEL           0x1
#define MT9V111S_COLUMN_START             0x2
#define MT9V111S_WIN_HEIGHT               0x3
#define MT9V111S_WIN_WIDTH                0x4
#define MT9V111S_HOR_BLANKING             0x5
#define MT9V111S_VER_BLANKING             0x6
#define MT9V111S_OUTPUT_CTRL              0x7
#define MT9V111S_ROW_START                0x8
#define MT9V111S_SHUTTER_WIDTH            0x9
#define MT9V111S_PIXEL_CLOCK_SPEED        0xa
#define MT9V111S_RESTART                  0xb
#define MT9V111S_SHUTTER_DELAY            0xc
#define MT9V111S_RESET                    0xd
#define MT9V111S_COLUMN_START_IN_ZOOM     0x12
#define MT9V111S_ROW_START_IN_ZOOM        0x13
#define MT9V111S_DIGITAL_ZOOM             0x1e
#define MT9V111S_READ_MODE                0x20
#define MT9V111S_DAC_CTRL                 0x27
#define MT9V111S_GREEN1_GAIN              0x2b
#define MT9V111S_BLUE_GAIN                0x2c
#define MT9V111S_READ_GAIN                0x2d
#define MT9V111S_GREEN2_GAIN              0x2e
#define MT9V111S_ROW_NOISE_CTRL           0x30
#define MT9V111S_DARK_TARGET_W            0x31
#define MT9V111S_TEST_DATA                0x32
#define MT9V111S_GLOBAL_GAIN              0x35
#define MT9V111S_SENSOR_CORE_VERSION      0x36
#define MT9V111S_DARK_TARGET_WO           0x37
#define MT9V111S_VERF_DAC                 0x41
#define MT9V111S_VCM_VCL                  0x42
#define MT9V111S_DISABLE_BYPASS           0x58
#define MT9V111S_CALIB_MEAN_TEST          0x59
#define MT9V111S_DARK_G1_AVE              0x5B
#define MT9V111S_DARK_G2_AVE              0x5C
#define MT9V111S_DARK_R_AVE               0x5D
#define MT9V111S_DARK_B_AVE               0x5E
#define MT9V111S_CAL_THRESHOLD            0x5f
#define MT9V111S_CAL_G1                   0x60
#define MT9V111S_CAL_G2                   0x61
#define MT9V111S_CAL_CTRL                 0x62
#define MT9V111S_CAL_R                    0x63
#define MT9V111S_CAL_B                    0x64
#define MT9V111S_CHIP_ENABLE              0xF1
#define MT9V111S_CHIP_VERSION             0xFF

/* OUTPUT_CTRL */
#define MT9V111S_OUTCTRL_SYNC             0x1
#define MT9V111S_OUTCTRL_CHIP_ENABLE      0x2
#define MT9V111S_OUTCTRL_TEST_MODE        0x40

/* READ_MODE */
#define MT9V111S_RM_NOBADFRAME            0x1
#define MT9V111S_RM_NODESTRUCT            0x2
#define MT9V111S_RM_COLUMNSKIP            0x4
#define MT9V111S_RM_ROWSKIP               0x8
#define MT9V111S_RM_BOOSTEDRESET          0x1000
#define MT9V111S_RM_COLUMN_LATE           0x10
#define MT9V111S_RM_ROW_LATE              0x80
#define MT9V111S_RM_RIGTH_TO_LEFT         0x4000
#define MT9V111S_RM_BOTTOM_TO_TOP         0x8000

/*! I2C Slave Address */
00221 #define MT9V111_I2C_ADDRESS   0x48

/*!
 * The image resolution enum for the mt9v111 sensor
 */
00226 typedef enum {
00227       MT9V111_OutputResolution_VGA = 0,   /*!< VGA size */
00228       MT9V111_OutputResolution_QVGA,      /*!< QVGA size */
00229       MT9V111_OutputResolution_CIF, /*!< CIF size */
00230       MT9V111_OutputResolution_QCIF,      /*!< QCIF size */
00231       MT9V111_OutputResolution_QQVGA,     /*!< QQVGA size */
00232       MT9V111_OutputResolution_SXGA /*!< SXGA size */
} MT9V111_OutputResolution;

enum {
      MT9V111_WINWIDTH = 0x287,
      MT9V111_WINWIDTH_DEFAULT = 0x287,
      MT9V111_WINWIDTH_MIN = 0x9,

      MT9V111_WINHEIGHT = 0x1E7,
      MT9V111_WINHEIGHT_DEFAULT = 0x1E7,

      MT9V111_HORZBLANK_DEFAULT = 0x26,
      MT9V111_HORZBLANK_MIN = 0x9,
      MT9V111_HORZBLANK_MAX = 0x3FF,

      MT9V111_VERTBLANK_DEFAULT = 0x4,
      MT9V111_VERTBLANK_MIN = 0x3,
      MT9V111_VERTBLANK_MAX = 0xFFF,
};

/*!
 * Mt9v111 Core Register structure.
 */
00255 typedef struct {
00256       u32 addressSelect;      /*!< select address bank for Core Register 0x4 */
00257       u32 columnStart;  /*!< Starting Column */
00258       u32 windowHeight; /*!< Window Height */
00259       u32 windowWidth;  /*!< Window Width */
00260       u32 horizontalBlanking; /*!< Horizontal Blank time, in pixels */
00261       u32 verticalBlanking;   /*!< Vertical Blank time, in pixels */
00262       u32 outputControl;      /*!< Register to control sensor output */
00263       u32 rowStart;           /*!< Starting Row */
      u32 shutterWidth;
00265       u32 pixelClockSpeed;    /*!< pixel date rate */
00266       u32 restart;            /*!< Abandon the readout of current frame */
      u32 shutterDelay;
00268       u32 reset;        /*!< reset the sensor to the default mode */
00269       u32 zoomColStart; /*!< Column start in the Zoom mode */
00270       u32 zomRowStart;  /*!< Row start in the Zoom mode */
00271       u32 digitalZoom;  /*!< 1 means zoom by 2 */
00272       u32 readMode;           /*!< Readmode: aspects of the readout of the sensor */
      u32 dACStandbyControl;
00274       u32 green1Gain;         /*!< Gain Settings */
      u32 blueGain;
      u32 redGain;
      u32 green2Gain;
      u32 rowNoiseControl;
      u32 darkTargetwNC;
00280       u32 testData;           /*!< test mode */
      u32 globalGain;
      u32 chipVersion;
      u32 darkTargetwoNC;
      u32 vREFDACs;
      u32 vCMandVCL;
      u32 disableBypass;
      u32 calibMeanTest;
      u32 darkG1average;
      u32 darkG2average;
      u32 darkRaverage;
      u32 darkBaverage;
      u32 calibThreshold;
      u32 calibGreen1;
      u32 calibGreen2;
      u32 calibControl;
      u32 calibRed;
      u32 calibBlue;
00298       u32 chipEnable;         /*!< Image core Registers written by image flow processor */
} mt9v111_coreReg;

/*!
 * Mt9v111 IFP Register structure.
 */
00304 typedef struct {
00305       u32 addrSpaceSel; /*!< select address bank for Core Register 0x1 */
00306       u32 baseMaxtrixSign;    /*!< sign of coefficient for base color correction matrix */
00307       u32 baseMaxtrixScale15; /*!< scaling of color correction coefficient K1-5 */
00308       u32 baseMaxtrixScale69; /*!< scaling of color correction coefficient K6-9 */
00309       u32 apertureGain; /*!< sharpening */
00310       u32 modeControl;  /*!< bit 7 CCIR656 sync codes are embedded in the image */
00311       u32 softReset;          /*!< Image processing mode: 1 reset mode, 0 operational mode */
00312       u32 formatControl;      /*!< bit12 1 for RGB565, 0 for YcrCb */
00313       u32 baseMatrixCfk1;     /*!< K1 Color correction coefficient */
00314       u32 baseMatrixCfk2;     /*!< K2 Color correction coefficient */
00315       u32 baseMatrixCfk3;     /*!< K3 Color correction coefficient */
00316       u32 baseMatrixCfk4;     /*!< K4 Color correction coefficient */
00317       u32 baseMatrixCfk5;     /*!< K5 Color correction coefficient */
00318       u32 baseMatrixCfk6;     /*!< K6 Color correction coefficient */
00319       u32 baseMatrixCfk7;     /*!< K7 Color correction coefficient */
00320       u32 baseMatrixCfk8;     /*!< K8 Color correction coefficient */
00321       u32 baseMatrixCfk9;     /*!< K9 Color correction coefficient */
00322       u32 awbPosition;  /*!< Current position of AWB color correction matrix */
00323       u32 awbRedGain;         /*!< Current value of AWB red channel gain */
00324       u32 awbBlueGain;  /*!< Current value of AWB blue channel gain */
00325       u32 deltaMatrixCFSign;  /*!< Sign of coefficients of delta color correction matrix register */
00326       u32 deltaMatrixCFD1;    /*!< D1 Delta coefficient */
00327       u32 deltaMatrixCFD2;    /*!< D2 Delta coefficient */
00328       u32 deltaMatrixCFD3;    /*!< D3 Delta coefficient */
00329       u32 deltaMatrixCFD4;    /*!< D4 Delta coefficient */
00330       u32 deltaMatrixCFD5;    /*!< D5 Delta coefficient */
00331       u32 deltaMatrixCFD6;    /*!< D6 Delta coefficient */
00332       u32 deltaMatrixCFD7;    /*!< D7 Delta coefficient */
00333       u32 deltaMatrixCFD8;    /*!< D8 Delta coefficient */
00334       u32 deltaMatrixCFD9;    /*!< D9 Delta coefficient */
00335       u32 lumLimitWB;         /*!< Luminance range of pixels considered in WB statistics */
00336       u32 RBGManualWB;  /*!< Red and Blue color channel gains for manual white balance */
00337       u32 awbRedLimit;  /*!< Limits on Red channel gain adjustment through AWB */
00338       u32 awbBlueLimit; /*!< Limits on Blue channel gain adjustment through AWB */
00339       u32 matrixAdjLimit;     /*!< Limits on color correction matrix adjustment through AWB */
00340       u32 awbSpeed;           /*!< AWB speed and color saturation control */
00341       u32 HBoundAE;           /*!< Horizontal boundaries of AWB measurement window */
00342       u32 VBoundAE;           /*!< Vertical boundaries of AWB measurement window */
00343       u32 HBoundAECenWin;     /*!< Horizontal boundaries of AE measurement window for backlight compensation */
00344       u32 VBoundAECenWin;     /*!< Vertical boundaries of AE measurement window for backlight compensation */
00345       u32 boundAwbWin;  /*!< Boundaries of AWB measurement window */
00346       u32 AEPrecisionTarget;  /*!< Auto exposure target and precision control */
00347       u32 AESpeed;            /*!< AE speed and sensitivity control register */
00348       u32 redAWBMeasure;      /*!< Measure of the red channel value used by AWB */
00349       u32 lumaAWBMeasure;     /*!< Measure of the luminance channel value used by AWB */
00350       u32 blueAWBMeasure;     /*!< Measure of the blue channel value used by AWB */
00351       u32 limitSharpSatuCtrl; /*!< Automatic control of sharpness and color saturation */
00352       u32 lumaOffset;         /*!< Luminance offset control (brightness control) */
00353       u32 clipLimitOutputLumi;      /*!< Clipping limits for output luminance */
00354       u32 gainLimitAE;  /*!< Imager gain limits for AE adjustment */
00355       u32 shutterWidthLimitAE;      /*!< Shutter width (exposure time) limits for AE adjustment */
00356       u32 upperShutterDelayLi;      /*!< Upper Shutter Delay Limit */
00357       u32 outputFormatCtrl2;  /*!< Output Format Control 2
                           00 = 16-bit RGB565.
                           01 = 15-bit RGB555.
                           10 = 12-bit RGB444x.
                           11 = 12-bit RGBx444.       */
00362       u32 ipfBlackLevelSub;   /*!< IFP black level subtraction */
00363       u32 ipfBlackLevelAdd;   /*!< IFP black level addition */
00364       u32 adcLimitAEAdj;      /*!< ADC limits for AE adjustment */
00365       u32 agimnThreCamAdj;    /*!< Gain threshold for CCM adjustment */
      u32 linearAE;
00367       u32 thresholdEdgeDefect;      /*!< Edge threshold for interpolation and defect correction */
00368       u32 lumaSumMeasure;     /*!< Luma measured by AE engine */
00369       u32 timeAdvSumLuma;     /*!< Time-averaged luminance value tracked by auto exposure */
00370       u32 motion;       /*!< 1 when motion is detected */
00371       u32 gammaKneeY12; /*!< Gamma knee points Y1 and Y2 */
00372       u32 gammaKneeY34; /*!< Gamma knee points Y3 and Y4 */
00373       u32 gammaKneeY56; /*!< Gamma knee points Y5 and Y6 */
00374       u32 gammaKneeY78; /*!< Gamma knee points Y7 and Y8 */
00375       u32 gammaKneeY90; /*!< Gamma knee points Y9 and Y10 */
00376       u32 gammaKneeY0;  /*!< Gamma knee point Y0 */
      u32 shutter_width_60;
      u32 search_flicker_60;
      u32 ratioImageGainBase;
      u32 ratioImageGainDelta;
      u32 signValueReg5F;
      u32 aeGain;
      u32 maxGainAE;
      u32 lensCorrectCtrl;
00385       u32 shadingParameter1;  /*!< Shade Parameters */
      u32 shadingParameter2;
      u32 shadingParameter3;
      u32 shadingParameter4;
      u32 shadingParameter5;
      u32 shadingParameter6;
      u32 shadingParameter7;
      u32 shadingParameter8;
      u32 shadingParameter9;
      u32 shadingParameter10;
      u32 shadingParameter11;
      u32 shadingParameter12;
      u32 shadingParameter13;
      u32 shadingParameter14;
      u32 shadingParameter15;
      u32 shadingParameter16;
      u32 shadingParameter17;
      u32 shadingParameter18;
      u32 shadingParameter19;
      u32 shadingParameter20;
      u32 shadingParameter21;
00406       u32 flashCtrl;          /*!< Flash control */
00407       u32 lineCounter;  /*!< Line counter */
00408       u32 frameCounter; /*!< Frame counter */
00409       u32 HPan;         /*!< Horizontal pan in decimation */
00410       u32 HZoom;        /*!< Horizontal zoom in decimation */
00411       u32 HSize;        /*!< Horizontal output size iIn decimation */
00412       u32 VPan;         /*!< Vertical pan in decimation */
00413       u32 VZoom;        /*!< Vertical zoom in decimation */
00414       u32 VSize;        /*!< Vertical output size in decimation */
} mt9v111_IFPReg;

/*!
 * mt9v111 Config structure
 */
00420 typedef struct {
00421       mt9v111_coreReg *coreReg;     /*!< Sensor Core Register Bank */
00422       mt9v111_IFPReg *ifpReg; /*!< IFP Register Bank */
} mt9v111_conf;

typedef struct {
      u8 index;
      u16 width;
      u16 height;
} mt9v111_image_format;

#endif                        /* MT9V111_H_  */

Generated by  Doxygen 1.6.0   Back to index