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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
|
/*
* Copyright (C) 2008 Nobuhiro Iwamatsu
* Copyright (C) 2008 Renesas Solutions Corp.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of
* the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston,
* MA 02111-1307 USA
*/
#include <config.h>
#include <version.h>
#include <asm/processor.h>
.global lowlevel_init
.text
.align 2
lowlevel_init:
/* Cache setting */
mov.l CCR1_A, r1
mov.l CCR1_D, r0
mov.l r0, @r1
/* ConfigurePortPins */
mov.l PECRL3_A, r1
mov.l PECRL3_D, r0
mov.w r0, @r1
mov.l PCCRL4_A, r1
mov.l PCCRL4_D0, r0
mov.w r0, @r1
mov.l PECRL4_A, r1
mov.l PECRL4_D0, r0
mov.w r0, @r1
mov.l PEIORL_A, r1
mov.l PEIORL_D0, r0
mov.w r0, @r1
mov.l PCIORL_A, r1
mov.l PCIORL_D, r0
mov.w r0, @r1
mov.l PFCRH2_A, r1
mov.l PFCRH2_D, r0
mov.w r0, @r1
mov.l PFCRH3_A, r1
mov.l PFCRH3_D, r0
mov.w r0, @r1
mov.l PFCRH1_A, r1
mov.l PFCRH1_D, r0
mov.w r0, @r1
mov.l PFIORH_A, r1
mov.l PFIORH_D, r0
mov.w r0, @r1
mov.l PECRL1_A, r1
mov.l PECRL1_D0, r0
mov.w r0, @r1
mov.l PEIORL_A, r1
mov.l PEIORL_D1, r0
mov.w r0, @r1
/* Configure Operating Frequency */
mov.l WTCSR_A, r1
mov.l WTCSR_D0, r0
mov.w r0, @r1
mov.l WTCSR_A, r1
mov.l WTCSR_D1, r0
mov.w r0, @r1
mov.l WTCNT_A, r1
mov.l WTCNT_D, r0
mov.w r0, @r1
/* Set clock mode*/
mov.l FRQCR_A, r1
mov.l FRQCR_D, r0
mov.w r0, @r1
/* Configure Bus And Memory */
init_bsc_cs0:
mov.l PCCRL4_A, r1
mov.l PCCRL4_D1, r0
mov.w r0, @r1
mov.l PECRL1_A, r1
mov.l PECRL1_D1, r0
mov.w r0, @r1
mov.l CMNCR_A, r1
mov.l CMNCR_D, r0
mov.l r0, @r1
mov.l SC0BCR_A, r1
mov.l SC0BCR_D, r0
mov.l r0, @r1
mov.l CS0WCR_A, r1
mov.l CS0WCR_D, r0
mov.l r0, @r1
init_bsc_cs1:
mov.l PECRL4_A, r1
mov.l PECRL4_D1, r0
mov.w r0, @r1
mov.l CS1WCR_A, r1
mov.l CS1WCR_D, r0
mov.l r0, @r1
init_sdram:
mov.l PCCRL2_A, r1
mov.l PCCRL2_D, r0
mov.w r0, @r1
mov.l PCCRL4_A, r1
mov.l PCCRL4_D2, r0
mov.w r0, @r1
mov.l PCCRL1_A, r1
mov.l PCCRL1_D, r0
mov.w r0, @r1
mov.l PCCRL3_A, r1
mov.l PCCRL3_D, r0
mov.w r0, @r1
mov.l CS3BCR_A, r1
mov.l CS3BCR_D, r0
mov.l r0, @r1
mov.l CS3WCR_A, r1
mov.l CS3WCR_D, r0
mov.l r0, @r1
mov.l SDCR_A, r1
mov.l SDCR_D, r0
mov.l r0, @r1
mov.l RTCOR_A, r1
mov.l RTCOR_D, r0
mov.l r0, @r1
mov.l RTCSR_A, r1
mov.l RTCSR_D, r0
mov.l r0, @r1
/* wait 200us */
mov.l REPEAT_D, r3
mov #0, r2
repeat0:
add #1, r2
cmp/hs r3, r2
bf repeat0
nop
mov.l SDRAM_MODE, r1
mov #0, r0
mov.l r0, @r1
nop
rts
.align 4
CCR1_A: .long CCR1
CCR1_D: .long 0x0000090B
PCCRL4_A: .long 0xFFFE3910
PCCRL4_D0: .long 0x00000000
PECRL4_A: .long 0xFFFE3A10
PECRL4_D0: .long 0x00000000
PECRL3_A: .long 0xFFFE3A12
PECRL3_D: .long 0x00000000
PEIORL_A: .long 0xFFFE3A06
PEIORL_D0: .long 0x00001C00
PEIORL_D1: .long 0x00001C02
PCIORL_A: .long 0xFFFE3906
PCIORL_D: .long 0x00004000
PFCRH2_A: .long 0xFFFE3A8C
PFCRH2_D: .long 0x00000000
PFCRH3_A: .long 0xFFFE3A8A
PFCRH3_D: .long 0x00000000
PFCRH1_A: .long 0xFFFE3A8E
PFCRH1_D: .long 0x00000000
PFIORH_A: .long 0xFFFE3A84
PFIORH_D: .long 0x00000729
PECRL1_A: .long 0xFFFE3A16
PECRL1_D0: .long 0x00000033
WTCSR_A: .long 0xFFFE0000
WTCSR_D0: .long 0x0000A518
WTCSR_D1: .long 0x0000A51D
WTCNT_A: .long 0xFFFE0002
WTCNT_D: .long 0x00005A84
FRQCR_A: .long 0xFFFE0010
FRQCR_D: .long 0x00000104
PCCRL4_D1: .long 0x00000010
PECRL1_D1: .long 0x00000133
CMNCR_A: .long 0xFFFC0000
CMNCR_D: .long 0x00001810
SC0BCR_A: .long 0xFFFC0004
SC0BCR_D: .long 0x10000400
CS0WCR_A: .long 0xFFFC0028
CS0WCR_D: .long 0x00000B41
PECRL4_D1: .long 0x00000100
CS1WCR_A: .long 0xFFFC002C
CS1WCR_D: .long 0x00000B01
PCCRL4_D2: .long 0x00000011
PCCRL3_A: .long 0xFFFE3912
PCCRL3_D: .long 0x00000011
PCCRL2_A: .long 0xFFFE3914
PCCRL2_D: .long 0x00001111
PCCRL1_A: .long 0xFFFE3916
PCCRL1_D: .long 0x00001010
PDCRL4_A: .long 0xFFFE3990
PDCRL4_D: .long 0x00000011
PDCRL3_A: .long 0xFFFE3992
PDCRL3_D: .long 0x00000011
PDCRL2_A: .long 0xFFFE3994
PDCRL2_D: .long 0x00001111
PDCRL1_A: .long 0xFFFE3996
PDCRL1_D: .long 0x00001000
CS3BCR_A: .long 0xFFFC0010
CS3BCR_D: .long 0x00004400
CS3WCR_A: .long 0xFFFC0034
CS3WCR_D: .long 0x00002892
SDCR_A: .long 0xFFFC004C
SDCR_D: .long 0x00000809
RTCOR_A: .long 0xFFFC0058
RTCOR_D: .long 0xA55A0041
RTCSR_A: .long 0xFFFC0050
RTCSR_D: .long 0xa55a0010
STBCR3_A: .long 0xFFFE0408
STBCR3_D: .long 0x00000000
STBCR4_A: .long 0xFFFE040C
STBCR4_D: .long 0x00000008
STBCR5_A: .long 0xFFFE0410
STBCR5_D: .long 0x00000000
STBCR6_A: .long 0xFFFE0414
STBCR6_D: .long 0x00000002
SDRAM_MODE: .long 0xFFFC5040
REPEAT_D: .long 0x00009C40
|