]> git.kernelconcepts.de Git - karo-tx-uboot.git/blob - board/renesas/ecovec/lowlevel_init.S
eeebdd245f784858679925df151a8ca3611720ff
[karo-tx-uboot.git] / board / renesas / ecovec / lowlevel_init.S
1 /*
2  * Copyright (C) 2011 Renesas Solutions Corp.
3  * Copyright (C) 2011 Nobuhiro Iwamatsu <nobuhiro.Iwamatsu.yj@renesas.com>
4  *
5  * board/renesas/ecovec/lowlevel_init.S
6  *
7  * SPDX-License-Identifier:     GPL-2.0+
8  */
9
10 #include <config.h>
11 #include <version.h>
12 #include <asm/processor.h>
13 #include <asm/macro.h>
14 #include <configs/ecovec.h>
15
16         .global lowlevel_init
17
18         .text
19         .align  2
20
21 lowlevel_init:
22
23         /* jump to 0xA0020000 if bit 1 of PVDR_A */
24         mov.l   PVDR_A, r1
25         mov.l   PVDR_D, r2
26         mov.b   @r1, r0
27         tst     r0, r2
28         bt      1f
29         mov.l   JUMP_A, r1
30         jmp     @r1
31         nop
32
33 1:
34         /* Disable watchdog */
35         write16 RWTCSR_A, RWTCSR_D
36
37         /* MMU Disable */
38         write32 MMUCR_A, MMUCR_D
39
40         /* Setup clocks */
41         write32 PLLCR_A, PLLCR_D
42         write32 FRQCRA_A, FRQCRA_D
43         write32 FRQCRB_A, FRQCRB_D
44
45         wait_timer TIMER_D
46
47         write32 MMSELR_A, MMSELR_D
48
49         /* Srtup BSC */
50         write32 CMNCR_A, CMNCR_D
51         write32 CS0BCR_A, CS0BCR_D
52         write32 CS0WCR_A, CS0WCR_D
53
54         wait_timer TIMER_D
55
56         /* Setup SDRAM */
57         write32 DBPDCNT0_A,     DBPDCNT0_D0
58         write32 DBCONF_A,       DBCONF_D
59         write32 DBTR0_A,        DBTR0_D
60         write32 DBTR1_A,        DBTR1_D
61         write32 DBTR2_A,        DBTR2_D
62         write32 DBTR3_A,        DBTR3_D
63         write32 DBKIND_A,       DBKIND_D
64         write32 DBCKECNT_A,     DBCKECNT_D
65
66         wait_timer TIMER_D
67
68         write32 DBCMDCNT_A,     DBCMDCNT_D0
69         write32 DBMRCNT_A, DBMRCNT_D0
70         write32 DBMRCNT_A, DBMRCNT_D1
71         write32 DBMRCNT_A, DBMRCNT_D2
72         write32 DBMRCNT_A, DBMRCNT_D3
73         write32 DBCMDCNT_A, DBCMDCNT_D0
74         write32 DBCMDCNT_A, DBCMDCNT_D1
75         write32 DBCMDCNT_A, DBCMDCNT_D1
76         write32 DBMRCNT_A, DBMRCNT_D4
77         write32 DBMRCNT_A, DBMRCNT_D5
78         write32 DBMRCNT_A, DBMRCNT_D6
79
80         wait_timer TIMER_D
81
82         write32 DBEN_A, DBEN_D
83         write32 DBRFPDN1_A, DBRFPDN1_D
84         write32 DBRFPDN2_A, DBRFPDN2_D
85         write32 DBCMDCNT_A, DBCMDCNT_D0
86
87
88         /* Dummy read */
89         mov.l DUMMY_A ,r1
90         synco
91         mov.l @r1, r0
92         synco
93
94         mov.l SDRAM_A ,r1
95         synco
96         mov.l @r1, r0
97         synco
98         wait_timer TIMER_D
99
100         add #4, r1
101         synco
102         mov.l @r1, r0
103         synco
104         wait_timer TIMER_D
105
106         add #4, r1
107         synco
108         mov.l @r1, r0
109         synco
110         wait_timer TIMER_D
111
112         add #4, r1
113         synco
114         mov.l @r1, r0
115         synco
116         wait_timer TIMER_D
117
118         write32 DBCMDCNT_A, DBCMDCNT_D0
119         write32 DBCMDCNT_A, DBCMDCNT_D1
120         write32 DBPDCNT0_A, DBPDCNT0_D1
121         write32 DBRFPDN0_A, DBRFPDN0_D
122
123         wait_timer TIMER_D
124
125         write32 CCR_A, CCR_D
126
127         stc     sr, r0
128         mov.l   SR_MASK_D, r1
129         and     r1, r0
130         ldc     r0, sr
131
132         rts
133
134         .align  2
135
136 PVDR_A:         .long   PVDR
137 PVDR_D:         .long   0x00000001
138 JUMP_A:         .long   CONFIG_ECOVEC_ROMIMAGE_ADDR
139 TIMER_D:        .long   64
140 RWTCSR_A:       .long   RWTCSR
141 RWTCSR_D:       .long   0x0000A507
142 MMUCR_A:        .long   MMUCR
143 MMUCR_D:        .long   0x00000004
144 PLLCR_A:        .long   PLLCR
145 PLLCR_D:        .long   0x00004000
146 FRQCRA_A:       .long   FRQCRA
147 FRQCRA_D:       .long   0x8E003508
148 FRQCRB_A:       .long   FRQCRB
149 FRQCRB_D:       .long   0x0
150 MMSELR_A:       .long   MMSELR
151 MMSELR_D:       .long   0xA5A50000
152 CMNCR_A:        .long   CMNCR
153 CMNCR_D:        .long   0x00000013
154 CS0BCR_A:       .long   CS0BCR
155 CS0BCR_D:       .long   0x11110400
156 CS0WCR_A:       .long   CS0WCR
157 CS0WCR_D:       .long   0x00000440
158 DBPDCNT0_A:     .long   DBPDCNT0
159 DBPDCNT0_D0: .long      0x00000181
160 DBPDCNT0_D1: .long      0x00000080
161 DBCONF_A:       .long   DBCONF
162 DBCONF_D:       .long   0x015B0002
163 DBTR0_A:        .long   DBTR0
164 DBTR0_D:        .long   0x03061502
165 DBTR1_A:        .long   DBTR1
166 DBTR1_D:        .long   0x02020102
167 DBTR2_A:        .long   DBTR2
168 DBTR2_D:        .long   0x01090305
169 DBTR3_A:        .long   DBTR3
170 DBTR3_D:        .long   0x00000002
171 DBKIND_A:       .long   DBKIND
172 DBKIND_D:       .long   0x00000005
173 DBCKECNT_A:     .long   DBCKECNT
174 DBCKECNT_D:     .long   0x00000001
175 DBCMDCNT_A:     .long   DBCMDCNT
176 DBCMDCNT_D0:.long       0x2
177 DBCMDCNT_D1:.long       0x4
178 DBMRCNT_A:      .long   DBMRCNT
179 DBMRCNT_D0:     .long   0x00020000
180 DBMRCNT_D1:     .long   0x00030000
181 DBMRCNT_D2:     .long   0x00010040
182 DBMRCNT_D3:     .long   0x00000532
183 DBMRCNT_D4:     .long   0x00000432
184 DBMRCNT_D5:     .long   0x000103C0
185 DBMRCNT_D6:     .long   0x00010040
186 DBEN_A:         .long   DBEN
187 DBEN_D:         .long   0x01
188 DBRFPDN0_A:     .long   DBRFPDN0
189 DBRFPDN1_A:     .long   DBRFPDN1
190 DBRFPDN2_A:     .long   DBRFPDN2
191 DBRFPDN0_D:     .long   0x00010000
192 DBRFPDN1_D:     .long   0x00000613
193 DBRFPDN2_D:     .long   0x238C003A
194 SDRAM_A:        .long   0xa8000000
195 DUMMY_A:        .long   0x0c400000
196 CCR_A:          .long   CCR
197 CCR_D:          .long   0x0000090B
198 SR_MASK_D:      .long   0xEFFFFF0F