/*
* system_clock_init: Initialize core clock and bus clock.
* void system_clock_init(void)
*/
system_clock_init:
ldr r0, =S5PC110_CLOCK_BASE @ 0xE0100000
/*1-先关闭PLL以便打开locking period*/
/* Set Source Clock */
ldr r1, =0x0 @ A, M, E, VPLL Muxing
str r1, [r0, #0x200] @ S5PC1XX_CLK_SRC0
/*2-设置默认锁定时间*/
/* Set Lock Time */
ldr r1, =0x2D0 @ Locktime : 30us
str r1, [r0, #0x000] @ S5PC110_APLL_LOCK
ldr r1, =0xBB8 @ Locktime : 0xBB8 = 3000
str r1, [r0, #0x008] @ S5PC110_MPLL_LOCK
str r1, [r0, #0x010] @ S5PC110_EPLL_LOCK
str r1, [r0, #0x020] @ S5PC110_VPLL_LOCK
/*3-设置PLL倍频升频率*/
/* S5PC110_APLL_CON */
ldr r1, =0x807D0301 @ 1000MHz
str r1, [r0, #0x100]
/* S5PC110_MPLL_CON */
ldr r1, =0x829B0C01 @ 667MHz
str r1, [r0, #0x108]
/* S5PC110_EPLL_CON */
ldr r1, =0x80300302 @ 96MHz VSEL 0 P 3 M 48 S 2
str r1, [r0, #0x110]
/* S5PC110_VPLL_CON */
ldr r1, =0x806C0603 @ 54MHz
str r1, [r0, #0x120]
/*4-设置分频*/
/* Set Clock divider */
ldr r1, =0x14131440
str r1, [r0, #0x300]
/*5-打开PLL*/
/* Set Source Clock */
ldr r1, =0x1111 @ A, M, E, VPLL Muxing
str r1, [r0, #0x200] @ S5PC1XX_CLK_SRC0
/* wait at least 200us to stablize all clock */
mov r2, #0x10000
1: subs r2, r2, #1
bne 1b @b:backwards(向后-上)
mov pc, lr