/*****************************************************************************
* 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_GC0308.c
*
* Project:
* --------
* MAUI
*
* Description:
* ------------
* Image sensor driver function
*
* Author:
* -------
* QH Geng (mtk70548)
*
*=============================================================
* HISTORY
* Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
*------------------------------------------------------------------------------
* 2011/03/16 Firsty Released By Mormo(using new driver structure).
*
* 2011/04/12 Updated by Mormo , change "GC0308_set_param_banding" function, change max exposure time for "//exp level 2".
*
*
*------------------------------------------------------------------------------
* Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
*=============================================================
******************************************************************************/
#include "drv_features.h"
#include "drv_comm.h"
#include "gpio_sw.h"
#include "isp_if.h"
#include "camera_para.h"
#include "upll_ctrl.h"
#include "med_api.h"
#include "sensor_common.h"
#include "image_sensor.h"
#ifdef GC0308_HW_SCCB
#include "sccb_v2.h"
#else
#include "sccb.h"
#endif
#ifdef GC0308_LOAD_FROM_T_FLASH
#include "med_utility.h"
#include "fs_type.h"
#endif
static GC0308_FRAME_RATE_LUT GC0308_MJPEG_frame_rate_lut[] =
{
/* Night Mode, Target Witdh, Target Height, Normal Mode Frame Rate, Night Mode Frame Rate, */
/* Frame rate: 150 means 15fps, 75 means 7.5fps */
#if (defined(DRV_ISP_6235_SERIES))
#if (defined(DRV_ISP_YUV_BURST_MODE_SUPPORT)) /* MT6253 Series, always enable advance resizer */
{KAL_FALSE, 320, 240, 200, 100},
{KAL_FALSE, 172, 144, 200, 100},
#else /* MT6235 & MT6235B normal */
{KAL_FALSE, 172, 144, 100, 50},
#endif
#else
/* Always set one default frame rate setting. */
{KAL_FALSE, 320, 240, 150, 75},
{KAL_FALSE, 172, 144, 150, 75},
#endif
};
static GC0308_FRAME_RATE_LUT GC0308_MPEG4_frame_rate_lut[] =
{
/* Night Mode, Target Witdh, Target Height, Normal Mode Frame Rate, Night Mode Frame Rate, */
/* Frame rate: 150 means 15fps, 75 means 7.5fps */
#if (defined(DRV_ISP_6235_SERIES))
#if (defined(__SW_VIDEO_ADV_RESIZER_SUPPORT__)) /* MT6235 & MT6235B with advance resizer */
{KAL_FALSE, 320, 240, 300, 150},
{KAL_FALSE, 172, 144, 300, 150},
#elif (defined(DRV_ISP_YUV_BURST_MODE_SUPPORT)) /* MT6253 Series, always enable advance resizer */
{KAL_FALSE, 320, 240, 200, 100},
{KAL_FALSE, 172, 144, 300, 150},
#else /* MT6235 & MT6235B normal */
{KAL_FALSE, 320, 240, 150, 75},
{KAL_FALSE, 172, 144, 150, 75},
#endif
#elif (defined(DRV_ISP_6238_SERIES)||defined(DRV_ISP_6276_SERIES))
#if (defined(DRV_ISP_MT6236_HW_SUPPORT)) /* MT6236 Series video frame rate */
{KAL_FALSE, 480, 320, 120, 75},
{KAL_FALSE, 320, 240, 150, 75},
{KAL_FALSE, 176, 144, 150, 75},
#else /* MT6238/39, MT6268 Series video frame rate */
{KAL_FALSE, 640, 480, 300, 150},
{KAL_FALSE, 480, 320, 300, 150},
{KAL_FALSE, 320, 240, 300, 150},
{KAL_FALSE, 176, 144, 300, 150},
#endif
#else
/* Always set one default frame rate setting. */
{KAL_FALSE, 320, 240, 150, 75},
#endif
};
static GC0308_FRAME_RATE_LUT GC0308_FULLVIDEO_frame_rate_lut[] = /* MT6268 Series video frame rate */
{
{KAL_FALSE, 640, 480, 300, 75},
{KAL_FALSE, 480, 320, 300, 75},
{KAL_FALSE, 320, 240, 300, 75},
{KAL_FALSE, 176, 144, 300, 75},
};
static GC0308_SENSOR_INFO_ST GC0308_sensor;
static GC0308_OPERATION_STATE_ST GC0308_op_state;
static kal_uint8 GC0308_sccb_addr[] =
{
GC0308_WRITE_ID_0, /* Slave address0, Write ID */
GC0308_WRITE_ID_1, /* Slave address1, Write ID */
GC0308_WRITE_ID_2, /* Slave address2, Write ID */
GC0308_WRITE_ID_3, /* Slave address3, Write ID */
};
#define GC0308_SET_PAGE0 GC0308_write_cmos_sensor(0xfe, 0x00)
#define GC0308_SET_PAGE1 GC0308_write_cmos_sensor(0xfe, 0x01)
kal_bool GC039_CAM_BANDING_50HZ = KAL_FALSE;
#ifdef GC0308_LOAD_FROM_T_FLASH
GC0308_initial_set_struct GC0308_Init_Reg[1000];
WCHAR GC0308_set_file_name[256] = {0};
#endif
#ifdef __GC0308_DEBUG_TRACE__
static kal_uint32 GC0308_t[] =
{
0
};
#endif
/*************************************************************************
* FUNCTION
* GC0308_Enable_Output_MCLK
*
* DESCRIPTION
* This function enable the MCLK (Master Clock) output to sensor. Only can select 26.0Mhz
* or 24.0Mhz.
*
* PARAMETERS
* 1. kal_uint16 - Target master clock, 260 means 26.0MHz
*
* RETURNS
* None
*
*************************************************************************/
static void GC0308_Enable_Output_MCLK(kal_uint16 master_clock)
{
if (master_clock != 260 && master_clock != 240)
{
master_clock = 260; /* Default output 26Mhz Master clock. */
}
#if (defined(DRV_ISP_6238_SERIES)||defined(DRV_ISP_6276_SERIES)) /* MT6238/39, 6268, 6236, 6516 series... */
if (master_clock == 260)
{
#if (defined(DRV_ISP_MT6268_HW_SUPPORT) || defined(DRV_ISP_6276_SERIES)) /* MT6268, MT6276 Series */
setCameraCPLLOutputFreq(52000000); /* 52Mhz Clock Base */
ENABLE_CAMERA_TG_CLK_48M;
/* Set MCLK Divider, The MCLK = 52 / (1+1) Mhz, or 48 / (1+1) Mhz based on the Clock Base above */
SET_TG_OUTPUT_CLK_DIVIDER(1);
SET_CMOS_RISING_EDGE(0); /* Always set the Rising_Edge = 0 */
SET_CMOS_FALLING_EDGE(1); /* Set the Falling_Edge = ((TG_CLK_DIVIDER + 1) / 2) to get 50% duty of MCLK. */
#else /* MT6238/38, 6236 Series */
DISABLE_CAMERA_TG_CLK_48M; /* 104Mhz Clock Base
GC0308 MTK平台驱动
3星 · 超过75%的资源 需积分: 16 135 浏览量
2017-09-27
09:14:36
上传
评论 1
收藏 52KB ZIP 举报
yangshishu
- 粉丝: 2
- 资源: 19
最新资源
- Ruby基于Ruby的MKS rebase脚本 Ruby语言基础
- 基于GPT+Pyhon开发的网页游戏,类似于最火的文字游戏《人生重开模拟器》源码
- 基于qt+C++实现u盘插拔检测.+源码(毕业设计&课程设计&项目开发)
- rust开发封装的windows gui源码
- checkpoint.zip
- 无人机姿态和轨迹跟踪控制-反步控制方法
- 基于Qt+opencv+C++实现图像旋转+自动&&手动+直线检测,角度计算+界面操作+源码(期末大作业&课程设计&项目开发)
- Object-CC++对象库,实现类似于Java的Object类的Object
- 基于servlet的简单游戏管理系统
- 广工基于Libero的数字逻辑设计仿真及验证实验报告
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