@ -296,20 +296,66 @@ setup_pll_func:
setup_ p l l P L L 1 _ B A S E _ A D D R , 8 0 0
setup_ p l l P L L 1 _ B A S E _ A D D R , 8 0 0
setup_ p l l P L L 3 _ B A S E _ A D D R , 2 1 6
setup_ p l l P L L 3 _ B A S E _ A D D R , 4 0 0
/* Switch peripheral to PLL3 */
ldr r0 , =CCM_BASE_ADDR
ldr r1 , =0x00015154
str r1 , [ r0 , #C L K C T L _ C B C M R ]
ldr r1 , =0x02888945
orr r1 , r1 , #( 1 < < 1 6 )
str r1 , [ r0 , #C L K C T L _ C B C D R ]
/* make sure change is effective */
1 : ldr r1 , [ r0 , #C L K C T L _ C D H I P R ]
cmp r1 , #0x0
bne 1 b
setup_ p l l P L L 2 _ B A S E _ A D D R , 4 0 0
/* Switch peripheral to PLL2 */
ldr r0 , =CCM_BASE_ADDR
ldr r1 , =0x00808145
orr r1 , r1 , #( 2 < < 1 0 )
orr r1 , r1 , #( 0 < < 1 6 )
orr r1 , r1 , #( 1 < < 1 9 )
str r1 , [ r0 , #C L K C T L _ C B C D R ]
ldr r1 , =0x00016154
str r1 , [ r0 , #C L K C T L _ C B C M R ]
/*change uart clk parent to pll2*/
ldr r1 , [ r0 , #C L K C T L _ C S C M R 1 ]
and r1 , r1 , #0xfcffffff
orr r1 , r1 , #0x01000000
str r1 , [ r0 , #C L K C T L _ C S C M R 1 ]
/* make sure change is effective */
1 : ldr r1 , [ r0 , #C L K C T L _ C D H I P R ]
cmp r1 , #0x0
bne 1 b
setup_ p l l P L L 3 _ B A S E _ A D D R , 2 1 6
setup_ p l l P L L 4 _ B A S E _ A D D R , 4 5 5
/* Set the platform clock dividers */
/* Set the platform clock dividers */
ldr r0 , =ARM_BASE_ADDR
ldr r0 , =ARM_BASE_ADDR
ldr r1 , =0x00000725
ldr r1 , =0x00000124
str r1 , [ r0 , #0x14 ]
str r1 , [ r0 , #0x14 ]
ldr r0 , =CCM_BASE_ADDR
ldr r0 , =CCM_BASE_ADDR
mov r1 , #0
mov r1 , #0
str r1 , [ r0 , #C L K C T L _ C A C R R ]
str r1 , [ r0 , #C L K C T L _ C A C R R ]
/* Switch ARM back to PLL 1 */
/* Switch ARM back to PLL 1. */
str r4 , [ r0 , #C L K C T L _ C C S R ]
mov r1 , #0x0
str r1 , [ r0 , #C L K C T L _ C C S R ]
/* make uart div=6 */
ldr r1 , [ r0 , #C L K C T L _ C S C D R 1 ]
and r1 , r1 , #0xffffffc0
orr r1 , r1 , #0x0a
str r1 , [ r0 , #C L K C T L _ C S C D R 1 ]
/* Restore the default values in the Gate registers */
/* Restore the default values in the Gate registers */
ldr r1 , =0xFFFFFFFF
ldr r1 , =0xFFFFFFFF
@ -322,36 +368,14 @@ setup_pll_func:
str r1 , [ r0 , #C L K C T L _ C C G R 6 ]
str r1 , [ r0 , #C L K C T L _ C C G R 6 ]
str r1 , [ r0 , #C L K C T L _ C C G R 7 ]
str r1 , [ r0 , #C L K C T L _ C C G R 7 ]
/* Switch peripheral to PLL2 */
mov r1 , #0x00000
ldr r0 , =CCM_BASE_ADDR
str r1 , [ r0 , #C L K C T L _ C C D R ]
ldr r1 , =0x00808145
orr r1 , r1 , #2 < < 1 0
orr r1 , r1 , #1 < < 1 9
str r1 , [ r0 , #C L K C T L _ C B C D R ]
ldr r1 , =0x00016154
/* for cko - for ARM div by 8 */
str r1 , [ r0 , #C L K C T L _ C B C M R ]
mov r1 , #0x000A0000
/* Change uart clk parent to pll2*/
add r1 , r1 , #0x00000F0
ldr r1 , [ r0 , #C L K C T L _ C S C M R 1 ]
str r1 , [ r0 , #C L K C T L _ C C O S R ]
and r1 , r1 , #0xfcffffff
orr r1 , r1 , #0x01000000
str r1 , [ r0 , #C L K C T L _ C S C M R 1 ]
ldr r1 , [ r0 , #C L K C T L _ C S C D R 1 ]
and r1 , r1 , #0xffffffc0
orr r1 , r1 , #0x0a
str r1 , [ r0 , #C L K C T L _ C S C D R 1 ]
/* make sure divider effective */
1 : ldr r1 , [ r0 , #C L K C T L _ C D H I P R ]
cmp r1 , #0x0
bne 1 b
str r4 , [ r0 , #C L K C T L _ C C D R ]
/* for cko - for ARM div by 8 */
mov r1 , #0x000A0000
add r1 , r1 , #0x00000F0
str r1 , [ r0 , #C L K C T L _ C C O S R ]
# endif / * C O N F I G _ M X 5 3 * /
# endif / * C O N F I G _ M X 5 3 * /
.endm
.endm
@ -405,3 +429,9 @@ W_DP_665: .word DP_OP_665
W_DP_216 : .word D P _ O P _ 216
W_DP_216 : .word D P _ O P _ 216
.word DP_MFD_216
.word DP_MFD_216
.word DP_MFN_216
.word DP_MFN_216
W_DP_400 : .word D P _ O P _ 400
.word DP_MFD_400
.word DP_MFN_400
W_DP_455 : .word D P _ O P _ 455
.word DP_MFD_455
.word DP_MFN_455