⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 s3c2410.cpp

📁 混泰CH7023,CH7024,CH7025视频解码芯片
💻 CPP
字号:
#include "precomp.h"
#include "S3C2410.h"
#include "Regmap.h"

//globle:
extern I2C g_i2c;
extern UART g_uart;
extern CHIP_TYPE g_ChipType;

//Method:
CHIP_TYPE FindChrontelChip() // Only search CH7023/7024 and Ch7025
{
	UCHAR val=0;
	CHIP_TYPE ret;
	g_i2c.GetReg(0x00,&val);
	switch(val)
	{
	case 0x54:
		ret=CHIP_CH7026;
		break;
	case 0x55:
		ret=CHIP_CH7025;
		break;
	default:
		RETAILMSG(1,(_T("Now Ch7026 or Ch7025 connected!\n")));
		ret=CHIP_NUMBER;
		break;
	}
	return ret;
}

void InitChrontelChip(CHIP_TYPE chiptype)
{
	RETAILMSG(1,(_T("InitChrontelChip()!\r\n")));
	switch(chiptype)
	{
	case CHIP_CH7023:
		CH7023Init();
		break;
	case CHIP_CH7025:
		CH7025Init();
		break;
	default:
		break;
	}
}

void CH7023Init()
{
	RETAILMSG(1,(_T("CH7023Init()!\r\n")));
	int i;
	for(i=0;i<initNTSClen7023_320x240;i++)
	{
		g_i2c.SetReg(initNTSCreg7023_320x240[i][0],&initNTSCreg7023_320x240[i][1]);
	}
}

void CH7025Init()
{
	RETAILMSG(1,(_T("CH7025Init()!\r\n")));
	int i = 0,mfailed = 0,timeout = 20000;
	UCHAR val=0;
	RETAILMSG(1,(_T("CH7025_240x320!\r\n")));
	for(i=0;i<initNTSClen7025_240x320;i++)
	{
		if(!g_i2c.SetReg(initNTSCreg7025_240x320[i][0],&initNTSCreg7025_240x320[i][1]))
			mfailed++;
		RETAILMSG(0,(_T("Set Register[0x%x]=0x%x\r\n"),initNTSCreg7025_240x320[i][0],initNTSCreg7025_240x320[i][1]));
	}
	if(mfailed)
	{
		RETAILMSG(1,(_T("CH7025 init failed!!!\r\n")));
		return;
	}

	//Now to wait the SDRAM init completed:
	val=0x03;
	g_i2c.SetReg(0x06,&val);
	val=0x01;
	g_i2c.SetReg(0x06,&val);
	//read status bit:
	while(timeout--)
	{
		g_i2c.GetReg(0x7E,&val);
		if(val&0x08)
			break;
	}
	if(timeout==0)
	{
		RETAILMSG(1,(_T("SDRAM init failed!\n")));
		return;
	}
	val=0x00;
	g_i2c.SetReg(0x06,&val);
	//stop again:
	val=0x01;
	g_i2c.SetReg(0x06,&val);
	val=0x00;
	g_i2c.SetReg(0x06,&val);

	RETAILMSG(1,(_T("CH7025Init() completed!\r\n")));

}

void  CheckLCDReg()
{
    volatile S3C2410_LCDreg *lcd_reg = (S3C2410_LCDreg *)S3C2410_LCD_VA_BASE; //using virtual address in kernel
	RETAILMSG(DEBUG_ZONE,(_T("******************begin*******************")));

	RETAILMSG(DEBUG_ZONE,(_T("s2410LCD->rLCDCON1=%X\n\r"),lcd_reg->rLCDCON1));
	RETAILMSG(DEBUG_ZONE,(_T("s2410LCD->rLCDCON2=%X\n\r"),lcd_reg->rLCDCON2));
	RETAILMSG(DEBUG_ZONE,(_T("s2410LCD->rLCDCON3=%X\n\r"),lcd_reg->rLCDCON3));
	RETAILMSG(DEBUG_ZONE,(_T("s2410LCD->rLCDCON4=%X\n\r"),lcd_reg->rLCDCON4));
	RETAILMSG(DEBUG_ZONE,(_T("s2410LCD->rLCDCON5=%X\n\r"),lcd_reg->rLCDCON5));
	
	RETAILMSG(DEBUG_ZONE,(_T("s2410LCD->rLCDSADDR1=%X\n\r"),lcd_reg->rLCDSADDR1));
	RETAILMSG(DEBUG_ZONE,(_T("s2410LCD->rLCDSADDR2=%X\n\r"),lcd_reg->rLCDSADDR2));
	RETAILMSG(DEBUG_ZONE,(_T("s2410LCD->rLCDSADDR3=%X\n\r"),lcd_reg->rLCDSADDR3));

	RETAILMSG(DEBUG_ZONE,(_T("s2410LCD->rREDLUT=%X\n\r"),lcd_reg->rREDLUT));
	RETAILMSG(DEBUG_ZONE,(_T("s2410LCD->rGREENLUT=%X\n\r"),lcd_reg->rGREENLUT));
	RETAILMSG(DEBUG_ZONE,(_T("s2410LCD->rBLUELUT=%X\n\r"),lcd_reg->rBLUELUT));

	RETAILMSG(DEBUG_ZONE,(_T("s2410LCD->rDITHMODE=%X\n\r"),lcd_reg->rDITHMODE));
	RETAILMSG(DEBUG_ZONE,(_T("s2410LCD->rTPAL=%X\n\r"),lcd_reg->rTPAL));
	RETAILMSG(DEBUG_ZONE,(_T("s2410LCD->rLCDINTMSK=%X\n\r"),lcd_reg->rLCDINTMSK));
	RETAILMSG(DEBUG_ZONE,(_T("s2410LCD->rLPCSEL=%X\n\r"),lcd_reg->rLPCSEL));

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -