static int iWriteData(unsigned int  ui4_offset, unsigned int  ui4_length, unsigned char * pinputdata)
{
   int  i4RetValue = 0;
   int  i4ResidueDataLength;
   u32 u4IncOffset = 0;
   u32 u4CurrentOffset;
   u8 * pBuff;

   CAM_CALDB("[CAM_CAL] iWriteData\n" );


   if (ui4_offset + ui4_length >= 0x2000)
   {
      CAM_CALDB("[CAM_CAL] Write Error!! S-24CS64A not supprt address >= 0x2000!! \n" );
      return -1;
   }

   i4ResidueDataLength = (int)ui4_length;
   u4CurrentOffset = ui4_offset;
   pBuff = pinputdata;   
   CAM_CALDB("[CAM_CAL] iWriteData u4CurrentOffset is %d \n",u4CurrentOffset);   
   do 
   {
       if(i4ResidueDataLength >= 6)
       {
           i4RetValue = iWriteCAM_CAL((u16)u4CurrentOffset, 6, pBuff);
           if (i4RetValue != 0)
           {
                CAM_CALDB("[CAM_CAL] I2C iWriteData failed!! \n");
                return -1;
           }           
           u4IncOffset += 6;
           i4ResidueDataLength -= 6;
           u4CurrentOffset = ui4_offset + u4IncOffset;
           pBuff = pinputdata + u4IncOffset;
       }
       else
       {
           i4RetValue = iWriteCAM_CAL((u16)u4CurrentOffset, i4ResidueDataLength, pBuff);
           if (i4RetValue != 0)
           {
                CAM_CALDB("[CAM_CAL] I2C iWriteData failed!! \n");
                return -1;
           }            
           u4IncOffset += 6;
           i4ResidueDataLength -= 6;
           u4CurrentOffset = ui4_offset + u4IncOffset;
           pBuff = pinputdata + u4IncOffset;
           //break;
       }
   }while (i4ResidueDataLength > 0);
   CAM_CALDB("[CAM_CAL] iWriteData done\n" );
 
   return 0;
}
//Burst Write Data
static int iWriteData(unsigned int  ui4_offset, unsigned int  ui4_length, unsigned char * pinputdata)
{
   int  i4RetValue = 0;
   int  i4ResidueDataLength;
   u32 u4IncOffset = 0;
   u32 u4CurrentOffset;
   u8 * pBuff;
   CAM_CALDB("[S24CAM_CAL] iWriteData\n" );

   i4ResidueDataLength = (int)ui4_length;
   u4CurrentOffset = ui4_offset;
   pBuff = pinputdata;   

   CAM_CALDB("[CAM_CAL] iWriteData u4CurrentOffset is %d \n",u4CurrentOffset);   

   do 
   {
       CAM_CALDB("[CAM_CAL][iWriteData] Write 0x%x=0x%x \n",u4CurrentOffset, pBuff[0]);
       i4RetValue = iWriteCAM_CAL((u16)u4CurrentOffset, 1, pBuff[0]);
       if (i4RetValue != 0)
       {
            CAM_CALDB("[CAM_CAL] I2C iWriteData failed!! \n");
            return -1;
       }           
       u4IncOffset ++;
       i4ResidueDataLength --;
       u4CurrentOffset = ui4_offset + u4IncOffset;
       pBuff = pinputdata + u4IncOffset;
   }while (i4ResidueDataLength > 0);
   CAM_CALDB("[S24CAM_CAL] iWriteData done\n" );
 
   return 0;
}
//go to page
static kal_uint8 IMX135_GotoPage(kal_uint8 page)
{
	kal_uint8 rdrdy_status = 0;
	kal_uint8 checktimes = 2,i = 0;
	u8  readbuff ;
	int ret;
	for(i= 0; i<checktimes;i++)
	{
		iWriteCAM_CAL(0x3b02, 1 , page);
    	iWriteCAM_CAL(0x3b00,1, 0x01);
   		mdelay(2);
    	ret = iReadCAM_CAL(0x3b01,1,&readbuff);
		rdrdy_status = readbuff;
		if( rdrdy_status == 1)
		{			
			return 1;
		}
		else
		{
			CAM_CALDB("OTP fail!\n");
		}
	}
	return 0;	
}
예제 #4
0
파일: ov5670otp.c 프로젝트: djun/m463
//Burst Write Data
static int iWriteData(u8  ui4_offset, unsigned int  ui4_length, unsigned char * pinputdata)
{
   int  i4RetValue = 0;
   int  i4ResidueDataLength;
   u32 u4IncOffset = 0;
   u32 u4CurrentOffset;
   u8 * pBuff;
   u16 i2c_id = 0;
   CAM_CALDB("[S24CAM_CAL_SUB] iWriteData\n" );

   if (get_module_type() == SUNNY_MODULE)
	i2c_id = OV5670_SUNNY_DEVICE_ID;
   else if (get_module_type() == OFILM_MODULE)
	i2c_id = OV5670_OFILM_DEVICE_ID;
   else if (get_module_type() == QTECH_MODULE)
	i2c_id = OV5670_QTECH_DEVICE_ID;

   i4ResidueDataLength = (int)ui4_length;
   u4CurrentOffset = ui4_offset;
   pBuff = pinputdata;   

   CAM_CALDB("[CAM_CAL_SUB] iWriteData u4CurrentOffset is %d \n",u4CurrentOffset);   

   do 
   {
       CAM_CALDB("[CAM_CAL_SUB][iWriteData] Write 0x%x=0x%x \n",u4CurrentOffset, pBuff[0]);
       i4RetValue = iWriteCAM_CAL((u8)u4CurrentOffset, 1, pBuff[0], i2c_id);
       if (i4RetValue != 0)
       {
            CAM_CALDB("[CAM_CAL_SUB] I2C iWriteData failed!! \n");
            return -1;
       }           
       u4IncOffset ++;
       i4ResidueDataLength --;
       u4CurrentOffset = ui4_offset + u4IncOffset;
       pBuff = pinputdata + u4IncOffset;
   }while (i4ResidueDataLength > 0);
   CAM_CALDB("[S24CAM_CAL_SUB] iWriteData done\n" );
 
   return 0;
}