www.pudn.com > MT6226(YUV)_SIV100A.zip > image_sensor.h


/***************************************************************************** 
*  Copyright Statement: 
*  -------------------- 
*  This software is protected by Copyright and the information contained 
*  herein is confidential. The software may not be copied and the information 
*  contained herein may not be used or disclosed except with the written 
*  permission of MediaTek Inc. (C) 2005 
* 
*  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES 
*  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") 
*  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON 
*  AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES, 
*  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF 
*  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT. 
*  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE 
*  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR 
*  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH 
*  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO 
*  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S 
*  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM. 
* 
*  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE 
*  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE, 
*  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE, 
*  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO 
*  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.  
* 
*  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE 
*  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF 
*  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND 
*  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER 
*  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC). 
* 
*****************************************************************************/ 
 
/***************************************************************************** 
 * 
 * Filename: 
 * --------- 
 *   image_sensor.h 
 * 
 *============================================================================ 
 *             HISTORY 
 * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!! 
 *------------------------------------------------------------------------------ 
 * 
 *------------------------------------------------------------------------------ 
 * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!! 
 *============================================================================ 
 ****************************************************************************/ 
#ifndef _IMAGE_SENSOR_H 
#define _IMAGE_SENSOR_H 
 
    #include "isp_if.h" 
 
    //------------------------Engineer mode--------------------------------- 
 
    #define FACTORY_START_ADDR (70) 
 
    typedef enum group_enum { 
        AWB_GAIN = 0, 
        PRE_GAIN, 
        SENSOR_DBLC, 
        GAMMA_ENABLE, 
        CMMCLK_CURRENT, 
        FRAME_RATE_LIMITATION, 
        REGISTER_EDITOR, 
        GROUP_TOTAL_NUMS 
    } FACTORY_CCT_GROUP_ENUM; 
	 
	typedef enum register_index { 
	   AWB_GAIN_R_INDEX=FACTORY_START_ADDR, 
	   AWB_GAIN_B_INDEX, 
	   SENSOR_DBLC_INDEX, 
	   GAMMA_ENABLE_INDEX, 
	   CMMCLK_CURRENT_INDEX,	    
	   FACTORY_END_ADDR 
	} FACTORY_REGISTER_INDEX; 
	 
    typedef enum cct_register_index { 
	   GLOBAL_GAIN_INDEX = 0, 
	   PRE_GAIN_R_INDEX, 
	   PRE_GAIN_B_INDEX, 
	   CCT_END_ADDR 
    } CCT_REGISTER_INDEX; 
 
    typedef struct { 
        kal_uint8 item_name_ptr[50];    // item name 
        kal_int32 item_value;   // item value 
        kal_bool is_true_false; // is this item for enable/disable functions 
        kal_bool is_read_only;  // is this item read only 
        kal_bool is_need_restart;   // after set this item need restart 
        kal_int32 min;  // min value of item value	 
        kal_int32 max;  // max value of item value	 
    } ENG_sensor_info; 
 
    // Prototypes FOR ENGINEER FACTORY MODE 
    void  get_sensor_group_count(kal_int32* sensor_count_ptr); 
    void  get_sensor_group_info(kal_uint16 group_idx, kal_int8* group_name_ptr, kal_int32* item_count_ptr); 
    void  get_sensor_item_info(kal_uint16 group_idx,kal_uint16 item_idx, ENG_sensor_info* info_ptr); 
    kal_bool set_sensor_item_info(kal_uint16 group_idx, kal_uint16 item_idx, kal_int32 item_value); 
 
	//------------------------Engineer mode--------------------------------- 
	 
    typedef struct { 
        kal_uint32 addr; 
        kal_uint32 para; 
    } sensor_reg_struct; 
 
    typedef struct { 
        sensor_reg_struct reg[FACTORY_END_ADDR]; 
        sensor_reg_struct cct[CCT_END_ADDR]; 
    } sensor_data_struct; 
	 
	// write camera_para to sensor register  
	void camera_para_to_sensor(void); 
	// update camera_para from sensor register  
	void sensor_to_camera_para(void); 
	// config sensor callback function  
	void image_sensor_func_config(void); 
	// Compact Image Sensor Module Power ON/OFF 
	void cis_module_power_on(kal_bool on); 
	 
	/* HW PRODUCE I2C SIGNAL TO CONTROL SENSOR REGISTER */ 
	//#define HW_SCCB 
	 
    typedef enum _SENSOR_TYPE { 
        CMOS_SENSOR = 0, 
        CCD_SENSOR 
    } SENSOR_TYPE; 
 
    typedef struct { 
        kal_uint16 id; 
        SENSOR_TYPE type; 
    } SensorInfo; 
 
	/* MAXIMUM EXPLOSURE LINES USED BY AE */ 
    extern kal_uint16 MAX_EXPOSURE_LINES;   // must be defined but not referenced by YUV driver 
    extern kal_uint8  MIN_EXPOSURE_LINES;   // must be defined but not referenced by YUV driver 
 
	/* DEFINITION USED BY CCT */ 
    extern SensorInfo   g_CCT_MainSensor;       // must be defined but not referenced by YUV driver 
    extern kal_uint8    g_CCT_FirstGrabColor;   // must be defined but not referenced by YUV driver 
 
	// these two have no effect in YUV sensor driver 
	#define VGA_PERIOD_PIXEL_NUMS   (0) // # of PCLK in one HSYNC 
	#define VGA_PERIOD_LINE_NUMS    (0) // # of HSYNC in one VSYNC 
 
    //#define VIDEO_FIX_FRAME_RATE 
    #ifdef VIDEO_FIX_FRAME_RATE 
    // fixed frame rate in normal:13.4fps, night:7.4fps 
    // video mode blank size 
    #define VIDEO_MODE_VBLANK_50HZ_NORMAL   (30) 
    #define VIDEO_MODE_VBLANK_60HZ_NORMAL   (30) 
    #define VIDEO_MODE_VBLANK_50HZ_NIGHT    (498) 
    #define VIDEO_MODE_VBLANK_60HZ_NIGHT    (432) 
    #define VIDEO_MODE_HBLANK_50HZ_NORMAL   (106) 
    #define VIDEO_MODE_HBLANK_60HZ_NORMAL   (59) 
    #define VIDEO_MODE_HBLANK_50HZ_NIGHT    (42) 
    #define VIDEO_MODE_HBLANK_60HZ_NIGHT    (59) 
    #define VIDEO_MODE_STSTN_50HZ_NIGHT     (0x47) 
    #define VIDEO_MODE_STSTN_50HZ_NORMAL    (0x42) 
    #define VIDEO_MODE_STSTN_60HZ_NIGHT     (0x3A) 
    #define VIDEO_MODE_STSTN_60HZ_NORMAL    (0x3A) 
    #define VIDEO_MODE_FRCNT_60HZ_NORMAL    (0x09) 
    #define VIDEO_MODE_FRCNT_60HZ_NIGHT     (0x10) 
    #define VIDEO_MODE_FRCNT_50HZ_NORMAL    (0x08) 
    #define VIDEO_MODE_FRCNT_50HZ_NIGHT     (0x0E) 
    #else 
    // variable frame rate for night mode 13.4fps ~ 7.1fps 
    // fixe frame rate for normal mode 13.4 
	  #define VIDEO_MODE_VBLANK_50HZ_NORMAL   (0xDF)	 
    #define VIDEO_MODE_VBLANK_60HZ_NORMAL   (0x8F)	 
    #define VIDEO_MODE_VBLANK_50HZ_NIGHT    (VIDEO_MODE_VBLANK_50HZ_NORMAL) 
    #define VIDEO_MODE_VBLANK_60HZ_NIGHT    (VIDEO_MODE_VBLANK_60HZ_NORMAL) 
    #define VIDEO_MODE_HBLANK_50HZ_NORMAL   (0x2B8)	 
    #define VIDEO_MODE_HBLANK_60HZ_NORMAL   (0x1BE)	 
    #define VIDEO_MODE_HBLANK_50HZ_NIGHT    (VIDEO_MODE_HBLANK_50HZ_NORMAL) 
    #define VIDEO_MODE_HBLANK_60HZ_NIGHT    (VIDEO_MODE_HBLANK_60HZ_NORMAL) 
    #define VIDEO_MODE_STSTN_50HZ_NORMAL    (0x50) 
    #define VIDEO_MODE_STSTN_50HZ_NIGHT     (VIDEO_MODE_STSTN_50HZ_NORMAL) 
    #define VIDEO_MODE_STSTN_60HZ_NORMAL    (0x50) 
    #define VIDEO_MODE_STSTN_60HZ_NIGHT     (VIDEO_MODE_STSTN_60HZ_NORMAL) 
    #define VIDEO_MODE_FRCNT_60HZ_NORMAL    (0x09) 
    #define VIDEO_MODE_FRCNT_60HZ_NIGHT     (0x10) 
    #define VIDEO_MODE_FRCNT_50HZ_NORMAL    (0x08) 
    #define VIDEO_MODE_FRCNT_50HZ_NIGHT     (0x0E) 
    #endif 
 
    // Blank size setting for camera preview mode 
    #define PV_MODE_VBLANK_50HZ_NORMAL  (0x8F) 
    #define PV_MODE_VBLANK_60HZ_NORMAL  (0x8F) 
    #define PV_MODE_VBLANK_50HZ_NIGHT   (PV_MODE_VBLANK_50HZ_NORMAL) 
    #define PV_MODE_VBLANK_60HZ_NIGHT   (PV_MODE_VBLANK_60HZ_NORMAL) 
    #define PV_MODE_HBLANK_50HZ_NORMAL  (0x2B8) 
    #define PV_MODE_HBLANK_60HZ_NORMAL  (0x1BE) 
    #define PV_MODE_HBLANK_50HZ_NIGHT   (PV_MODE_HBLANK_50HZ_NORMAL) 
    #define PV_MODE_HBLANK_60HZ_NIGHT   (PV_MODE_HBLANK_60HZ_NORMAL) 
    #define PV_MODE_STSTN_50HZ_NORMAL   (0x50)	 
    #define PV_MODE_STSTN_50HZ_NIGHT    (PV_MODE_STSTN_50HZ_NORMAL) 
    #define PV_MODE_STSTN_60HZ_NORMAL   (0x50)	 
    #define PV_MODE_STSTN_60HZ_NIGHT    (PV_MODE_STSTN_60HZ_NORMAL) 
    #define PV_MODE_FRCNT_60HZ_NORMAL   (0x0A) 
    #define PV_MODE_FRCNT_60HZ_NIGHT    (0x18)	 
    #define PV_MODE_FRCNT_50HZ_NORMAL   (0x08) 
    #define PV_MODE_FRCNT_50HZ_NIGHT    (0x14)	 
 
    // capture 1.3x mode's HBlank size 
    #define CP_1M_MODE_ZOOM_HBLANK  (255) 
    #define PV_MODE_HVP_PERIOD  (640)   // line data valid period 
 
    // Blank size setting for Webcam mode 
    #define WEBCAM_MODE_VBLANK  (0x40) 
    #define WEBCAM_MODE_HBLANK  (0x40) 
 
    // sensor size 
    #define IMAGE_SENSOR_VGA_WIDTH  (640) 
    #define IMAGE_SENSOR_VGA_HEIGHT (480) 
 
    // BB's reset pin high low control MACROs 
    #define RESET_PIN_LOW   (REG_ISP_CMOS_SENSOR_MODE_CONFIG &= ~REG_CMOS_SENSOR_RESET_BIT) 
    #define RESET_PIN_HIGH  (REG_ISP_CMOS_SENSOR_MODE_CONFIG |= REG_CMOS_SENSOR_RESET_BIT) 
 
	// sensor's I2C read/write IDs 
    #define SIV100A_I2C_WRITE_ID    (0x66) 
    #define SIV100A_I2C_READ_ID		(0x67) 
 
    // sensor's chip ID and version 
    #define SIV100A_SENSOR_ID       (0x0C) 
    #define SIV100A_SENSOR_VERSION  (0x10) 
 
#endif /* _IMAGE_SENSOR_H */