Esempio n. 1
0
static int mt9d131_device_init(void)
{

    unsigned char regvalue;
    int loop1;
     
    /* read Chip version */
    gpio_i2c_write(I2C_MT9D131, 0xf0, 0x00);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x00);
    regvalue = gpio_i2c_read(I2C_MT9D131, 0x00);
    loop1 = gpio_i2c_read(I2C_MT9D131, 0xf1); 
    if((regvalue != 0x15) || (loop1 != 0x19))
    {
        printk("read Prodect ID Number MSB is %x\n",regvalue);
        printk("read Prodect ID Number LSB is %x\n",loop1);
        printk("check mt9d131 ID error.\n");
        return -EFAULT;
    }
    if(out_mode == 1)
        mt9d131_uxga_init();
    else
        mt9d131_vga_init();  

    return 0;
}
Esempio n. 2
0
File: it6604.c Progetto: 9crk/it6604
static unsigned char it6604_byte_write(unsigned char chip_addr,
										     unsigned char addr     , 
										     unsigned char data     ) 
{

#if 0

#ifndef HI_FPGA
    gpio_i2c_write(chip_addr,addr,data);
#else
   
    if (IT6604A_I2C_ADDR == chip_addr || IT6604B_I2C_ADDR == chip_addr)
    {
        gpio_i2c_write(chip_addr,addr,data);
    }
    else
    {
        gpio_i2c1_write(chip_addr,addr,data);
    }
    
#endif
#else
    gpio_i2c_write(chip_addr,addr,data);

#endif


	return 0;
}
Esempio n. 3
0
static uint32_t ks103_read_reg_i2c(uint8_t addr, uint8_t reg)
{
	uint8_t data_read;

	/* 需要读取的寄存器 */
	gpio_i2c_start();
	gpio_i2c_write(addr);
	if(gpio_i2c_ack() != 0){ /* 无应答 */
		return KS103_DATA_ERROR;
	}
	gpio_i2c_write(reg);
	if(gpio_i2c_ack() != 0){ /* 无应答 */
		return KS103_DATA_ERROR;
	}

	/* 读取寄存器的数值 */
	gpio_i2c_start();
	gpio_i2c_write(addr + 1);
	if(gpio_i2c_ack() != 0){ /* 无应答 */
		return KS103_DATA_ERROR;
	}
	data_read = gpio_i2c_read();
	gpio_i2c_ack();
	gpio_i2c_stop();

	return (uint32_t) data_read;
}
Esempio n. 4
0
static uint32_t ks103_send_cmd_i2c(uint8_t addr, uint8_t reg, uint8_t cmd)
{
	gpio_i2c_start();
	gpio_i2c_write(addr);
	if(gpio_i2c_ack() != 0){ /* 无应答 */
		return KS103_DATA_ERROR;
	}
	gpio_i2c_write(reg);
	if(gpio_i2c_ack() != 0){ /* 无应答 */
		return KS103_DATA_ERROR;
	}
	gpio_i2c_write(cmd);
	gpio_i2c_ack();
	gpio_i2c_stop();
	return 0;
}
Esempio n. 5
0
//int gpioi2c_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg)
long gpioi2c_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
{
    unsigned int val;
	
	char device_addr, reg_addr;
	short reg_val;
	
	
	switch(cmd)
	{
		case GPIO_I2C_READ:
			val = *(unsigned int *)arg;
			device_addr = (val&0xff000000)>>24;
			reg_addr = (val&0xff0000)>>16;
			
			reg_val = gpio_i2c_read(device_addr, reg_addr);
			*(unsigned int *)arg = (val&0xffff0000)|reg_val;			
			break;
		
		case GPIO_I2C_WRITE:
			val = *(unsigned int *)arg;
			device_addr = (val&0xff000000)>>24;
			reg_addr = (val&0xff0000)>>16;
			
			reg_val = val&0xffff;
			gpio_i2c_write(device_addr, reg_addr, reg_val);
			break;		
	
		default:
			return -1;
	}
    return 0;
}
Esempio n. 6
0
int check_id(unsigned int dec)
{
	int ret;
	gpio_i2c_write(dec, 0xFF, 0x01);
	ret = (gpio_i2c_read(dec, 0xf4)<<8) | (gpio_i2c_read(dec, 0xf5));
	return ret;
}
Esempio n. 7
0
void tlv320aic31_write(unsigned char chip_addr,unsigned char reg_addr,unsigned char value)
{
#ifdef HI_GPIO_I2C
    gpio_i2c_write(chip_addr,reg_addr,value);
#else
    i2c_write(chip_addr,reg_addr,value);
#endif
}
Esempio n. 8
0
File: it6604.c Progetto: 9crk/it6604
SYS_STATUS HDMIRX_WriteI2C_Byte(BYTE RegAddr, BYTE Data)
{
	gpio_i2c_write(IT6604A_I2C_ADDR,RegAddr,Data);		
}
Esempio n. 9
0
int mt9d131_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg)
{
    void __user *argp = (void __user *)arg;
    unsigned int val = 0;
    
    if (copy_from_user(&val, argp, sizeof(val))) 
    {
        return -EFAULT;
    }
    
    switch (cmd)
    {
        case DC_SET_IMAGESIZE:
        {
            unsigned int imagesize = val;
            if(imagesize == DC_VAL_VGA)
            {
                mt9d131_vga_init();
                printk("\nset mt9d131 VGA ok\n");
            }
            else if(imagesize == DC_VAL_UXGA)
            {
                mt9d131_uxga_init();
                printk("\nset mt9d131 UXGA ok\n");
            }
            else
            {
                printk("imagesize_set_error.\n");
                return -1;

            }   
            break;
        }
        
        case DC_SET_POWERFREQ:
        {
            unsigned int powerfreq_dy = val;
            if(powerfreq_dy == DC_VAL_50HZ)
            {
                /*====fix to 50HZ====*/
                gpio_i2c_write(I2C_MT9D131, 0xf0, 0x00);
                gpio_i2c_write(I2C_MT9D131, 0xf1, 0x01);

                gpio_i2c_write(I2C_MT9D131,0xC6, 0xa4);        
                gpio_i2c_write(I2C_MT9D131,0xf1, 0x04);
                gpio_i2c_write(I2C_MT9D131,0xC8, 0x00);        
                gpio_i2c_write(I2C_MT9D131,0xf1, 0xc0);
                powerfreq = DC_VAL_50HZ;
            }
            else if(powerfreq_dy == DC_VAL_60HZ)
            {
                /*====fix to 60HZ====*/
                gpio_i2c_write(I2C_MT9D131, 0xf0, 0x00);
                gpio_i2c_write(I2C_MT9D131, 0xf1, 0x01);

                gpio_i2c_write(I2C_MT9D131,0xC6, 0xa4);        
                gpio_i2c_write(I2C_MT9D131,0xf1, 0x04);
                gpio_i2c_write(I2C_MT9D131,0xC8, 0x00);        
                gpio_i2c_write(I2C_MT9D131,0xf1, 0xa0);
                powerfreq = DC_VAL_60HZ;
            }
            else 
            {
                printk("powerfreq_set_error.\n");
                return -1;
                
            }
            break;
        }
         
        default:
            return -1;  
    }     
    return 0;
}
Esempio n. 10
0
static void mt9d131_uxga_init(void)
{
    mt9d131_default_init();
    /************************************************set mode*********************************/
    gpio_i2c_write(I2C_MT9D131, 0xf0, 0x00);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x00);
    /* HBLANK (A) = 516 */
    gpio_i2c_write(I2C_MT9D131, 0x07, 0x02);    
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x04);
     /* VBLANK (A) = 47 */
    gpio_i2c_write(I2C_MT9D131, 0x08, 0x00);   
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x2f);
    
    //page 1
    gpio_i2c_write(I2C_MT9D131, 0xf0, 0x00);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x01);   

     //output_width 1600 a
    gpio_i2c_write(I2C_MT9D131,0xC6, 0x27);
    gpio_i2c_write(I2C_MT9D131,0xf1, 0x03);
    gpio_i2c_write(I2C_MT9D131,0xC8, 0x06);
    gpio_i2c_write(I2C_MT9D131,0xf1, 0x40);
    //output_height 1200 a
    gpio_i2c_write(I2C_MT9D131,0xC6, 0x27);
    gpio_i2c_write(I2C_MT9D131,0xf1, 0x05);
    gpio_i2c_write(I2C_MT9D131,0xC8, 0x04);
    gpio_i2c_write(I2C_MT9D131,0xf1, 0xb0);
    //first sensor-readout row 28  context a
    gpio_i2c_write(I2C_MT9D131,0xC6, 0x27);
    gpio_i2c_write(I2C_MT9D131,0xf1, 0x0F);
    gpio_i2c_write(I2C_MT9D131,0xC8, 0x00);
    gpio_i2c_write(I2C_MT9D131,0xf1, 0x1C);
    //first sensor-readout column 60 context a
    gpio_i2c_write(I2C_MT9D131,0xC6, 0x27);
    gpio_i2c_write(I2C_MT9D131,0xf1, 0x11);
    gpio_i2c_write(I2C_MT9D131,0xC8, 0x00);
    gpio_i2c_write(I2C_MT9D131,0xf1, 0x3C);
    //contexta number of sensor-readout rows 1200 
    gpio_i2c_write(I2C_MT9D131,0xC6, 0x27);
    gpio_i2c_write(I2C_MT9D131,0xf1, 0x13);
    gpio_i2c_write(I2C_MT9D131,0xC8, 0x04);
    gpio_i2c_write(I2C_MT9D131,0xf1, 0xb0);
    //contexta number of sensor-readout columns 1600
    gpio_i2c_write(I2C_MT9D131,0xC6, 0x27);
    gpio_i2c_write(I2C_MT9D131,0xf1, 0x15);
    gpio_i2c_write(I2C_MT9D131,0xC8, 0x06);
    gpio_i2c_write(I2C_MT9D131,0xf1, 0x40);
    
    //extra sensor delay per frame context a 1046
    gpio_i2c_write(I2C_MT9D131,0xC6, 0x27);
    gpio_i2c_write(I2C_MT9D131,0xf1, 0x17);
    gpio_i2c_write(I2C_MT9D131,0xC8, 0x04);
    gpio_i2c_write(I2C_MT9D131,0xf1, 0x16);
    //row-speed context a 17
    gpio_i2c_write(I2C_MT9D131,0xC6, 0x27);
    gpio_i2c_write(I2C_MT9D131,0xf1, 0x19);
    gpio_i2c_write(I2C_MT9D131,0xC8, 0x00);
    gpio_i2c_write(I2C_MT9D131,0xf1, 0x11);
    //Crop_X0 (A)  0
    gpio_i2c_write(I2C_MT9D131,0xC6, 0x27);        
    gpio_i2c_write(I2C_MT9D131,0xf1, 0x27);
    gpio_i2c_write(I2C_MT9D131,0xC8, 0x00);        
    gpio_i2c_write(I2C_MT9D131,0xf1, 0x00);
    //Crop_X1 (A)  1600
    gpio_i2c_write(I2C_MT9D131,0xC6, 0x27);        
    gpio_i2c_write(I2C_MT9D131,0xf1, 0x29);
    gpio_i2c_write(I2C_MT9D131,0xC8, 0x06);        
    gpio_i2c_write(I2C_MT9D131,0xf1, 0x40);
    //Crop_Y0 (A)  0
    gpio_i2c_write(I2C_MT9D131,0xC6, 0x27);        
    gpio_i2c_write(I2C_MT9D131,0xf1, 0x2b);
    gpio_i2c_write(I2C_MT9D131,0xC8, 0x00);        
    gpio_i2c_write(I2C_MT9D131,0xf1, 0x00);
    //Crop_Y1 (A)  1200
    gpio_i2c_write(I2C_MT9D131,0xC6, 0x27);        
    gpio_i2c_write(I2C_MT9D131,0xf1, 0x2d);
    gpio_i2c_write(I2C_MT9D131,0xC8, 0x04);        
    gpio_i2c_write(I2C_MT9D131,0xf1, 0xb0);
    //FIFO_Conf1 (A)   57569
    gpio_i2c_write(I2C_MT9D131,0xC6, 0x27);        
    gpio_i2c_write(I2C_MT9D131,0xf1, 0x6d);
    gpio_i2c_write(I2C_MT9D131,0xC8, 0xE0);       
    gpio_i2c_write(I2C_MT9D131,0xf1, 0xe1);
    //FIFO_Conf2 (A)   225
    gpio_i2c_write(I2C_MT9D131,0xC6, 0xA7);        
    gpio_i2c_write(I2C_MT9D131,0xf1, 0x6f);
    gpio_i2c_write(I2C_MT9D131,0xC8, 0x00);        
    gpio_i2c_write(I2C_MT9D131,0xf1, 0xe1);
    /***************************************************set mode end*************/

    gpio_i2c_write(I2C_MT9D131, 0xf0, 0x00);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x01); 

    msleep(500);     /* DELAY = 500 */
    
    gpio_i2c_write(I2C_MT9D131, 0xC6, 0xA1);    /* Refresh Sequencer Mode */
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x03);
    gpio_i2c_write(I2C_MT9D131, 0xC8, 0x00);    /*  = 6 */
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x06);

    msleep(500);     /* DELAY = 500 */
    
    gpio_i2c_write(I2C_MT9D131, 0xC6, 0xA1);    /* Refresh Sequencer */
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x03);
    gpio_i2c_write(I2C_MT9D131, 0xC8, 0x00);    /*  = 5 */
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x05);
}
Esempio n. 11
0
static void mt9d131_vga_init(void)
{
    
    /************************************************set mode*********************************/
    gpio_i2c_write(I2C_MT9D131, 0xf0, 0x00);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x00);
    /* HBLANK (A) = 174 */
    gpio_i2c_write(I2C_MT9D131, 0x07, 0x00);    
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0xae);
     /* VBLANK (A) = 16 */
    gpio_i2c_write(I2C_MT9D131, 0x08, 0x00);   
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x10);
    
    //page 1
    gpio_i2c_write(I2C_MT9D131, 0xf0, 0x00);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x01);   

     //output_width 800 a
    gpio_i2c_write(I2C_MT9D131,0xC6, 0x27);
    gpio_i2c_write(I2C_MT9D131,0xf1, 0x03);
    gpio_i2c_write(I2C_MT9D131,0xC8, 0x03);
    gpio_i2c_write(I2C_MT9D131,0xf1, 0x20);
    //output_height 600 a
    gpio_i2c_write(I2C_MT9D131,0xC6, 0x27);
    gpio_i2c_write(I2C_MT9D131,0xf1, 0x05);
    gpio_i2c_write(I2C_MT9D131,0xC8, 0x02);
    gpio_i2c_write(I2C_MT9D131,0xf1, 0x58);
    //first sensor-readout row 28  context a
    gpio_i2c_write(I2C_MT9D131,0xC6, 0x27);
    gpio_i2c_write(I2C_MT9D131,0xf1, 0x0F);
    gpio_i2c_write(I2C_MT9D131,0xC8, 0x00);
    gpio_i2c_write(I2C_MT9D131,0xf1, 0x1C);
    //first sensor-readout column 60 context a
    gpio_i2c_write(I2C_MT9D131,0xC6, 0x27);
    gpio_i2c_write(I2C_MT9D131,0xf1, 0x11);
    gpio_i2c_write(I2C_MT9D131,0xC8, 0x00);
    gpio_i2c_write(I2C_MT9D131,0xf1, 0x3C);
    //contexta number of sensor-readout rows 600 
    gpio_i2c_write(I2C_MT9D131,0xC6, 0x27);
    gpio_i2c_write(I2C_MT9D131,0xf1, 0x13);
    gpio_i2c_write(I2C_MT9D131,0xC8, 0x02);
    gpio_i2c_write(I2C_MT9D131,0xf1, 0x58);
    //contexta number of sensor-readout columns 800
    gpio_i2c_write(I2C_MT9D131,0xC6, 0x27);
    gpio_i2c_write(I2C_MT9D131,0xf1, 0x15);
    gpio_i2c_write(I2C_MT9D131,0xC8, 0x03);
    gpio_i2c_write(I2C_MT9D131,0xf1, 0x20);
    
    //extra sensor delay per frame context a 
    gpio_i2c_write(I2C_MT9D131,0xC6, 0x27);
    gpio_i2c_write(I2C_MT9D131,0xf1, 0x17);
    gpio_i2c_write(I2C_MT9D131,0xC8, 0x03);
    gpio_i2c_write(I2C_MT9D131,0xf1, 0x18);
    //row-speed context a 17
    gpio_i2c_write(I2C_MT9D131,0xC6, 0x27);
    gpio_i2c_write(I2C_MT9D131,0xf1, 0x19);
    gpio_i2c_write(I2C_MT9D131,0xC8, 0x00);
    gpio_i2c_write(I2C_MT9D131,0xf1, 0x11);
    //Crop_X0 (A)  0
    gpio_i2c_write(I2C_MT9D131,0xC6, 0x27);        
    gpio_i2c_write(I2C_MT9D131,0xf1, 0x27);
    gpio_i2c_write(I2C_MT9D131,0xC8, 0x00);        
    gpio_i2c_write(I2C_MT9D131,0xf1, 0x00);
    //Crop_X1 (A)  800
    gpio_i2c_write(I2C_MT9D131,0xC6, 0x27);        
    gpio_i2c_write(I2C_MT9D131,0xf1, 0x29);
    gpio_i2c_write(I2C_MT9D131,0xC8, 0x03);        
    gpio_i2c_write(I2C_MT9D131,0xf1, 0x20);
    //Crop_Y0 (A)  0
    gpio_i2c_write(I2C_MT9D131,0xC6, 0x27);        
    gpio_i2c_write(I2C_MT9D131,0xf1, 0x2b);
    gpio_i2c_write(I2C_MT9D131,0xC8, 0x00);        
    gpio_i2c_write(I2C_MT9D131,0xf1, 0x00);
    //Crop_Y1 (A)  600
    gpio_i2c_write(I2C_MT9D131,0xC6, 0x27);        
    gpio_i2c_write(I2C_MT9D131,0xf1, 0x2d);
    gpio_i2c_write(I2C_MT9D131,0xC8, 0x02);        
    gpio_i2c_write(I2C_MT9D131,0xf1, 0x58);
    //FIFO_Conf1 (A)   57570
    gpio_i2c_write(I2C_MT9D131,0xC6, 0x27);        
    gpio_i2c_write(I2C_MT9D131,0xf1, 0x6d);
    gpio_i2c_write(I2C_MT9D131,0xC8, 0xE0);       
    gpio_i2c_write(I2C_MT9D131,0xf1, 0xe2);
    //FIFO_Conf2 (A)   225
    gpio_i2c_write(I2C_MT9D131,0xC6, 0xA7);        
    gpio_i2c_write(I2C_MT9D131,0xf1, 0x6f);
    gpio_i2c_write(I2C_MT9D131,0xC8, 0x00);        
    gpio_i2c_write(I2C_MT9D131,0xf1, 0xe1);
    /***************************************************set mode end*************/

    gpio_i2c_write(I2C_MT9D131, 0xf0, 0x00);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x01); 

    msleep(500);     /* DELAY = 500 */
    
    gpio_i2c_write(I2C_MT9D131, 0xC6, 0xA1);    /* Refresh Sequencer Mode */
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x03);
    gpio_i2c_write(I2C_MT9D131, 0xC8, 0x00);    /*  = 6 */
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x06);

    msleep(500);     /* DELAY = 500 */
    
    gpio_i2c_write(I2C_MT9D131, 0xC6, 0xA1);    /* Refresh Sequencer */
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x03);
    gpio_i2c_write(I2C_MT9D131, 0xC8, 0x00);    /*  = 5 */
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x05);

}
Esempio n. 12
0
static void mt9d131_default_init(void)
{
    /*========soft reset===============*/
    //page 0
    gpio_i2c_write(I2C_MT9D131, 0xf0, 0x00);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x00);
    
    gpio_i2c_write(I2C_MT9D131,0x65, 0xa0);
    gpio_i2c_write(I2C_MT9D131,0xf1, 0x00); 
    //page 1
    gpio_i2c_write(I2C_MT9D131, 0xf0, 0x00);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x01);    
    
    gpio_i2c_write(I2C_MT9D131,0xc3, 0x05);
    gpio_i2c_write(I2C_MT9D131,0xf1, 0x01);  
    //page 0
    gpio_i2c_write(I2C_MT9D131, 0xf0, 0x00);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x00); 
    
    gpio_i2c_write(I2C_MT9D131,0x0d, 0x00);
    gpio_i2c_write(I2C_MT9D131,0xf1, 0x21);   
    
    msleep(10);  
    
    gpio_i2c_write(I2C_MT9D131,0x0d, 0x00);
    gpio_i2c_write(I2C_MT9D131,0xf1, 0x00);   
    
    msleep(10); 
    //end 
      
    //pll control
    gpio_i2c_write(I2C_MT9D131,0x66, 0x10);
    gpio_i2c_write(I2C_MT9D131,0xf1, 0x04);
    
    gpio_i2c_write(I2C_MT9D131,0x67, 0x05);
    gpio_i2c_write(I2C_MT9D131,0xf1, 0x00);
    
    gpio_i2c_write(I2C_MT9D131,0x65, 0xe0);
    gpio_i2c_write(I2C_MT9D131,0xf1, 0x00);    
    
    msleep(10); 
        
    gpio_i2c_write(I2C_MT9D131,0x65, 0xA0);
    gpio_i2c_write(I2C_MT9D131,0xf1, 0x00);
    
    msleep(10);      
    
    gpio_i2c_write(I2C_MT9D131,0x65, 0x20);
    gpio_i2c_write(I2C_MT9D131,0xf1, 0x00);   
    
    msleep(10);      
    //end

/**************set mode*******************************************/   
    gpio_i2c_write(I2C_MT9D131,0xf0, 0x00);
    gpio_i2c_write(I2C_MT9D131,0xf1, 0x01);   
    //contexa/b  bypass jpeg
    gpio_i2c_write(I2C_MT9D131,0xC6, 0x27);
    gpio_i2c_write(I2C_MT9D131,0xf1, 0x0B);
    gpio_i2c_write(I2C_MT9D131,0xC8, 0x00);
    gpio_i2c_write(I2C_MT9D131,0xf1, 0x30);

    //page 0
    gpio_i2c_write(I2C_MT9D131,0xf0, 0x00);
    gpio_i2c_write(I2C_MT9D131,0xf1, 0x00); 
    //Read Mode (A) 
    gpio_i2c_write(I2C_MT9D131, 0x21, 0x03);    
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x00);
    
    
/************set mode end******************************************/    
   
 /************************flicker detection****************************************/
 //  search_f1_50  Lower limit of period range  30       
    gpio_i2c_write(I2C_MT9D131,0xC6, 0xA4);        
    gpio_i2c_write(I2C_MT9D131,0xf1, 0x08);
    gpio_i2c_write(I2C_MT9D131,0xC8, 0x00);        
    gpio_i2c_write(I2C_MT9D131,0xf1, 0x1e);
 //   search_f1_50  upper limit of period range  32 
    gpio_i2c_write(I2C_MT9D131,0xC6, 0xA4);        
    gpio_i2c_write(I2C_MT9D131,0xf1, 0x09);
    gpio_i2c_write(I2C_MT9D131,0xC8, 0x00);        
    gpio_i2c_write(I2C_MT9D131,0xf1, 0x20);
   //  search_f1_60  Lower limit of period range  37    
    gpio_i2c_write(I2C_MT9D131,0xC6, 0xA4);        
    gpio_i2c_write(I2C_MT9D131,0xf1, 0x0a);
    gpio_i2c_write(I2C_MT9D131,0xC8, 0x00);        
    gpio_i2c_write(I2C_MT9D131,0xf1, 0x25);
  //  search_f1_60  upper limit of period range  39  
    gpio_i2c_write(I2C_MT9D131,0xC6, 0xA4);        
    gpio_i2c_write(I2C_MT9D131,0xf1, 0x0b);
    gpio_i2c_write(I2C_MT9D131,0xC8, 0x00);        
    gpio_i2c_write(I2C_MT9D131,0xf1, 0x27);
   // R9_Step_60   minimal shutter width step for 60hz ac  157
    gpio_i2c_write(I2C_MT9D131,0xC6, 0x24);        
    gpio_i2c_write(I2C_MT9D131,0xf1, 0x11);
    gpio_i2c_write(I2C_MT9D131,0xC8, 0x00);        
    gpio_i2c_write(I2C_MT9D131,0xf1, 0x9d);
  // R9_Step_50   minimal shutter width step for 50hz ac  188
    gpio_i2c_write(I2C_MT9D131,0xC6, 0x24);        
    gpio_i2c_write(I2C_MT9D131,0xf1, 0x13);
    gpio_i2c_write(I2C_MT9D131,0xC8, 0x00);        
    gpio_i2c_write(I2C_MT9D131,0xf1, 0xbc);
   
        /*====fix to 50HZ====*/
        gpio_i2c_write(I2C_MT9D131,0xf0, 0x00);
        gpio_i2c_write(I2C_MT9D131,0xf1, 0x01);
        gpio_i2c_write(I2C_MT9D131,0xC6, 0xa4);        
        gpio_i2c_write(I2C_MT9D131,0xf1, 0x04);
        gpio_i2c_write(I2C_MT9D131,0xC8, 0x00);       
        gpio_i2c_write(I2C_MT9D131,0xf1, 0xc0);
   /************************************flicker detection  end ****************************/ 
    /***************************************************set auto exposure*********/
    //Max R12 (B)(Shutter Delay)  402
    gpio_i2c_write(I2C_MT9D131,0xC6, 0x22);        
    gpio_i2c_write(I2C_MT9D131,0xf1, 0x0b);
    gpio_i2c_write(I2C_MT9D131,0xC8, 0x01);        
    gpio_i2c_write(I2C_MT9D131,0xf1, 0x92);
    //IndexTH23  Zone number to start gain increase in low-light. 
    //Sets  frame rate at normal illumination.   3
    gpio_i2c_write(I2C_MT9D131,0xC6, 0xA2);        
    gpio_i2c_write(I2C_MT9D131,0xf1, 0x17);
    gpio_i2c_write(I2C_MT9D131,0xC8, 0x00);        
    gpio_i2c_write(I2C_MT9D131,0xf1, 0x03);
    //RowTime (msclk per)/4  Row time divided by 4 (in master clock periods)  527
    gpio_i2c_write(I2C_MT9D131,0xC6, 0x22);        
    gpio_i2c_write(I2C_MT9D131,0xf1, 0x28);
    gpio_i2c_write(I2C_MT9D131,0xC8, 0x02);        
    gpio_i2c_write(I2C_MT9D131,0xf1, 0x0f);
    //R9 Step   Integration time of one zone  156
    gpio_i2c_write(I2C_MT9D131,0xC6, 0x22);        
    gpio_i2c_write(I2C_MT9D131,0xf1, 0x2f);
    gpio_i2c_write(I2C_MT9D131,0xC8, 0x00);        
    gpio_i2c_write(I2C_MT9D131,0xf1, 0x9c);
    //Maximum allowed zone number (that is maximumintegration time)  3
    gpio_i2c_write(I2C_MT9D131,0xC6, 0Xa2);        
    gpio_i2c_write(I2C_MT9D131,0xf1, 0x0e);
    gpio_i2c_write(I2C_MT9D131,0xC8, 0x00);        
    gpio_i2c_write(I2C_MT9D131,0xf1, 0x03);
    /***************************************************set auto exposure  end*********/    
    /*======******************************************lens correcton***************************/
    gpio_i2c_write(I2C_MT9D131, 0xf0, 0x00);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x02);
    //lc control
    gpio_i2c_write(I2C_MT9D131, 0x80, 0x01);      
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0xf8);
    //ZONE_BOUNDS_X1_X2 
    gpio_i2c_write(I2C_MT9D131, 0x81, 0x64);      
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x32);
    /* ZONE_BOUNDS_X0_X3 */
    gpio_i2c_write(I2C_MT9D131, 0x82, 0x32);      
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x96);
    /* ZONE_BOUNDS_X4_X5 */
    gpio_i2c_write(I2C_MT9D131, 0x83, 0x96);      
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x64);
    /* ZONE_BOUNDS_Y1_Y2 */
    gpio_i2c_write(I2C_MT9D131, 0x84, 0x50);      
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x28);
    /* ZONE_BOUNDS_Y0_Y3 */
    gpio_i2c_write(I2C_MT9D131, 0x85, 0x28);      
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x78);
    /* ZONE_BOUNDS_Y4_Y5 */
    gpio_i2c_write(I2C_MT9D131, 0x86, 0x78);      
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x50);
    /* CENTER_OFFSET */
    gpio_i2c_write(I2C_MT9D131, 0x87, 0x00);    
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x00);
    /* FX_RED */
    gpio_i2c_write(I2C_MT9D131, 0x88, 0x00);    
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x15);
    /* FY_RED */
    gpio_i2c_write(I2C_MT9D131, 0x8B, 0x00);    
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x2B);
    /* DF_DX_RED */
    gpio_i2c_write(I2C_MT9D131, 0x8E, 0x0F);    
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0xEE);
    /* DF_DY_RED */
    gpio_i2c_write(I2C_MT9D131, 0x91, 0x0F);    
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x54);
    /* SECOND_DERIV_ZONE_0_RED */
    gpio_i2c_write(I2C_MT9D131, 0x94, 0xD4);    
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0xFF);
    /* SECOND_DERIV_ZONE_1_RED */
    gpio_i2c_write(I2C_MT9D131, 0x97, 0x0B);    
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0xA2);
    /* SECOND_DERIV_ZONE_2_RED */
    gpio_i2c_write(I2C_MT9D131, 0x9A, 0x13);    
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x4C);
    /* SECOND_DERIV_ZONE_3_RED */
    gpio_i2c_write(I2C_MT9D131, 0x9D, 0x21);    
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x35);
     /* SECOND_DERIV_ZONE_4_RED */
    gpio_i2c_write(I2C_MT9D131, 0xA0, 0x10);   
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x41);
    /* SECOND_DERIV_ZONE_5_RED */
    gpio_i2c_write(I2C_MT9D131, 0xA3, 0x4F);    
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x5D);
    /* SECOND_DERIV_ZONE_6_RED */
    gpio_i2c_write(I2C_MT9D131, 0xA6, 0x94);    
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0xC3);
    /* SECOND_DERIV_ZONE_7_RED */
    gpio_i2c_write(I2C_MT9D131, 0xA9, 0x2A);    
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0xBE);
    /* FX_GREEN */
    gpio_i2c_write(I2C_MT9D131, 0x89, 0x00);    
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x09);
    /* FY_GREEN */
    gpio_i2c_write(I2C_MT9D131, 0x8C, 0x00);    
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x33);
    /* DF_DX_GREEN */
    gpio_i2c_write(I2C_MT9D131, 0x8F, 0x05);    
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x5E);
    /* DF_DY_GREEN */
    gpio_i2c_write(I2C_MT9D131, 0x92, 0x0F);    
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x86);
    /* SECOND_DERIV_ZONE_0_GREEN */
    gpio_i2c_write(I2C_MT9D131, 0x95, 0xBF);    
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x86);
    /* SECOND_DERIV_ZONE_1_GREEN */
    gpio_i2c_write(I2C_MT9D131, 0x98, 0x0E);    
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0xB1);
    /* SECOND_DERIV_ZONE_2_GREEN */
    gpio_i2c_write(I2C_MT9D131, 0x9B, 0x17);    
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x45);
    /* SECOND_DERIV_ZONE_3_GREEN */
    gpio_i2c_write(I2C_MT9D131, 0x9E, 0x22);    
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x43);
    /* SECOND_DERIV_ZONE_4_GREEN */
    gpio_i2c_write(I2C_MT9D131, 0xA1, 0x0E);    
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x3F);
    /* SECOND_DERIV_ZONE_5_GREEN */
    gpio_i2c_write(I2C_MT9D131, 0xA4, 0x59);    
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x5C);
    /* SECOND_DERIV_ZONE_6_GREEN */
    gpio_i2c_write(I2C_MT9D131, 0xA7, 0x8B);    
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0xD1);
    /* SECOND_DERIV_ZONE_7_GREEN */
    gpio_i2c_write(I2C_MT9D131, 0xAA, 0x01);    
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x9F);
    /* FX_BLUE */
    gpio_i2c_write(I2C_MT9D131, 0x8A, 0x00);    
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x02);
     /* FY_BLUE */
    gpio_i2c_write(I2C_MT9D131, 0x8D, 0x00);   
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x31);
    /* DF_DX_BLUE */
    gpio_i2c_write(I2C_MT9D131, 0x90, 0x01);    
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0xD0);
    /* DF_DY_BLUE */
    gpio_i2c_write(I2C_MT9D131, 0x93, 0x0F);    
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x88);
    /* SECOND_DERIV_ZONE_0_BLUE */
    gpio_i2c_write(I2C_MT9D131, 0x96, 0xDB);    
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0xEB);
    /* SECOND_DERIV_ZONE_1_BLUE */
    gpio_i2c_write(I2C_MT9D131, 0x99, 0xF6);    
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0xA2);
    /* SECOND_DERIV_ZONE_2_BLUE */
    gpio_i2c_write(I2C_MT9D131, 0x9C, 0x14);    
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x41);
    /* SECOND_DERIV_ZONE_3_BLUE */
    gpio_i2c_write(I2C_MT9D131, 0x9F, 0x1B);    
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x20);
    /* SECOND_DERIV_ZONE_4_BLUE */
    gpio_i2c_write(I2C_MT9D131, 0xA2, 0x0C);    
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x2D);
    /* SECOND_DERIV_ZONE_5_BLUE */
    gpio_i2c_write(I2C_MT9D131, 0xA5, 0x54);    
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x50);
    /* SECOND_DERIV_ZONE_6_BLUE */
    gpio_i2c_write(I2C_MT9D131, 0xA8, 0x8D);    
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0xC0);
    /* SECOND_DERIV_ZONE_7_BLUE */
    gpio_i2c_write(I2C_MT9D131, 0xAB, 0xFF);    
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0xA3);
    /* X2_FACTORS */
    gpio_i2c_write(I2C_MT9D131, 0xAC, 0x00);    
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0xC1);
     /* GLOBAL_OFFSET_FXY_FUNCTION */
    gpio_i2c_write(I2C_MT9D131, 0xAD, 0x00);   
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x00);
    /* K_FACTOR_IN_K_FX_FY */
    gpio_i2c_write(I2C_MT9D131, 0xAE, 0x01);    
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x8E);
      
    //page 1
    gpio_i2c_write(I2C_MT9D131, 0xf0, 0x00);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x01);
    //enable  lc/gamma/color corretion
    gpio_i2c_write(I2C_MT9D131, 0x08, 0x01);    
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0xFC);
    /*********************************************lens correction end***********/
    
   /*******************************Color Correction Matrices*****************/
     #if 0
    //page 1
    gpio_i2c_write(I2C_MT9D131, 0xf0, 0x00);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x01);
    //enable  lc/gamma/color corretion
    gpio_i2c_write(I2C_MT9D131, 0x08, 0x01);    
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0xFC);
    
    //turn AWB on
    gpio_i2c_write(I2C_MT9D131, 0xC6, 0xa1);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x02);
    gpio_i2c_write(I2C_MT9D131, 0xC8, 0x00);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x0f);  
    
    //set digital WB gain to 1
    gpio_i2c_write(I2C_MT9D131, 0xC6, 0xa3);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 83);
    gpio_i2c_write(I2C_MT9D131, 0xC8, 0x00);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x21);  
      
    //Set WB position to select the desired CCM.   
   gpio_i2c_write(I2C_MT9D131, 0xC6, 0xa3);
   gpio_i2c_write(I2C_MT9D131, 0xf1, 81);
   gpio_i2c_write(I2C_MT9D131, 0xC8, 0x00);
   gpio_i2c_write(I2C_MT9D131, 0xf1, 127);
   
   ////ccml 9	
    gpio_i2c_write(I2C_MT9D131, 0xC6, 0x23);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x18); 	
    gpio_i2c_write(I2C_MT9D131, 0xC8, 0x00);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x20);
    ////ccml 10 	
    gpio_i2c_write(I2C_MT9D131, 0xC6, 0x23);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x1A); 	
    gpio_i2c_write(I2C_MT9D131, 0xC8, 0x00);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x35); 
    
    ////ccmr 9	
    gpio_i2c_write(I2C_MT9D131, 0xC6, 0x23);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x2E); 	
    gpio_i2c_write(I2C_MT9D131, 0xC8, 0x00);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x0a); 
     ////ccmr 10	
    gpio_i2c_write(I2C_MT9D131, 0xC6, 0x23);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x30); 	
    gpio_i2c_write(I2C_MT9D131, 0xC8, 0xff);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0xf1); 
    
    gpio_i2c_write(I2C_MT9D131, 0xC6, 0xA1);    /* Refresh Sequencer */
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x03);
    gpio_i2c_write(I2C_MT9D131, 0xC8, 0x00);    /*  = 5 */
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x05);
    
    //ccml 0
    gpio_i2c_write(I2C_MT9D131, 0xC6, 0x23);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x06);
    gpio_i2c_write(I2C_MT9D131, 0xC8, 0x09);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0xEA); 
    //ccml 1	
    gpio_i2c_write(I2C_MT9D131, 0xC6, 0x23);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x08); 	
    gpio_i2c_write(I2C_MT9D131, 0xC8, 0xFC);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0xDE); 
    ////ccml 2	
    gpio_i2c_write(I2C_MT9D131, 0xC6, 0x23);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x0A); 	
    gpio_i2c_write(I2C_MT9D131, 0xC8, 0xFA);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x82); 
    ////ccml 3	
    gpio_i2c_write(I2C_MT9D131, 0xC6, 0x23);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x0C); 	
    gpio_i2c_write(I2C_MT9D131, 0xC8, 0xFD);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x6F);
    ////ccml 4 	
    gpio_i2c_write(I2C_MT9D131, 0xC6, 0x23);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x0E); 	
    gpio_i2c_write(I2C_MT9D131, 0xC8, 0x0B);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x4A); 	
    //ccml 5
    gpio_i2c_write(I2C_MT9D131, 0xC6, 0x23);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x10); 	
    gpio_i2c_write(I2C_MT9D131, 0xC8, 0xF8);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0xD3); 
    ////ccml 	6
    gpio_i2c_write(I2C_MT9D131, 0xC6, 0x23);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x12); 	
    gpio_i2c_write(I2C_MT9D131, 0xC8, 0xFA);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x52); 
    ////ccml 7	
    gpio_i2c_write(I2C_MT9D131, 0xC6, 0x23);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x14); 	
    gpio_i2c_write(I2C_MT9D131, 0xC8, 0x04);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0xCC); 
    ////ccml 8	
    gpio_i2c_write(I2C_MT9D131, 0xC6, 0x23);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x16); 	
    gpio_i2c_write(I2C_MT9D131, 0xC8, 0x02);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x0D); 
    ////ccml 9	
    gpio_i2c_write(I2C_MT9D131, 0xC6, 0x23);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x18); 	
    gpio_i2c_write(I2C_MT9D131, 0xC8, 0x00);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x28);
    ////ccml 10 	
    gpio_i2c_write(I2C_MT9D131, 0xC6, 0x23);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x1A); 	
    gpio_i2c_write(I2C_MT9D131, 0xC8, 0x00);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x23); 
    ////ccmr 0
    gpio_i2c_write(I2C_MT9D131, 0xC6, 0x23);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x1C); 	
    gpio_i2c_write(I2C_MT9D131, 0xC8, 0xF8);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0xD7); 
    ////ccmr 1	
    gpio_i2c_write(I2C_MT9D131, 0xC6, 0x23);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x1E); 	
    gpio_i2c_write(I2C_MT9D131, 0xC8, 0x01);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0xCE); 
     ////ccmr 2	
    gpio_i2c_write(I2C_MT9D131, 0xC6, 0x23);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x20); 	
    gpio_i2c_write(I2C_MT9D131, 0xC8, 0x05);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x3D); 
     ////ccmr 3	
    gpio_i2c_write(I2C_MT9D131, 0xC6, 0x23);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x22); 	
    gpio_i2c_write(I2C_MT9D131, 0xC8, 0x01);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0xED); 
     ////ccmr 4	
    gpio_i2c_write(I2C_MT9D131, 0xC6, 0x23);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x24); 	
    gpio_i2c_write(I2C_MT9D131, 0xC8, 0xF7);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x1F); 
     ////ccmr 5	
    gpio_i2c_write(I2C_MT9D131, 0xC6, 0x23);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x26); 	
    gpio_i2c_write(I2C_MT9D131, 0xC8, 0x06);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0xA0);
     ////ccmr 6 	
    gpio_i2c_write(I2C_MT9D131, 0xC6, 0x23);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x28); 	
    gpio_i2c_write(I2C_MT9D131, 0xC8, 0x05);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x4A); 
     ////ccmr 7	
    gpio_i2c_write(I2C_MT9D131, 0xC6, 0x23);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x2A); 	
    gpio_i2c_write(I2C_MT9D131, 0xC8, 0xFA);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x62); 
     ////ccmr 8	
    gpio_i2c_write(I2C_MT9D131, 0xC6, 0x23);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x2C); 	
    gpio_i2c_write(I2C_MT9D131, 0xC8, 0x00);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x54); 
     ////ccmr 9	
    gpio_i2c_write(I2C_MT9D131, 0xC6, 0x23);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x2E); 	
    gpio_i2c_write(I2C_MT9D131, 0xC8, 0x00);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x00); 
     ////ccmr 10	
    gpio_i2c_write(I2C_MT9D131, 0xC6, 0x23);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x30); 	
    gpio_i2c_write(I2C_MT9D131, 0xC8, 0x00);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x00); 	
    //refresh
    msleep(500);     /* DELAY = 500 */
    
    gpio_i2c_write(I2C_MT9D131, 0xC6, 0xA1);    /* Refresh Sequencer */
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x03);
    gpio_i2c_write(I2C_MT9D131, 0xC8, 0x00);    /*  = 5 */
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x05);
    #endif
    
    /*******************************Color Correction Matrices  end****************/
    
    /********************************gamma and contrast****************************/
    //page 1
    gpio_i2c_write(I2C_MT9D131, 0xf0, 0x00);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x01);
    
    gpio_i2c_write(I2C_MT9D131, 0xC6, 0xA7);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x43);  // MCU_ADDRESS [MODE_GAM_CONT_A]
    gpio_i2c_write(I2C_MT9D131, 0xC8, 0x00);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x12);  // MCU_DATA_0   
    
 #if 0
    gpio_i2c_write(I2C_MT9D131, 0xC6, 0xA7);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x45);  // MCU_ADDRESS [MODE_GAM_TABLE_A_0]
    gpio_i2c_write(I2C_MT9D131, 0xC8, 0x00);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x00);  // MCU_DATA_0
    gpio_i2c_write(I2C_MT9D131, 0xC6, 0xA7);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x46);  // MCU_ADDRESS [MODE_GAM_TABLE_A_1]
    gpio_i2c_write(I2C_MT9D131, 0xC8, 0x00);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x04);  // MCU_DATA_0
    gpio_i2c_write(I2C_MT9D131, 0xC6, 0xA7);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x47);  // MCU_ADDRESS [MODE_GAM_TABLE_A_2]
    gpio_i2c_write(I2C_MT9D131, 0xC8, 0x00);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x0E);  // MCU_DATA_0
    gpio_i2c_write(I2C_MT9D131, 0xC6, 0xA7);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x48);  // MCU_ADDRESS [MODE_GAM_TABLE_A_3]
    gpio_i2c_write(I2C_MT9D131, 0xC8, 0x00);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x2A);  // MCU_DATA_0
    gpio_i2c_write(I2C_MT9D131, 0xC6, 0xA7);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x49);  // MCU_ADDRESS [MODE_GAM_TABLE_A_4]
    gpio_i2c_write(I2C_MT9D131, 0xC8, 0x00);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x54);  // MCU_DATA_0
    gpio_i2c_write(I2C_MT9D131, 0xC6, 0xA7);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x4A);  // MCU_ADDRESS [MODE_GAM_TABLE_A_5]
    gpio_i2c_write(I2C_MT9D131, 0xC8, 0x00);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x76);  // MCU_DATA_0
    gpio_i2c_write(I2C_MT9D131, 0xC6, 0xA7);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x4B);  // MCU_ADDRESS [MODE_GAM_TABLE_A_6]
    gpio_i2c_write(I2C_MT9D131, 0xC8, 0x00);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x94);  // MCU_DATA_0
    gpio_i2c_write(I2C_MT9D131, 0xC6, 0xA7);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x4C);  // MCU_ADDRESS [MODE_GAM_TABLE_A_7]
    gpio_i2c_write(I2C_MT9D131, 0xC8, 0x00);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0xAA);  // MCU_DATA_0
    gpio_i2c_write(I2C_MT9D131, 0xC6, 0xA7);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x4D);  // MCU_ADDRESS [MODE_GAM_TABLE_A_8]
    gpio_i2c_write(I2C_MT9D131, 0xC8, 0x00);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0xBA);  // MCU_DATA_0
    gpio_i2c_write(I2C_MT9D131, 0xC6, 0xA7);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x4E);  // MCU_ADDRESS [MODE_GAM_TABLE_A_9]
    gpio_i2c_write(I2C_MT9D131, 0xC8, 0x00);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0xC7);  // MCU_DATA_0
    gpio_i2c_write(I2C_MT9D131, 0xC6, 0xA7);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x4F);  // MCU_ADDRESS [MODE_GAM_TABLE_A_10]
    gpio_i2c_write(I2C_MT9D131, 0xC8, 0x00);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0xD1);  // MCU_DATA_0
    gpio_i2c_write(I2C_MT9D131, 0xC6, 0xA7);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x50);  // MCU_ADDRESS [MODE_GAM_TABLE_A_11]
    gpio_i2c_write(I2C_MT9D131, 0xC8, 0x00);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0xDA);  // MCU_DATA_0
    gpio_i2c_write(I2C_MT9D131, 0xC6, 0xA7);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x51);  // MCU_ADDRESS [MODE_GAM_TABLE_A_12]
    gpio_i2c_write(I2C_MT9D131, 0xC8, 0x00);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0xE1);  // MCU_DATA_0
    gpio_i2c_write(I2C_MT9D131, 0xC6, 0xA7);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x52);  // MCU_ADDRESS [MODE_GAM_TABLE_A_13]
    gpio_i2c_write(I2C_MT9D131, 0xC8, 0x00);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0xE8);  // MCU_DATA_0
    gpio_i2c_write(I2C_MT9D131, 0xC6, 0xA7);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x53);  // MCU_ADDRESS [MODE_GAM_TABLE_A_14]
    gpio_i2c_write(I2C_MT9D131, 0xC8, 0x00);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0xED);  // MCU_DATA_0
    gpio_i2c_write(I2C_MT9D131, 0xC6, 0xA7);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x54);  // MCU_ADDRESS [MODE_GAM_TABLE_A_15]
    gpio_i2c_write(I2C_MT9D131, 0xC8, 0x00);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0xF2);  // MCU_DATA_0
    gpio_i2c_write(I2C_MT9D131, 0xC6, 0xA7);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x55);  // MCU_ADDRESS [MODE_GAM_TABLE_A_16]
    gpio_i2c_write(I2C_MT9D131, 0xC8, 0x00);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0xF7);  // MCU_DATA_0
    gpio_i2c_write(I2C_MT9D131, 0xC6, 0xA7);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x56);  // MCU_ADDRESS [MODE_GAM_TABLE_A_17]
    gpio_i2c_write(I2C_MT9D131, 0xC8, 0x00);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0xFB);  // MCU_DATA_0
    gpio_i2c_write(I2C_MT9D131, 0xC6, 0xA7);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x57);  // MCU_ADDRESS [MODE_GAM_TABLE_A_18]
    gpio_i2c_write(I2C_MT9D131, 0xC8, 0x00);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0xFF);  // MCU_DATA_0
 #endif
    gpio_i2c_write(I2C_MT9D131, 0xC6, 0xA1);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x03);  // MCU_ADDRESS [SEQ_CMD]
    gpio_i2c_write(I2C_MT9D131, 0xC8, 0x00);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x05);  // MCU_DATA_0
     /**************************************gamma and contrast end***************************/


    /*--------use preview mode, not capture mode--------*/
    gpio_i2c_write(I2C_MT9D131, 0xf0, 0x00);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x01);
    //capture  clear
    gpio_i2c_write(I2C_MT9D131, 0xc6, 0xa1);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x20); 
    gpio_i2c_write(I2C_MT9D131, 0xc8, 0x00);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x00);
    //cmd do preview
    gpio_i2c_write(I2C_MT9D131, 0xc6, 0xa1);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x03); 
    gpio_i2c_write(I2C_MT9D131, 0xc8, 0x00);
    gpio_i2c_write(I2C_MT9D131, 0xf1, 0x01);

}