⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 image_sensor.h

📁 mtk siv100A for MT6226
💻 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 */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -