summaryrefslogtreecommitdiff
path: root/board/renesas/rsk7264/lowlevel_init.S
blob: 1a7d27d1797f7ff3b82f9ad5efbc1e5070309ae5 (plain)
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
/*
 * Copyright (C) 2011 Renesas Electronics Europe Ltd.
 * Copyright (C) 2008 Renesas Solutions Corp.
 * Copyright (C) 2008 Nobuhiro Iwamatsu
 *
 * Based on board/renesas/rsk7203/lowlevel_init.S
 *
 * SPDX-License-Identifier:	GPL-2.0+
 */
#include <config.h>
#include <version.h>

#include <asm/processor.h>
#include <asm/macro.h>

	.global	lowlevel_init

	.text
	.align	2

lowlevel_init:
	/* Cache setting */
	write32	CCR1_A ,CCR1_D

	/* io_set_cpg */
	write8 STBCR3_A, STBCR3_D
	write8 STBCR4_A, STBCR4_D
	write8 STBCR5_A, STBCR5_D
	write8 STBCR6_A, STBCR6_D
	write8 STBCR7_A, STBCR7_D
	write8 STBCR8_A, STBCR8_D

	/* ConfigurePortPins */

	/* Leaving LED1 ON for sanity test */
	write16 PJCR1_A, PJCR1_D1
	write16 PJCR2_A, PJCR2_D
	write16 PJIOR0_A, PJIOR0_D1
	write16 PJDR0_A, PJDR0_D
	write16 PJPR0_A, PJPR0_D

	/* Configure EN_PIN & RS_PIN */
	write16 PGCR2_A, PGCR2_D
	write16 PGIOR0_A, PGIOR0_D

	/* Configure the port pins connected to UART */
	write16 PJCR1_A, PJCR1_D2
	write16 PJIOR0_A, PJIOR0_D2

	/* Configure Operating Frequency */
	write16	WTCSR_A, WTCSR_D0
	write16	WTCSR_A, WTCSR_D1
	write16	WTCNT_A, WTCNT_D

	/* Control of RESBANK */
	write16 IBNR_A, IBNR_D
	/* Enable SCIF3 module */
	write16 STBCR4_A, STBCR4_D

	/* Set clock mode*/
	write16	FRQCR_A, FRQCR_D

	/* Configure Bus And Memory */
init_bsc_cs0:

pfc_settings:
	write16 PCCR2_A, PCCR2_D
	write16 PCCR1_A, PCCR1_D
	write16 PCCR0_A, PCCR0_D

	write16 PBCR0_A, PBCR0_D
	write16 PBCR1_A, PBCR1_D
	write16 PBCR2_A, PBCR2_D
	write16 PBCR3_A, PBCR3_D
	write16 PBCR4_A, PBCR4_D
	write16 PBCR5_A, PBCR5_D

	write16 PDCR0_A, PDCR0_D
	write16 PDCR1_A, PDCR1_D
	write16 PDCR2_A, PDCR2_D
	write16 PDCR3_A, PDCR3_D

	write32 CS0WCR_A, CS0WCR_D
	write32 CS0BCR_A, CS0BCR_D

init_bsc_cs2:
	write16	PJCR0_A, PJCR0_D
	write32	CS2WCR_A, CS2WCR_D

