]> git.kernelconcepts.de Git - karo-tx-uboot.git/blob - board/freescale/mx53_evk/flash_header.S
imported Ka-Ro specific additions to U-Boot 2009.08 for TX28
[karo-tx-uboot.git] / board / freescale / mx53_evk / flash_header.S
1 /*
2  * Copyright (C) 2010 Freescale Semiconductor, Inc.
3  *
4  * This program is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU General Public License as
6  * published by the Free Software Foundation; either version 2 of
7  * the License, or (at your option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program; if not, write to the Free Software
16  * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
17  * MA 02111-1307 USA
18  */
19
20 #include <config.h>
21 #include <asm/arch/mx53.h>
22
23 #ifdef  CONFIG_FLASH_HEADER
24 #ifndef CONFIG_FLASH_HEADER_OFFSET
25 # error "Must define the offset of flash header"
26 #endif
27
28 #define CPU_2_BE_32(l) \
29        ((((l) & 0x000000FF) << 24) | \
30         (((l) & 0x0000FF00) << 8)  | \
31         (((l) & 0x00FF0000) >> 8)  | \
32         (((l) & 0xFF000000) >> 24))
33
34 #define MXC_DCD_ITEM(i, addr, val)   \
35 dcd_node_##i:                        \
36         .word CPU_2_BE_32(addr) ;     \
37         .word CPU_2_BE_32(val)  ;     \
38
39 .section ".text.flasheader", "x"
40         b       _start
41         .org    CONFIG_FLASH_HEADER_OFFSET
42 ivt_header:       .word 0x402000D1 /* Tag=0xD1, Len=0x0020, Ver=0x40 */
43 app_code_jump_v:  .word _start
44 reserv1:          .word 0x0
45 dcd_ptr:          .word dcd_hdr
46 boot_data_ptr:    .word boot_data
47 self_ptr:         .word ivt_header
48 app_code_csf:     .word 0x0
49 reserv2:          .word 0x0
50
51 boot_data:        .word 0x77800000
52 image_len:        .word _end - TEXT_BASE
53 plugin:           .word 0x0
54
55 #if defined(CONFIG_MX53_EVK)
56 dcd_hdr:          .word 0x400802D2 /* Tag=0xD2, Len=64*8 + 4 + 4, Ver=0x40 */
57 write_dcd_cmd:    .word 0x040402CC /* Tag=0xCC, Len=64*8 + 4, Param=4 */
58
59 /* DCD */
60 MXC_DCD_ITEM(1, IOMUXC_BASE_ADDR + 0x554, 0x00380000)
61 MXC_DCD_ITEM(2, IOMUXC_BASE_ADDR + 0x558, 0x00380040)
62 MXC_DCD_ITEM(3, IOMUXC_BASE_ADDR + 0x560, 0x00380000)
63 MXC_DCD_ITEM(4, IOMUXC_BASE_ADDR + 0x564, 0x00380040)
64 MXC_DCD_ITEM(5, IOMUXC_BASE_ADDR + 0x568, 0x00380040)
65 MXC_DCD_ITEM(6, IOMUXC_BASE_ADDR + 0x570, 0x00200000)
66 MXC_DCD_ITEM(7, IOMUXC_BASE_ADDR + 0x574, 0x00380000)
67 MXC_DCD_ITEM(8, IOMUXC_BASE_ADDR + 0x578, 0x00200000)
68 MXC_DCD_ITEM(9, IOMUXC_BASE_ADDR + 0x57c, 0x00380040)
69 MXC_DCD_ITEM(10, IOMUXC_BASE_ADDR + 0x580, 0x00380040)
70 MXC_DCD_ITEM(11, IOMUXC_BASE_ADDR + 0x584, 0x00380000)
71 MXC_DCD_ITEM(12, IOMUXC_BASE_ADDR + 0x588, 0x00380000)
72 MXC_DCD_ITEM(13, IOMUXC_BASE_ADDR + 0x590, 0x00380040)
73 MXC_DCD_ITEM(14, IOMUXC_BASE_ADDR + 0x594, 0x00380000)
74 MXC_DCD_ITEM(15, IOMUXC_BASE_ADDR + 0x6f0, 0x00380000)
75 MXC_DCD_ITEM(16, IOMUXC_BASE_ADDR + 0x6f4, 0x00000200)
76 MXC_DCD_ITEM(17, IOMUXC_BASE_ADDR + 0x6fc, 0x00000000)
77 MXC_DCD_ITEM(18, IOMUXC_BASE_ADDR + 0x714, 0x00000000)
78 MXC_DCD_ITEM(19, IOMUXC_BASE_ADDR + 0x718, 0x00380000)
79 MXC_DCD_ITEM(20, IOMUXC_BASE_ADDR + 0x71c, 0x00380000)
80 MXC_DCD_ITEM(21, IOMUXC_BASE_ADDR + 0x720, 0x00380000)
81 MXC_DCD_ITEM(22, IOMUXC_BASE_ADDR + 0x724, 0x06000000)
82 MXC_DCD_ITEM(23, IOMUXC_BASE_ADDR + 0x728, 0x00380000)
83 MXC_DCD_ITEM(24, IOMUXC_BASE_ADDR + 0x72c, 0x00380000)
84 MXC_DCD_ITEM(25, ESDCTL_BASE_ADDR + 0x088, 0x2b2f3031)
85 MXC_DCD_ITEM(26, ESDCTL_BASE_ADDR + 0x090, 0x40363333)
86 MXC_DCD_ITEM(27, ESDCTL_BASE_ADDR + 0x098, 0x00000f00)
87 MXC_DCD_ITEM(28, ESDCTL_BASE_ADDR + 0x0f8, 0x00000800)
88 MXC_DCD_ITEM(29, ESDCTL_BASE_ADDR + 0x07c, 0x01310132)
89 MXC_DCD_ITEM(30, ESDCTL_BASE_ADDR + 0x080, 0x0133014b)
90 MXC_DCD_ITEM(31, ESDCTL_BASE_ADDR + 0x018, 0x000016d0)
91 MXC_DCD_ITEM(32, ESDCTL_BASE_ADDR + 0x000, 0xc4110000)
92 MXC_DCD_ITEM(33, ESDCTL_BASE_ADDR + 0x00c, 0x4d5122d2)
93 MXC_DCD_ITEM(34, ESDCTL_BASE_ADDR + 0x010, 0x92d18a22)
94 MXC_DCD_ITEM(35, ESDCTL_BASE_ADDR + 0x014, 0x00c70092)
95 MXC_DCD_ITEM(36, ESDCTL_BASE_ADDR + 0x02c, 0x000026d2)
96 MXC_DCD_ITEM(37, ESDCTL_BASE_ADDR + 0x030, 0x009f000e)
97 MXC_DCD_ITEM(38, ESDCTL_BASE_ADDR + 0x008, 0x12272000)
98 MXC_DCD_ITEM(39, ESDCTL_BASE_ADDR + 0x004, 0x00030012)
99 MXC_DCD_ITEM(40, ESDCTL_BASE_ADDR + 0x01c, 0x04008010)
100 MXC_DCD_ITEM(41, ESDCTL_BASE_ADDR + 0x01c, 0x00008032)
101 MXC_DCD_ITEM(42, ESDCTL_BASE_ADDR + 0x01c, 0x00008033)
102 MXC_DCD_ITEM(43, ESDCTL_BASE_ADDR + 0x01c, 0x00008031)
103 MXC_DCD_ITEM(44, ESDCTL_BASE_ADDR + 0x01c, 0x0b5280b0)
104 MXC_DCD_ITEM(45, ESDCTL_BASE_ADDR + 0x01c, 0x04008010)
105 MXC_DCD_ITEM(46, ESDCTL_BASE_ADDR + 0x01c, 0x00008020)
106 MXC_DCD_ITEM(47, ESDCTL_BASE_ADDR + 0x01c, 0x00008020)
107 MXC_DCD_ITEM(48, ESDCTL_BASE_ADDR + 0x01c, 0x0a528030)
108 MXC_DCD_ITEM(49, ESDCTL_BASE_ADDR + 0x01c, 0x03c68031)
109 MXC_DCD_ITEM(50, ESDCTL_BASE_ADDR + 0x01c, 0x00468031)
110 MXC_DCD_ITEM(51, ESDCTL_BASE_ADDR + 0x01c, 0x04008018)
111 MXC_DCD_ITEM(52, ESDCTL_BASE_ADDR + 0x01c, 0x0000803a)
112 MXC_DCD_ITEM(53, ESDCTL_BASE_ADDR + 0x01c, 0x0000803b)
113 MXC_DCD_ITEM(54, ESDCTL_BASE_ADDR + 0x01c, 0x00008039)
114 MXC_DCD_ITEM(55, ESDCTL_BASE_ADDR + 0x01c, 0x0b528138)
115 MXC_DCD_ITEM(56, ESDCTL_BASE_ADDR + 0x01c, 0x04008018)
116 MXC_DCD_ITEM(57, ESDCTL_BASE_ADDR + 0x01c, 0x00008028)
117 MXC_DCD_ITEM(58, ESDCTL_BASE_ADDR + 0x01c, 0x00008028)
118 MXC_DCD_ITEM(59, ESDCTL_BASE_ADDR + 0x01c, 0x0a528038)
119 MXC_DCD_ITEM(60, ESDCTL_BASE_ADDR + 0x01c, 0x03c68039)
120 MXC_DCD_ITEM(61, ESDCTL_BASE_ADDR + 0x01c, 0x00468039)
121 MXC_DCD_ITEM(62, ESDCTL_BASE_ADDR + 0x020, 0x00005800)
122 MXC_DCD_ITEM(63, ESDCTL_BASE_ADDR + 0x058, 0x00033337)
123 MXC_DCD_ITEM(64, ESDCTL_BASE_ADDR + 0x01c, 0x00000000)
124
125 #elif defined(CONFIG_MX53_ARM2) /*ARM2 board*/
126 dcd_hdr:          .word 0x400002D2 /* Tag=0xD2, Len=63*8 + 4 + 4, Ver=0x40 */
127 write_dcd_cmd:    .word 0x04FC01CC /* Tag=0xCC, Len=63*8 + 4, Param=4 */
128
129 /* DCD */
130 MXC_DCD_ITEM(1, IOMUXC_BASE_ADDR + 0x554, 0x00380000)
131 MXC_DCD_ITEM(2, IOMUXC_BASE_ADDR + 0x558, 0x00380040)
132 MXC_DCD_ITEM(3, IOMUXC_BASE_ADDR + 0x560, 0x00380000)
133 MXC_DCD_ITEM(4, IOMUXC_BASE_ADDR + 0x564, 0x00380040)
134 MXC_DCD_ITEM(5, IOMUXC_BASE_ADDR + 0x568, 0x00380040)
135 MXC_DCD_ITEM(6, IOMUXC_BASE_ADDR + 0x570, 0x00380000)
136 MXC_DCD_ITEM(7, IOMUXC_BASE_ADDR + 0x574, 0x00380000)
137 MXC_DCD_ITEM(8, IOMUXC_BASE_ADDR + 0x578, 0x00380000)
138 MXC_DCD_ITEM(9, IOMUXC_BASE_ADDR + 0x57c, 0x00380040)
139 MXC_DCD_ITEM(10, IOMUXC_BASE_ADDR + 0x580, 0x00380040)
140 MXC_DCD_ITEM(11, IOMUXC_BASE_ADDR + 0x584, 0x00380000)
141 MXC_DCD_ITEM(12, IOMUXC_BASE_ADDR + 0x588, 0x00380000)
142 MXC_DCD_ITEM(13, IOMUXC_BASE_ADDR + 0x590, 0x00380040)
143 MXC_DCD_ITEM(14, IOMUXC_BASE_ADDR + 0x594, 0x00380000)
144 MXC_DCD_ITEM(15, IOMUXC_BASE_ADDR + 0x6f0, 0x00380000)
145 MXC_DCD_ITEM(16, IOMUXC_BASE_ADDR + 0x6f4, 0x00000200)
146 MXC_DCD_ITEM(17, IOMUXC_BASE_ADDR + 0x6fc, 0x00000000)
147 MXC_DCD_ITEM(18, IOMUXC_BASE_ADDR + 0x714, 0x00000000)
148 MXC_DCD_ITEM(19, IOMUXC_BASE_ADDR + 0x718, 0x00380000)
149 MXC_DCD_ITEM(20, IOMUXC_BASE_ADDR + 0x71c, 0x00380000)
150 MXC_DCD_ITEM(21, IOMUXC_BASE_ADDR + 0x720, 0x00380000)
151 MXC_DCD_ITEM(22, IOMUXC_BASE_ADDR + 0x724, 0x02000000)
152 MXC_DCD_ITEM(23, IOMUXC_BASE_ADDR + 0x728, 0x00380000)
153 MXC_DCD_ITEM(24, IOMUXC_BASE_ADDR + 0x72c, 0x00380000)
154 MXC_DCD_ITEM(25, ESDCTL_BASE_ADDR + 0x088, 0x2d313331)
155 MXC_DCD_ITEM(26, ESDCTL_BASE_ADDR + 0x090, 0x40363333)
156 MXC_DCD_ITEM(27, ESDCTL_BASE_ADDR + 0x0f8, 0x00000800)
157 MXC_DCD_ITEM(28, ESDCTL_BASE_ADDR + 0x07c, 0x020c0211)
158 MXC_DCD_ITEM(29, ESDCTL_BASE_ADDR + 0x080, 0x014c0155)
159 MXC_DCD_ITEM(30, ESDCTL_BASE_ADDR + 0x018, 0x00001710)
160 MXC_DCD_ITEM(31, ESDCTL_BASE_ADDR + 0x000, 0xc4110000)
161 MXC_DCD_ITEM(32, ESDCTL_BASE_ADDR + 0x00c, 0x4d5122d2)
162 MXC_DCD_ITEM(33, ESDCTL_BASE_ADDR + 0x010, 0x92d18a22)
163 MXC_DCD_ITEM(34, ESDCTL_BASE_ADDR + 0x014, 0x00c70092)
164 MXC_DCD_ITEM(35, ESDCTL_BASE_ADDR + 0x02c, 0x000026d2)
165 MXC_DCD_ITEM(36, ESDCTL_BASE_ADDR + 0x030, 0x009f000e)
166 MXC_DCD_ITEM(37, ESDCTL_BASE_ADDR + 0x008, 0x12272000)
167 MXC_DCD_ITEM(38, ESDCTL_BASE_ADDR + 0x004, 0x00030012)
168 MXC_DCD_ITEM(39, ESDCTL_BASE_ADDR + 0x01c, 0x04008010)
169 MXC_DCD_ITEM(40, ESDCTL_BASE_ADDR + 0x01c, 0x00008032)
170 MXC_DCD_ITEM(41, ESDCTL_BASE_ADDR + 0x01c, 0x00008033)
171 MXC_DCD_ITEM(42, ESDCTL_BASE_ADDR + 0x01c, 0x00008031)
172 MXC_DCD_ITEM(43, ESDCTL_BASE_ADDR + 0x01c, 0x0b5280b0)
173 MXC_DCD_ITEM(44, ESDCTL_BASE_ADDR + 0x01c, 0x04008010)
174 MXC_DCD_ITEM(45, ESDCTL_BASE_ADDR + 0x01c, 0x00008020)
175 MXC_DCD_ITEM(46, ESDCTL_BASE_ADDR + 0x01c, 0x00008020)
176 MXC_DCD_ITEM(47, ESDCTL_BASE_ADDR + 0x01c, 0x0a528030)
177 MXC_DCD_ITEM(48, ESDCTL_BASE_ADDR + 0x01c, 0x03c68031)
178 MXC_DCD_ITEM(49, ESDCTL_BASE_ADDR + 0x01c, 0x00468031)
179 MXC_DCD_ITEM(50, ESDCTL_BASE_ADDR + 0x01c, 0x04008018)
180 MXC_DCD_ITEM(51, ESDCTL_BASE_ADDR + 0x01c, 0x0000803a)
181 MXC_DCD_ITEM(52, ESDCTL_BASE_ADDR + 0x01c, 0x0000803b)
182 MXC_DCD_ITEM(53, ESDCTL_BASE_ADDR + 0x01c, 0x00008039)
183 MXC_DCD_ITEM(54, ESDCTL_BASE_ADDR + 0x01c, 0x0b528138)
184 MXC_DCD_ITEM(55, ESDCTL_BASE_ADDR + 0x01c, 0x04008018)
185 MXC_DCD_ITEM(56, ESDCTL_BASE_ADDR + 0x01c, 0x00008028)
186 MXC_DCD_ITEM(57, ESDCTL_BASE_ADDR + 0x01c, 0x00008028)
187 MXC_DCD_ITEM(58, ESDCTL_BASE_ADDR + 0x01c, 0x0a528038)
188 MXC_DCD_ITEM(59, ESDCTL_BASE_ADDR + 0x01c, 0x03c68039)
189 MXC_DCD_ITEM(60, ESDCTL_BASE_ADDR + 0x01c, 0x00468039)
190 MXC_DCD_ITEM(61, ESDCTL_BASE_ADDR + 0x020, 0x00005800)
191 MXC_DCD_ITEM(62, ESDCTL_BASE_ADDR + 0x058, 0x00033337)
192 MXC_DCD_ITEM(63, ESDCTL_BASE_ADDR + 0x01c, 0x00000000)
193 #elif defined(CONFIG_MX53_ARM2_DDR3)
194 dcd_hdr:          .word 0x40A001D2 /* Tag=0xD2, Len=51*8 + 4 + 4, Ver=0x40 */
195 write_dcd_cmd:    .word 0x049C01CC /* Tag=0xCC, Len=51*8 + 4, Param=4 */
196
197 /* DCD */
198 MXC_DCD_ITEM(1, IOMUXC_BASE_ADDR + 0x554, 0x00300000)
199 MXC_DCD_ITEM(2, IOMUXC_BASE_ADDR + 0x558, 0x00300040)
200 MXC_DCD_ITEM(3, IOMUXC_BASE_ADDR + 0x560, 0x00300000)
201 MXC_DCD_ITEM(4, IOMUXC_BASE_ADDR + 0x564, 0x00300040)
202 MXC_DCD_ITEM(5, IOMUXC_BASE_ADDR + 0x568, 0x00300040)
203 MXC_DCD_ITEM(6, IOMUXC_BASE_ADDR + 0x570, 0x00300000)
204 MXC_DCD_ITEM(7, IOMUXC_BASE_ADDR + 0x574, 0x00300000)
205 MXC_DCD_ITEM(8, IOMUXC_BASE_ADDR + 0x578, 0x00300000)
206 MXC_DCD_ITEM(9, IOMUXC_BASE_ADDR + 0x57c, 0x00300040)
207 MXC_DCD_ITEM(10, IOMUXC_BASE_ADDR + 0x580, 0x00300040)
208 MXC_DCD_ITEM(11, IOMUXC_BASE_ADDR + 0x584, 0x00300000)
209 MXC_DCD_ITEM(12, IOMUXC_BASE_ADDR + 0x588, 0x00300000)
210 MXC_DCD_ITEM(13, IOMUXC_BASE_ADDR + 0x590, 0x00300040)
211 MXC_DCD_ITEM(14, IOMUXC_BASE_ADDR + 0x594, 0x00300000)
212 MXC_DCD_ITEM(15, IOMUXC_BASE_ADDR + 0x6f0, 0x00300000)
213 MXC_DCD_ITEM(16, IOMUXC_BASE_ADDR + 0x6f4, 0x00000000)
214 MXC_DCD_ITEM(17, IOMUXC_BASE_ADDR + 0x6fc, 0x00000000)
215 MXC_DCD_ITEM(18, IOMUXC_BASE_ADDR + 0x714, 0x00000000)
216 MXC_DCD_ITEM(19, IOMUXC_BASE_ADDR + 0x718, 0x00300000)
217 MXC_DCD_ITEM(20, IOMUXC_BASE_ADDR + 0x71c, 0x00300000)
218 MXC_DCD_ITEM(21, IOMUXC_BASE_ADDR + 0x720, 0x00300000)
219 MXC_DCD_ITEM(22, IOMUXC_BASE_ADDR + 0x724, 0x04000000)
220 MXC_DCD_ITEM(23, IOMUXC_BASE_ADDR + 0x728, 0x00300000)
221 MXC_DCD_ITEM(24, IOMUXC_BASE_ADDR + 0x72c, 0x00300000)
222 MXC_DCD_ITEM(25, ESDCTL_BASE_ADDR + 0x088, 0x32383535)
223 MXC_DCD_ITEM(26, ESDCTL_BASE_ADDR + 0x090, 0x40383538)
224 MXC_DCD_ITEM(27, ESDCTL_BASE_ADDR + 0x07c, 0x0136014d)
225 MXC_DCD_ITEM(28, ESDCTL_BASE_ADDR + 0x080, 0x01510141)
226 MXC_DCD_ITEM(29, ESDCTL_BASE_ADDR + 0x018, 0x00091740)
227 MXC_DCD_ITEM(30, ESDCTL_BASE_ADDR + 0x000, 0xc4190000)
228 MXC_DCD_ITEM(31, ESDCTL_BASE_ADDR + 0x00c, 0x565a7543)
229 MXC_DCD_ITEM(32, ESDCTL_BASE_ADDR + 0x010, 0xb6ae8aa3)
230 MXC_DCD_ITEM(33, ESDCTL_BASE_ADDR + 0x014, 0x01ff00db)
231 MXC_DCD_ITEM(34, ESDCTL_BASE_ADDR + 0x02c, 0x000026d2)
232 MXC_DCD_ITEM(35, ESDCTL_BASE_ADDR + 0x030, 0x009f0e21)
233 MXC_DCD_ITEM(36, ESDCTL_BASE_ADDR + 0x008, 0x12272000)
234 MXC_DCD_ITEM(37, ESDCTL_BASE_ADDR + 0x004, 0x00030012)
235 MXC_DCD_ITEM(38, ESDCTL_BASE_ADDR + 0x01c, 0x00008032)
236 MXC_DCD_ITEM(39, ESDCTL_BASE_ADDR + 0x01c, 0x00008033)
237 MXC_DCD_ITEM(40, ESDCTL_BASE_ADDR + 0x01c, 0x00028031)
238 MXC_DCD_ITEM(41, ESDCTL_BASE_ADDR + 0x01c, 0x092080b0)
239 MXC_DCD_ITEM(42, ESDCTL_BASE_ADDR + 0x01c, 0x04008040)
240 MXC_DCD_ITEM(43, ESDCTL_BASE_ADDR + 0x01c, 0x0000803a)
241 MXC_DCD_ITEM(44, ESDCTL_BASE_ADDR + 0x01c, 0x0000803b)
242 MXC_DCD_ITEM(45, ESDCTL_BASE_ADDR + 0x01c, 0x00028039)
243 MXC_DCD_ITEM(46, ESDCTL_BASE_ADDR + 0x01c, 0x09208138)
244 MXC_DCD_ITEM(47, ESDCTL_BASE_ADDR + 0x01c, 0x04008048)
245 MXC_DCD_ITEM(48, ESDCTL_BASE_ADDR + 0x020, 0x00001800)
246 MXC_DCD_ITEM(49, ESDCTL_BASE_ADDR + 0x040, 0x04b80003)
247 MXC_DCD_ITEM(50, ESDCTL_BASE_ADDR + 0x058, 0x00022227)
248 MXC_DCD_ITEM(51, ESDCTL_BASE_ADDR + 0x01c, 0x00000000)
249 #endif
250 #endif