]> git.ipfire.org Git - people/ms/u-boot.git/blame - board/ms7722se/lowlevel_init.S
Add GPL-2.0+ SPDX-License-Identifier to source files
[people/ms/u-boot.git] / board / ms7722se / lowlevel_init.S
CommitLineData
6c0bbdcc
NI
1/*
2 * Copyright (C) 2007
3 * Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
61fb15c5 4 *
6c0bbdcc
NI
5 * Copyright (C) 2007
6 * Kenati Technologies, Inc.
7 *
8 * board/ms7722se/lowlevel_init.S
9 *
1a459660 10 * SPDX-License-Identifier: GPL-2.0+
6c0bbdcc
NI
11 */
12
13#include <config.h>
14#include <version.h>
15
16#include <asm/processor.h>
f7e78f3b 17#include <asm/macro.h>
6c0bbdcc
NI
18
19/*
e4430779
JCPV
20 * Board specific low level init code, called _very_ early in the
21 * startup sequence. Relocation to SDRAM has not happened yet, no
22 * stack is available, bss section has not been initialised, etc.
6c0bbdcc 23 *
e4430779 24 * (Note: As no stack is available, no subroutines can be called...).
6c0bbdcc
NI
25 */
26
27 .global lowlevel_init
28
29 .text
30 .align 2
31
32lowlevel_init:
33
f7e78f3b
JCPV
34 /*
35 * Cache Control Register
36 * Instruction Cache Invalidate
37 */
38 write32 CCR_A, CCR_D
6c0bbdcc 39
f7e78f3b
JCPV
40 /*
41 * Address of MMU Control Register
42 * TI == TLB Invalidate bit
43 */
44 write32 MMUCR_A, MMUCR_D
6c0bbdcc 45
b5d10a13 46 /* Address of Power Control Register 0 */
f7e78f3b 47 write32 MSTPCR0_A, MSTPCR0_D
6c0bbdcc 48
b5d10a13 49 /* Address of Power Control Register 2 */
f7e78f3b 50 write32 MSTPCR2_A, MSTPCR2_D
6c0bbdcc 51
f7e78f3b 52 write16 SBSCR_A, SBSCR_D
6c0bbdcc 53
f7e78f3b 54 write16 PSCR_A, PSCR_D
6c0bbdcc 55
b5d10a13 56 /* 0xA4520004 (Watchdog Control / Status Register) */
f7e78f3b 57! write16 RWTCSR_A, RWTCSR_D_1 /* 0xA507 -> timer_STOP/WDT_CLK=max */
6c0bbdcc 58
b5d10a13 59 /* 0xA4520000 (Watchdog Count Register) */
f7e78f3b 60 write16 RWTCNT_A, RWTCNT_D /*0x5A00 -> Clear */
6c0bbdcc 61
b5d10a13 62 /* 0xA4520004 (Watchdog Control / Status Register) */
f7e78f3b 63 write16 RWTCSR_A, RWTCSR_D_2 /* 0xA504 -> timer_STOP/CLK=500ms */
6c0bbdcc 64
b5d10a13 65 /* 0xA4150000 Frequency control register */
f7e78f3b 66 write32 FRQCR_A, FRQCR_D
6c0bbdcc 67
f7e78f3b 68 write32 CCR_A, CCR_D_2
6c0bbdcc
NI
69
70bsc_init:
71
f7e78f3b 72 write16 PSELA_A, PSELA_D
6c0bbdcc 73
f7e78f3b 74 write16 DRVCR_A, DRVCR_D
6c0bbdcc 75
f7e78f3b 76 write16 PCCR_A, PCCR_D
6c0bbdcc 77
f7e78f3b 78 write16 PECR_A, PECR_D
6c0bbdcc 79
f7e78f3b 80 write16 PJCR_A, PJCR_D
6c0bbdcc 81
f7e78f3b 82 write16 PXCR_A, PXCR_D
6c0bbdcc 83
f7e78f3b 84 write32 CMNCR_A, CMNCR_D
6c0bbdcc 85
f7e78f3b 86 write32 CS0BCR_A, CS0BCR_D
6c0bbdcc 87
f7e78f3b 88 write32 CS2BCR_A, CS2BCR_D
6c0bbdcc 89
f7e78f3b 90 write32 CS4BCR_A, CS4BCR_D
6c0bbdcc 91
f7e78f3b 92 write32 CS5ABCR_A, CS5ABCR_D
6c0bbdcc 93
f7e78f3b 94 write32 CS5BBCR_A, CS5BBCR_D
6c0bbdcc 95
f7e78f3b 96 write32 CS6ABCR_A, CS6ABCR_D
6c0bbdcc 97
f7e78f3b 98 write32 CS0WCR_A, CS0WCR_D
6c0bbdcc 99
f7e78f3b 100 write32 CS2WCR_A, CS2WCR_D
6c0bbdcc 101
f7e78f3b 102 write32 CS4WCR_A, CS4WCR_D
6c0bbdcc 103
f7e78f3b 104 write32 CS5AWCR_A, CS5AWCR_D
6c0bbdcc 105
f7e78f3b 106 write32 CS5BWCR_A, CS5BWCR_D
6c0bbdcc 107
f7e78f3b 108 write32 CS6AWCR_A, CS6AWCR_D
6c0bbdcc
NI
109
110 ! SDRAM initialization
f7e78f3b 111 write32 SDCR_A, SDCR_D
6c0bbdcc 112
f7e78f3b 113 write32 SDWCR_A, SDWCR_D
6c0bbdcc 114
f7e78f3b 115 write32 SDPCR_A, SDPCR_D
6c0bbdcc 116
f7e78f3b 117 write32 RTCOR_A, RTCOR_D
6c0bbdcc 118
f7e78f3b 119 write32 RTCSR_A, RTCSR_D
6c0bbdcc 120
c9935c99 121 write8 SDMR3_A, SDMR3_D
6c0bbdcc 122
e4430779 123 ! BL bit off (init = ON) (?!?)
6c0bbdcc
NI
124
125 stc sr, r0 ! BL bit off(init=ON)
126 mov.l SR_MASK_D, r1
127 and r1, r0
128 ldc r0, sr
129
130 rts
131 mov #0, r0
132
6c0bbdcc
NI
133 .align 2
134
61fb15c5 135CCR_A: .long CCR
6c0bbdcc
NI
136MMUCR_A: .long MMUCR
137MSTPCR0_A: .long MSTPCR0
138MSTPCR2_A: .long MSTPCR2
139SBSCR_A: .long SBSCR
140PSCR_A: .long PSCR
141RWTCSR_A: .long RWTCSR
142RWTCNT_A: .long RWTCNT
143FRQCR_A: .long FRQCR
144
145CCR_D: .long 0x00000800
146CCR_D_2: .long 0x00000103
147MMUCR_D: .long 0x00000004
148MSTPCR0_D: .long 0x00001001
149MSTPCR2_D: .long 0xffffffff
150FRQCR_D: .long 0x07022538
151
e4430779
JCPV
152PSELA_A: .long 0xa405014E
153PSELA_D: .word 0x0A10
61fb15c5 154 .align 2
6c0bbdcc 155
e4430779
JCPV
156DRVCR_A: .long 0xa405018A
157DRVCR_D: .word 0x0554
6c0bbdcc
NI
158 .align 2
159
e4430779
JCPV
160PCCR_A: .long 0xa4050104
161PCCR_D: .word 0x8800
6c0bbdcc
NI
162 .align 2
163
e4430779
JCPV
164PECR_A: .long 0xa4050108
165PECR_D: .word 0x0000
6c0bbdcc
NI
166 .align 2
167
e4430779
JCPV
168PJCR_A: .long 0xa4050110
169PJCR_D: .word 0x1000
6c0bbdcc
NI
170 .align 2
171
e4430779
JCPV
172PXCR_A: .long 0xa4050148
173PXCR_D: .word 0x0AAA
6c0bbdcc
NI
174 .align 2
175
176CMNCR_A: .long CMNCR
177CMNCR_D: .long 0x00000013
178CS0BCR_A: .long CS0BCR ! Flash bank 1
179CS0BCR_D: .long 0x24920400
180CS2BCR_A: .long CS2BCR ! SRAM
181CS2BCR_D: .long 0x24920400
182CS4BCR_A: .long CS4BCR ! FPGA, PCMCIA, USB, ext slot
183CS4BCR_D: .long 0x24920400
184CS5ABCR_A: .long CS5ABCR ! Ext slot
185CS5ABCR_D: .long 0x24920400
186CS5BBCR_A: .long CS5BBCR ! USB controller
187CS5BBCR_D: .long 0x24920400
188CS6ABCR_A: .long CS6ABCR ! Ethernet
189CS6ABCR_D: .long 0x24920400
190
191CS0WCR_A: .long CS0WCR
192CS0WCR_D: .long 0x00000300
193CS2WCR_A: .long CS2WCR
194CS2WCR_D: .long 0x00000300
195CS4WCR_A: .long CS4WCR
196CS4WCR_D: .long 0x00000300
197CS5AWCR_A: .long CS5AWCR
198CS5AWCR_D: .long 0x00000300
199CS5BWCR_A: .long CS5BWCR
200CS5BWCR_D: .long 0x00000300
201CS6AWCR_A: .long CS6AWCR
202CS6AWCR_D: .long 0x00000300
203
204SDCR_A: .long SBSC_SDCR
205SDCR_D: .long 0x00020809
206SDWCR_A: .long SBSC_SDWCR
207SDWCR_D: .long 0x00164d0d
208SDPCR_A: .long SBSC_SDPCR
209SDPCR_D: .long 0x00000087
210RTCOR_A: .long SBSC_RTCOR
211RTCOR_D: .long 0xA55A0034
212RTCSR_A: .long SBSC_RTCSR
213RTCSR_D: .long 0xA55A0010
214SDMR3_A: .long 0xFE500180
c9935c99 215SDMR3_D: .long 0x0
6c0bbdcc
NI
216
217 .align 1
218
219SBSCR_D: .word 0x0040
220PSCR_D: .word 0x0000
221RWTCSR_D_1: .word 0xA507
222RWTCSR_D_2: .word 0xA507
223RWTCNT_D: .word 0x5A00
b5d10a13 224 .align 2
6c0bbdcc
NI
225
226SR_MASK_D: .long 0xEFFFFF0F