init_sdram:
	write32	CS3BCR_A, CS3BCR_D
	write32	CS3WCR_A, CS3WCR_D
	write32	SDCR_A, SDCR_D
	write32	RTCOR_A, RTCOR_D
	write32	RTCSR_A, RTCSR_D

	/* 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
FRQCR_A:	.long 0xFFFE0010
FRQCR_D:	.word 0x1003
.align 2
STBCR3_A:	.long 0xFFFE0408
STBCR3_D:	.long 0x00000002
STBCR4_A:	.long 0xFFFE040C
STBCR4_D:	.word 0x0000
.align 2
STBCR5_A:	.long 0xFFFE0410
STBCR5_D:	.long 0x00000010
STBCR6_A:	.long 0xFFFE0414
STBCR6_D:	.long 0x00000002
STBCR7_A:	.long 0xFFFE0418
STBCR7_D:	.long 0x0000002A
STBCR8_A:	.long 0xFFFE041C
STBCR8_D:	.long 0x0000007E
PJCR1_A:	.long 0xFFFE390C
PJCR1_D1:	.word 0x0000
PJCR1_D2:	.word 0x0022
PJCR2_A:	.long 0xFFFE390A
PJCR2_D:	.word 0x0000
.align 2
PJIOR0_A:	.long 0xFFFE3912
PJIOR0_D1:	.word 0x0FC0
PJIOR0_D2:	.word 0x0FE0
PJDR0_A:	.long 0xFFFE3916
PJDR0_D:	.word 0x0FBF
.align 2
PJPR0_A:	.long 0xFFFE391A
PJPR0_D:	.long 0x00000FBF
PGCR2_A:	.long 0xFFFE38CA
PGCR2_D:	.word 0x0000
.align 2
PGIOR0_A:	.long 0xFFFE38D2
PGIOR0_D:	.word 0x03F0
.align 2
WTCSR_A:	.long 0xFFFE0000
WTCSR_D0:	.word 0x0000
WTCSR_D1:	.word 0x0000
WTCNT_A:	.long 0xFFFE0002
WTCNT_D:	.word 0x0000
.align 2
PCCR0_A:	.long 0xFFFE384E
PDCR0_A:	.long 0xFFFE386E
PDCR1_A:	.long 0xFFFE386C
PDCR2_A:	.long 0xFFFE386A
PDCR3_A:	.long 0xFFFE3868
PBCR0_A:	.long 0xFFFE382E
PBCR1_A:	.long 0xFFFE382C
PBCR2_A:	.long 0xFFFE382A
PBCR3_A:	.long 0xFFFE3828
PBCR4_A:	.long 0xFFFE3826
PBCR5_A:	.long 0xFFFE3824
PCCR0_D:	.word 0x1111
PDCR0_D:	.word 0x1111
PDCR1_D:	.word 0x1111
PDCR2_D:	.word 0x1111
PDCR3_D:	.word 0x1111
PBCR0_D:	.word 0x1110
PBCR1_D:	.word 0x1111
PBCR2_D:	.word 0x1111
PBCR3_D:	.word 0x1111
PBCR4_D:	.word 0x1111
PBCR5_D:	.word 0x0111
.align 2
CS0WCR_A:	.long 0xFFFC0028
CS0WCR_D:	.long 0x00000B41
CS0BCR_A:	.long 0xFFFC0004
CS0BCR_D:	.long 0x10000400
PJCR0_A:	.long 0xFFFE390E
PJCR0_D:	.word 0x3300
.align 2
CS2WCR_A:	.long 0xFFFC0030
CS2WCR_D:	.long 0x00000B01
PCCR2_A:	.long 0xFFFE384A
PCCR2_D:	.word 0x0001
.align 2
PCCR1_A:	.long 0xFFFE384C
PCCR1_D:	.word 0x1111
.align 2
CS3BCR_A:	.long 0xFFFC0010
CS3BCR_D:	.long 0x00004400
CS3WCR_A:	.long 0xFFFC0034
CS3WCR_D:	.long 0x0000288A
SDCR_A:		.long 0xFFFC004C
SDCR_D:		.long 0x00000812
RTCOR_A:	.long 0xFFFC0058
RTCOR_D:	.long 0xA55A0046
RTCSR_A:	.long 0xFFFC0050
RTCSR_D:	.long 0xA55A0010
IBNR_A:		.long 0xFFFE080E
IBNR_D:	.word 0x0000
.align 2
SDRAM_MODE:	.long 0xFFFC5040
REPEAT_D:	.long 0x00000085