MI初始化寄存器配置Word下载.docx
《MI初始化寄存器配置Word下载.docx》由会员分享,可在线阅读,更多相关《MI初始化寄存器配置Word下载.docx(38页珍藏版)》请在冰豆网上搜索。
*/
#include<
linux/kernel.h>
linux/version.h>
linux/module.h>
linux/config.h>
linux/types.h>
linux/errno.h>
linux/fcntl.h>
linux/mm.h>
linux/proc_fs.h>
linux/fs.h>
linux/slab.h>
linux/smp_lock.h>
linux/init.h>
asm/uaccess.h>
asm/hardware.h>
asm/io.h>
asm/system.h>
linux/miscdevice.h>
linux/delay.h>
linux/poll.h>
asm/bitops.h>
asm/irq.h>
linux/moduleparam.h>
linux/ioport.h>
linux/interrupt.h>
linux/kcom.h>
kcom/gpio_i2c.h>
#include"
mi2010.h"
/*mi2010i2cslaveraddressmicro-definition.*/
#defineI2C_mi20100x90
staticintout_mode=1;
staticintpowerfreq=DC_VAL_50HZ;
staticvoidmi2010_default_init(void)
{
/*========softreset===============*/
/*page0*/
gpio_i2c_write(I2C_mi2010,0xf0,0x00);
gpio_i2c_write(I2C_mi2010,0xf1,0x00);
gpio_i2c_write(I2C_mi2010,0x65,0xa0);
gpio_i2c_write(I2C_mi2010,0xf1,0x00);
/*page1*/
gpio_i2c_write(I2C_mi2010,0xf1,0x01);
gpio_i2c_write(I2C_mi2010,0xc3,0x05);
gpio_i2c_write(I2C_mi2010,0xf1,0x01);
gpio_i2c_write(I2C_mi2010,0x0d,0x00);
gpio_i2c_write(I2C_mi2010,0xf1,0x21);
msleep(10);
/*softresetend*/
/*pllcontrol*/
gpio_i2c_write(I2C_mi2010,0x66,0x10);
gpio_i2c_write(I2C_mi2010,0xf1,0x04);
gpio_i2c_write(I2C_mi2010,0x67,0x05);
msleep(50);
gpio_i2c_write(I2C_mi2010,0x65,0xA0);
gpio_i2c_write(I2C_mi2010,0x65,0x20);
msleep(100);
/*pllcontrolend*/
/**************setmode*******************************************/
gpio_i2c_write(I2C_mi2010,0xf0,0x00);
/*contexa/bbypassjpeg*/
gpio_i2c_write(I2C_mi2010,0xC6,0x27);
gpio_i2c_write(I2C_mi2010,0xf1,0x0B);
gpio_i2c_write(I2C_mi2010,0xC8,0x00);
gpio_i2c_write(I2C_mi2010,0xf1,0x30);
/*ReadMode(A)*/
gpio_i2c_write(I2C_mi2010,0x21,0x03);
/************setmodeend******************************************/
/************************flickerdetection****************************************/
/*search_f1_50Lowerlimitofperiodrange30*/
gpio_i2c_write(I2C_mi2010,0xC6,0xA4);
gpio_i2c_write(I2C_mi2010,0xf1,0x08);
gpio_i2c_write(I2C_mi2010,0xf1,0x24);
/*search_f1_50upperlimitofperiodrange32*/
gpio_i2c_write(I2C_mi2010,0xf1,0x09);
gpio_i2c_write(I2C_mi2010,0xf1,0x26);
/*search_f1_60Lowerlimitofperiodrange37*/
gpio_i2c_write(I2C_mi2010,0xf1,0x0a);
gpio_i2c_write(I2C_mi2010,0xf1,0x1e);
/*search_f1_60upperlimitofperiodrange39*/
gpio_i2c_write(I2C_mi2010,0xf1,0x0b);
gpio_i2c_write(I2C_mi2010,0xf1,0x20);
/*R9_Step_60minimalshutterwidthstepfor60hzac157*/
gpio_i2c_write(I2C_mi2010,0xC6,0x24);
gpio_i2c_write(I2C_mi2010,0xf1,0x11);
gpio_i2c_write(I2C_mi2010,0xf1,0x9c);
/*R9_Step_50minimalshutterwidthstepfor50hzac188*/
gpio_i2c_write(I2C_mi2010,0xf1,0x13);
gpio_i2c_write(I2C_mi2010,0xf1,0xbc);
if(powerfreq==DC_VAL_50HZ)
{
/*====fixto50HZ====*/
gpio_i2c_write(I2C_mi2010,0xC6,0xa1);
gpio_i2c_write(I2C_mi2010,0xf1,0x2a);
gpio_i2c_write(I2C_mi2010,0xf1,0x02);
gpio_i2c_write(I2C_mi2010,0xC6,0xa4);
gpio_i2c_write(I2C_mi2010,0xf1,0xc0);
gpio_i2c_write(I2C_mi2010,0xf1,0x03);
gpio_i2c_write(I2C_mi2010,0xf1,0x06);
}
elseif(powerfreq==DC_VAL_60HZ)
{
/*====fixto60HZ====*/
gpio_i2c_write(I2C_mi2010,0xf1,0x80);
/************************************flickerdetectionend****************************/
/***************************************************setautoexposure*********/
/*MaxR12(B)(ShutterDelay)402*/
gpio_i2c_write(I2C_mi2010,0xC6,0x22);
gpio_i2c_write(I2C_mi2010,0xC8,0x01);
gpio_i2c_write(I2C_mi2010,0xf1,0x92);
/*IndexTH23Zonenumbertostartgainincreaseinlow-light.
Setsframerateatnormalillumination.4*/
gpio_i2c_write(I2C_mi2010,0xC6,0xA2);
gpio_i2c_write(I2C_mi2010,0xf1,0x17);
/*RowTime(msclkper)/4Rowtimedividedby4(inmasterclockperiods)527*/
gpio_i2c_write(I2C_mi2010,0xf1,0x28);
gpio_i2c_write(I2C_mi2010,0xC8,0x02);
gpio_i2c_write(I2C_mi2010,0xf1,0x0f);
/*R9StepIntegrationtimeofonezone156*/
gpio_i2c_write(I2C_mi2010,0xf1,0x2f);
/*Maximumallowedzonenumber(thatismaximumintegrationtime)4*/
gpio_i2c_write(I2C_mi2010,0xC6,0xa2);
gpio_i2c_write(I2C_mi2010,0xf1,0x0e);
/***************************************************setautoexposureend*********/
/*======******************************************lenscorrecton***************************/
gpio_i2c_write(I2C_mi2010,0xf1,0x02);
gpio_i2c_write(I2C_mi2010,0x80,0x01);
gpio_i2c_write(I2C_mi2010,0xf1,0xE8);
/*LENS_CORRECTION_CONTROL*/
gpio_i2c_write(I2C_mi2010,0x81,0x5C);
gpio_i2c_write(I2C_mi2010,0xf1,0x2E);
/*ZONE_BOUNDS_X1_X2*/
gpio_i2c_write(I2C_mi2010,0x82,0x36);
gpio_i2c_write(I2C_mi2010,0xf1,0x8A);
/*ZONE_BOUNDS_X0_X3*/
gpio_i2c_write(I2C_mi2010,0x83,0xA2);
gpio_i2c_write(I2C_mi2010,0xf1,0x6C);
/*ZONE_BOUNDS_X4_X5*/
gpio_i2c_write(I2C_mi2010,0x84,0x4B);
gpio_i2c_write(I2C_mi2010,0xf1,0x26);
/*ZONE_BOUNDS_Y1_Y2*/
gpio_i2c_write(I2C_mi2010,0x85,0x25);
gpio_i2c_write(I2C_mi2010,0xf1,0x71);
/*ZONE_BOUNDS_Y0_Y3*/
gpio_i2c_write(I2C_mi2010,0x86,0x70);
gpio_i2c_write(I2C_mi2010,0xf1,0x4B);
/*ZONE_BOUNDS_Y4_Y5*/
gpio_i2c_write(I2C_mi2010,0x87,0x01);
gpio_i2c_write(I2C_mi2010,0xf1,0xF0);
/*CENTER_OFFSET*/
gpio_i2c_write(I2C_mi2010,0x88,0x00);
/*FX_RED*/
gpio_i2c_write(I2C_mi2010,0x8B,0x00);
gpio_i2c_write(I2C_mi2010,0xf1,0x20);
/*FY_RED*/
gpio_i2c_write(I2C_mi2010,0x8E,0x03);
gpio_i2c_write(I2C_mi2010,0xf1,0xE2);
/*DF_DX_RED*/
gpio_i2c_write(I2C_mi2010,0x91,0x00);
/*DF_DY_RED*/
gpio_i2c_write(I2C_mi2010,0x94,0xC4);
gpio_i2c_write(I2C_mi2010,0xf1,0xB8);
/*SECOND_DERIV_ZONE_0_RED*/
gpio_i2c_write(I2C_mi2010,0x97,0x25);
gpio_i2c_write(I2C_mi2010,0xf1,0x8E);
/*SECOND_DERIV_ZONE_1_RED*/
gpio_i2c_write(I2C_mi2010,0x9A,0x03);
gpio_i2c_write(I2C_mi2010,0xf1,0xEB);
/*SECOND_DERIV_ZONE_2_RED*/
gpio_i2c_write(I2C_mi2010,0x9D,0x26);
gpio_i2c_write(I2C_mi2010,0xf1,0x2C);
/*SECOND_DERIV_ZONE_3_RED*/
gpio_i2c_write(I2C_mi2010,0xA0,0x2C);
gpio_i2c_write(I2C_mi2010,0xf1,0x05);
/*SECOND_DER