drime3: ex1: enable all clocks
[kernel/u-boot.git] / board / samsung / ex1 / lowlevel_init.S
1
2 #include <config.h>
3 #include <version.h>
4 #include <asm/arch/cpu.h>
5
6 _TEXT_BASE:
7         .word   TEXT_BASE
8
9         .globl lowlevel_init
10 lowlevel_init:
11         mov     r11, lr
12
13 #ifndef CONFIG_ONENAND_IPL
14 set_drvier_current:
15         ldr     r1, =0x900D0078
16         ldr     r0, =0x43434343
17         str     r0, [r1]
18         ldr     r1, =0x900D007C
19         ldr     r0, =0x43434343
20         str     r0, [r1]
21         ldr     r1, =0x900D0080
22         ldr     r0, =0x43434343
23         str     r0, [r1]
24         ldr     r1, =0x900D0084
25         ldr     r0, =0x43434343
26         str     r0, [r1]
27         ldr     r1, =0x900D0088
28         ldr     r0, =0x43434343
29         str     r0, [r1]
30         ldr     r1, =0x900D008C
31         ldr     r0, =0x43434343
32         str     r0, [r1]
33         ldr     r1, =0x900D0090
34         ldr     r0, =0x43434343
35         str     r0, [r1]
36         ldr     r1, =0x900D0094
37         ldr     r0, =0x43434343
38         str     r0, [r1]
39         ldr     r1, =0x900D0098
40         ldr     r0, =0x43434343
41         str     r0, [r1]
42         ldr     r1, =0x900D009C
43         ldr     r0, =0x43434343
44         str     r0, [r1]
45         ldr     r1, =0x900D00A0
46         ldr     r0, =0x43434343
47         str     r0, [r1]
48         ldr     r1, =0x900D00A4
49         ldr     r0, =0x43434343
50         str     r0, [r1]
51         ldr     r1, =0x900D00A8
52         ldr     r0, =0x50504343
53         str     r0, [r1]
54
55 set_system_clock:
56         ldr     r1, =0x90090000
57         ldr     r0, =0x00003000
58         str     r0, [r1]
59         ldr     r1, =0x90090008
60         ldr     r0, =0xD6070814
61         str     r0, [r1]
62
63 set_clock_gating:
64         /* Enable All Clocks */
65         ldr     r1, =0x90070000
66
67         /* AUDIO */
68         ldr     r0, =0x1
69         str     r0, [r1, #0x400]
70
71         /* I2C 0-2 */
72         ldr     r0, =0x7
73         str     r0, [r1, #0x40C]
74
75         /* SDMMC/SDIO */
76         ldr     r0, =0x3
77         str     r0, [r1, #0x410]
78
79         /* UART 0-1 */
80         ldr     r0, =0x3
81         str     r0, [r1, #0x414]
82
83         /* SPI 0-7 */
84         ldr     r0, =0xff
85         str     r0, [r1, #0x418]
86
87         /* PWM 0-2 */
88         ldr     r0, =0x7
89         str     r0, [r1, #0x41C]
90
91         /* GPIO 0-10 */
92         ldr     r0, =0x7ff
93         str     r0, [r1, #0x420]
94 #endif
95
96 #ifdef CONFIG_ONENAND_IPL
97 set_system_memory:
98         /*
99          * register usage
100          * r1 : DRAM base (???)
101          */
102         ldr     r1, =0x80000000
103
104         /* DQS Offset Value */
105         ldr     r0, =0x58585858
106         str     r0, [r1, #0x20]
107         ldr     r0, =0x03030303
108         str     r0, [r1, #0x24]
109
110         /* DDRPHY DLL Lock */
111         ldr     r0, =0x200000F6
112         str     r0, [r1, #0x1C]
113         ldr     r0, =0x0010100A
114         str     r0, [r1, #0x18]
115         ldr     r0, =0x0010100B
116         str     r0, [r1, #0x18]
117
118 #if 1
119         mov     r2, #0x10000
120 1:      subs    r2, r2, #1
121         bne     1b
122 #endif
123
124 #if 1
125         ldr     r0, =0x200000F6
126         str     r0, [r1, #0x1C]
127 #endif
128
129         /* DDR ZQ Calibration */
130         ldr     r0, =0xE3855731
131         str     r0, [r1, #0x44]
132         ldr     r0, =0xE3855733
133         str     r0, [r1, #0x44]
134
135 #if 0
136         mov     r2, #0x10000
137 1:      subs    r2, r2, #1
138         bne     1b
139 #endif
140
141         /* LPCON setting for 333MHz */
142         ldr     r0, =0x3FFF205A
143         str     r0, [r1, #0x0]
144         ldr     r0, =0x00202440
145         str     r0, [r1, #0x4]
146         ldr     r0, =0xC0F01313
147         str     r0, [r1, #0x8]
148         ldr     r0, =0xC0F00313
149         str     r0, [r1, #0xC]
150         ldr     r0, =0xFF000000
151         str     r0, [r1, #0x14]
152         ldr     r0, =0xFFFF00FF
153         str     r0, [r1, #0x28]
154         ldr     r0, =0x00000A28
155         str     r0, [r1, #0x30]
156         ldr     r0, =0x2B46550F
157         str     r0, [r1, #0x34]
158         ldr     r0, =0x35350304
159         str     r0, [r1, #0x38]
160         ldr     r0, =0x11C80232
161         str     r0, [r1, #0x3C]
162
163         mov     r2, #0x10000
164 1:      subs    r2, r2, #1
165         bne     1b
166
167         /* Memory Device Initialization */
168         ldr     r0, =0x07000000
169         str     r0, [r1, #0x10]
170
171 #if 1
172         mov     r2, #0x10000
173 1:      subs    r2, r2, #1
174         bne     1b
175 #endif
176
177         ldr     r0, =0x01000000
178         str     r0, [r1, #0x10]
179
180 #if 0
181         mov     r2, #0x10000
182 1:      subs    r2, r2, #1
183         bne     1b
184 #endif
185
186         ldr     r0, =0x00020000
187         str     r0, [r1, #0x10]
188         ldr     r0, =0x00030000
189         str     r0, [r1, #0x10]
190         ldr     r0, =0x00010000
191         str     r0, [r1, #0x10]
192         ldr     r0, =0x00000952
193         str     r0, [r1, #0x10]
194
195         mov     r2, #0x10000
196 1:      subs    r2, r2, #1
197         bne     1b
198
199         ldr     r0, =0x01000000
200         str     r0, [r1, #0x10]
201         str     r0, [r1, #0x10]
202         ldr     r0, =0x05000000
203         str     r0, [r1, #0x10]
204         str     r0, [r1, #0x10]
205         ldr     r0, =0x00000852
206         str     r0, [r1, #0x10]
207         ldr     r0, =0x00010380
208         str     r0, [r1, #0x10]
209         ldr     r0, =0x00010000
210         str     r0, [r1, #0x10]
211
212         /* LPCON normal refresh start */
213         ldr     r0, =0x3FFF207A
214         str     r0, [r1]
215
216 #if 0
217         mov     r2, #0x10000
218 1:      subs    r2, r2, #1
219         bne     1b
220 #endif
221 #endif
222
223 #ifndef CONFIG_ONENAND_IPL
224 set_gpio:
225         ldr     r1, =0x90040000
226         ldr     r0, =0x0
227         str     r0, [r1]
228         ldr     r1, =0x90040004
229         ldr     r0, =0x1
230         str     r0, [r1]
231 #endif
232
233 done:
234         mov     lr, r11
235         mov     pc, lr