s3c6410时钟初始化

ok6410 时钟初始化

.global clock_init

clock_init:
	/*set the clock time*/
	ldr	r0, =0x7e00f000 /*APLL_CLOCK*/
	ldr	r1, =0xffff
	str	r1, [r0]

	str	r1, [r0, #0x4]	/*MPLL_CLOCK*/
	str	r1, [r0, #0x8]	/*EPLL_CLOCK*/

	/*set async mode*/
	ldr	r0, =0x7e00f900	/*OTHERS*/
	ldr	r1, [r0]
	bic	r1, #0xc0
	str	r1, [r0]
	
	/*wait for async mode*/
loop1:
	ldr	r0, =0x7e00f900
	ldr	r1, [r0]
	and	r1, #0xf00
	cmp	r1, #0x00
	bne	loop1

	/*set the DIV*/
	#define ARM_RATIO	0 /*ARM_CLK=DOUTAPLL / (ARM_RATIO + 1)*/
	#define MPLL_RATIO	0 /*DOUTMPLL = MOUTMPLL / (MPLL_RATIO + 1)*/
	#define HCLK_RATIO	1 /*HCLK = HCLKX2 / (HCLK_RATIO + 1)*/
	#define HCLKX2_RATIO	1 /*HCLKX2 = HCLKX2IN / (HCLKX2_RATIO + 1)*/
	#define PCLK_RATIO	3 /*PCLK = HCLKX2 / (PCLK_RATIO + 1) <=66Mhz*/

	ldr	r0, =0x7e00f020		/*CLK_DIV0*/
	ldr	r1, =(ARM_RATIO) | (MPLL_RATIO << 4) | (HCLK_RATIO << 8) | (HCLKX2_RATIO << 9) | (PCLK_RATIO << 12)
	str	r1, [r0]
	
	/*init the frequence*/
	#define SDIV	1
	#define PDIV	3
	#define MDIV	266 /*final 532Mhz*/

	ldr	r0, =0x7e00f00c /*APLL_CON*/
	ldr	r1, =(1 << 31) | (MDIV << 16) | (PDIV << 8) | (SDIV)
	str	r1, [r0]
	
	ldr	r0, =0x7e00f010 /*MPLL_CON*/
	str	r1, [r0]

	/*set the clk_src to choose pll but not xttpll*/
	ldr	r0, =0x7e00f01c
	ldr	r1, =0x03
	str	r1, [r0]
	
	mov	pc, lr


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值