裸机S3C6410显示控制器(1)-设置时钟源

//------------------------------------------------------------
// Function Name : LCD_SetClkSrc
//
// Function Desctiption :
//  This function sets video clock source 
//
//------------------------------------------------------------
void LCD_SetClkSrc(CLK_SRC eClkSrc)
{
	u32 uVidConVal;
	u32 uClkSrc, uEpllCon0;

	uClkSrc =
		(eClkSrc == SRC_HCLK) ? H_CLK_INPUT :
		(eClkSrc == SRC_27M) ? EXT_CLK_1_INPUT : EXT_CLK_0_INPUT;

	uVidConVal=Inp32(LCD_BASE+rVIDCON0);

	uVidConVal &= ~(0x3<<2);
	uVidConVal |= uClkSrc;

	LcdcOutp32(rVIDCON0, uVidConVal);

	uClkSrc = Inp32SYSC(0x1C);
	uEpllCon0 = Inp32SYSC(0x14);

	if(eClkSrc == SRC_MOUT_EPLL) 
	{
		Outp32SYSC(0x14, uEpllCon0 |(1u<<31));
		Delay(100);
		Outp32SYSC(0x1C, uClkSrc & ~(0x3<<26) |(1<<2));	
	}
	else if (eClkSrc == SRC_DOUT_MPLL) Outp32SYSC(0x1C, uClkSrc & ~(0x3<<26)|(1<<26));
	else if (eClkSrc == SRC_FIN_EPLL) Outp32SYSC(0x1C, uClkSrc & ~(0x3<<7)|(2<<26));

}

根据LCD时钟源的类型来设置寄存器,时钟源可能是:

typedef enum
{
	SRC_HCLK, SRC_MOUT_EPLL, SRC_DOUT_MPLL, SRC_FIN_EPLL, SRC_27M
} CLK_SRC;



(1)设置VIDCON0寄存器


如果时钟源是HCLK或27M,只需设置此寄存器。如果是SRC_MOUT_EPLL, SRC_DOUT_MPLL, SRC_FIN_EPLL,还需要设置系统控制器中的CLKSRC寄存器

(2)设置系统控制器中的CLKSRC寄存器,选择LCD的时钟源


第26,27位是LCD_SEL字段。

另外EPLLCON0的31位表示启用EPLL:




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值