1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
| /*
| * WORK Microwave work_92105 board low level init
| *
| * (C) Copyright 2014 DENX Software Engineering GmbH
| * Written-by: Albert ARIBAUD <albert.aribaud@3adev.fr>
| *
| * Low level init is called from SPL to set up the clocks.
| * On entry, the LPC3250 is in Direct Run mode with all clocks
| * running at 13 MHz; on exit, ARM clock is 208 MHz, HCLK is
| * 104 MHz and PCLK is 13 MHz.
| *
| * This code must run from SRAM so that the clock changes do
| * not prevent it from executing.
| *
| * SPDX-License-Identifier: GPL-2.0+
| */
|
| .globl lowlevel_init
|
| lowlevel_init:
|
| /* Set ARM, HCLK, PCLK dividers for normal mode */
| ldr r0, =0x0000003D
| ldr r1, =0x40004040
| str r0, [r1]
|
| /* Start HCLK PLL for 208 MHz */
| ldr r0, =0x0001401E
| ldr r1, =0x40004058
| str r0, [r1]
|
| /* wait for HCLK PLL to lock */
| 1:
| ldr r0, [r1]
| ands r0, r0, #1
| beq 1b
|
| /* switch to normal mode */
| ldr r1, =0x40004044
| ldr r0, [r1]
| orr r0, #0x00000004
| str r0, [r1]
|
| /* Return to U-Boot via saved link register */
| mov pc, lr
|
|