#include <stdint.h>
#include "ov7670.h"
#include "ov7725cfg.h"
#include "sccb.h"
#include "unistd.h"

uint8_t OV7725_Init(void)
{
	uint8_t temp;
	uint16_t i=0;
	SCCB_Init(400000, 0);        		//ʼSCCB IO
 	if(SCCB_WR_Reg(0x12,0x80))return 1;	//λSCCB	  
	usleep(50000);
	//ȡƷͺ
 	temp=SCCB_RD_Reg(0x0b);   
	if(temp!=0x21)return 2;
 	temp=SCCB_RD_Reg(0x0a);   
	if(temp!=0x77)return 2;
	//ʼ	  
	for(i=0;i<sizeof(ov7725_init_reg_tbl)/sizeof(ov7725_init_reg_tbl[0]);i++)
	{
	   	SCCB_WR_Reg(ov7725_init_reg_tbl[i][0],ov7725_init_reg_tbl[i][1]);
	   	usleep(2000);
 	}
   	return 0x00; 	//ok
}

uint8_t OV7xxx_Init(void)
{
	uint8_t PID,VER;
	uint16_t i=0;
	uint8_t CMOS_MODEL;
	SCCB_Init(400000, 0);        		//ʼSCCB IO
 	if(SCCB_WR_Reg(0x12,0x80))return 1;	//λSCCB
	usleep(50000);
	//ȡƷͺ
	VER=SCCB_RD_Reg(0x0b);
	PID=SCCB_RD_Reg(0x0a);

	if((PID == 0x77) & (VER == 0x21))
	{
		CMOS_MODEL = OV7725;
	}
	else if((PID == 0x76) & (VER == 0x73))
	{
		CMOS_MODEL = OV7670;
	}

	if(temp!=0x21)return 2;
	if(temp!=0x77)return 2;
	//ʼ
	for(i=0;i<sizeof(ov7725_init_reg_tbl)/sizeof(ov7725_init_reg_tbl[0]);i++)
	{
	   	SCCB_WR_Reg(ov7725_init_reg_tbl[i][0],ov7725_init_reg_tbl[i][1]);
	   	usleep(2000);
 	}
   	return 0x00; 	//ok
}
