]>
Commit | Line | Data |
---|---|---|
1dbae815 | 1 | /* |
1dbae815 TL |
2 | * Copyright (C) 2005 Nokia Corporation |
3 | * Author: Paul Mundt <paul.mundt@nokia.com> | |
4 | * | |
8d61649d | 5 | * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/ |
1dbae815 | 6 | * |
8d61649d BC |
7 | * Modified from the original mach-omap/omap2/board-generic.c did by Paul |
8 | * to support the OMAP2+ device tree boards with an unique board file. | |
1dbae815 TL |
9 | * |
10 | * This program is free software; you can redistribute it and/or modify | |
11 | * it under the terms of the GNU General Public License version 2 as | |
12 | * published by the Free Software Foundation. | |
13 | */ | |
8d61649d | 14 | #include <linux/io.h> |
fbf75da7 | 15 | #include <linux/of_irq.h> |
8d61649d BC |
16 | #include <linux/of_platform.h> |
17 | #include <linux/irqdomain.h> | |
1dbae815 | 18 | |
1dbae815 | 19 | #include <asm/mach/arch.h> |
1dbae815 | 20 | |
4e65331c | 21 | #include "common.h" |
8d61649d | 22 | |
31957609 | 23 | static const struct of_device_id omap_dt_match_table[] __initconst = { |
8d61649d BC |
24 | { .compatible = "simple-bus", }, |
25 | { .compatible = "ti,omap-infra", }, | |
26 | { } | |
b3c6df3a PW |
27 | }; |
28 | ||
1dbae815 TL |
29 | static void __init omap_generic_init(void) |
30 | { | |
6a0e6b38 TV |
31 | omapdss_early_init_of(); |
32 | ||
8651bd8c | 33 | pdata_quirks_init(omap_dt_match_table); |
dcdf407b TV |
34 | |
35 | omapdss_init_of(); | |
1dbae815 TL |
36 | } |
37 | ||
0e02a8c1 | 38 | #ifdef CONFIG_SOC_OMAP2420 |
58cda01e | 39 | static const char *const omap242x_boards_compat[] __initconst = { |
8d61649d BC |
40 | "ti,omap2420", |
41 | NULL, | |
42 | }; | |
43 | ||
44 | DT_MACHINE_START(OMAP242X_DT, "Generic OMAP2420 (Flattened Device Tree)") | |
45 | .reserve = omap_reserve, | |
46 | .map_io = omap242x_map_io, | |
47 | .init_early = omap2420_init_early, | |
8d61649d | 48 | .init_machine = omap_generic_init, |
6f82e25d | 49 | .init_time = omap_init_time, |
8d61649d | 50 | .dt_compat = omap242x_boards_compat, |
187e3e06 | 51 | .restart = omap2xxx_restart, |
8d61649d BC |
52 | MACHINE_END |
53 | #endif | |
54 | ||
0e02a8c1 | 55 | #ifdef CONFIG_SOC_OMAP2430 |
58cda01e | 56 | static const char *const omap243x_boards_compat[] __initconst = { |
8d61649d BC |
57 | "ti,omap2430", |
58 | NULL, | |
59 | }; | |
60 | ||
61 | DT_MACHINE_START(OMAP243X_DT, "Generic OMAP2430 (Flattened Device Tree)") | |
71ee7dad | 62 | .reserve = omap_reserve, |
8d61649d BC |
63 | .map_io = omap243x_map_io, |
64 | .init_early = omap2430_init_early, | |
1dbae815 | 65 | .init_machine = omap_generic_init, |
6f82e25d | 66 | .init_time = omap_init_time, |
8d61649d | 67 | .dt_compat = omap243x_boards_compat, |
187e3e06 | 68 | .restart = omap2xxx_restart, |
8d61649d BC |
69 | MACHINE_END |
70 | #endif | |
71 | ||
0e02a8c1 | 72 | #ifdef CONFIG_ARCH_OMAP3 |
71c4f602 TL |
73 | /* Some boards need board name for legacy userspace in /proc/cpuinfo */ |
74 | static const char *const n900_boards_compat[] __initconst = { | |
75 | "nokia,omap3-n900", | |
76 | NULL, | |
77 | }; | |
78 | ||
79 | DT_MACHINE_START(OMAP3_N900_DT, "Nokia RX-51 board") | |
80 | .reserve = omap_reserve, | |
81 | .map_io = omap3_map_io, | |
82 | .init_early = omap3430_init_early, | |
83 | .init_machine = omap_generic_init, | |
84 | .init_late = omap3_init_late, | |
6f82e25d | 85 | .init_time = omap_init_time, |
71c4f602 TL |
86 | .dt_compat = n900_boards_compat, |
87 | .restart = omap3xxx_restart, | |
88 | MACHINE_END | |
89 | ||
90 | /* Generic omap3 boards, most boards can use these */ | |
58cda01e | 91 | static const char *const omap3_boards_compat[] __initconst = { |
b83a08fe | 92 | "ti,omap3430", |
8d61649d BC |
93 | "ti,omap3", |
94 | NULL, | |
95 | }; | |
96 | ||
97 | DT_MACHINE_START(OMAP3_DT, "Generic OMAP3 (Flattened Device Tree)") | |
98 | .reserve = omap_reserve, | |
99 | .map_io = omap3_map_io, | |
100 | .init_early = omap3430_init_early, | |
93651b85 | 101 | .init_machine = omap_generic_init, |
990fa4f5 | 102 | .init_late = omap3_init_late, |
6f82e25d | 103 | .init_time = omap_init_time, |
8d61649d | 104 | .dt_compat = omap3_boards_compat, |
187e3e06 | 105 | .restart = omap3xxx_restart, |
8d61649d | 106 | MACHINE_END |
7dd9d502 | 107 | |
58cda01e | 108 | static const char *const omap36xx_boards_compat[] __initconst = { |
016c12d2 NM |
109 | "ti,omap36xx", |
110 | NULL, | |
111 | }; | |
112 | ||
113 | DT_MACHINE_START(OMAP36XX_DT, "Generic OMAP36xx (Flattened Device Tree)") | |
114 | .reserve = omap_reserve, | |
115 | .map_io = omap3_map_io, | |
116 | .init_early = omap3630_init_early, | |
016c12d2 NM |
117 | .init_machine = omap_generic_init, |
118 | .init_late = omap3_init_late, | |
6f82e25d | 119 | .init_time = omap_init_time, |
016c12d2 NM |
120 | .dt_compat = omap36xx_boards_compat, |
121 | .restart = omap3xxx_restart, | |
122 | MACHINE_END | |
123 | ||
58cda01e | 124 | static const char *const omap3_gp_boards_compat[] __initconst = { |
7dd9d502 | 125 | "ti,omap3-beagle", |
4bfe6341 | 126 | "timll,omap3-devkit8000", |
7dd9d502 JH |
127 | NULL, |
128 | }; | |
129 | ||
130 | DT_MACHINE_START(OMAP3_GP_DT, "Generic OMAP3-GP (Flattened Device Tree)") | |
131 | .reserve = omap_reserve, | |
132 | .map_io = omap3_map_io, | |
133 | .init_early = omap3430_init_early, | |
7dd9d502 | 134 | .init_machine = omap_generic_init, |
990fa4f5 | 135 | .init_late = omap3_init_late, |
6bb27d73 | 136 | .init_time = omap3_secure_sync32k_timer_init, |
7dd9d502 | 137 | .dt_compat = omap3_gp_boards_compat, |
d01e4afd | 138 | .restart = omap3xxx_restart, |
8d61649d | 139 | MACHINE_END |
caef4ee8 | 140 | |
58cda01e | 141 | static const char *const am3517_boards_compat[] __initconst = { |
caef4ee8 NM |
142 | "ti,am3517", |
143 | NULL, | |
144 | }; | |
145 | ||
146 | DT_MACHINE_START(AM3517_DT, "Generic AM3517 (Flattened Device Tree)") | |
147 | .reserve = omap_reserve, | |
148 | .map_io = omap3_map_io, | |
149 | .init_early = am35xx_init_early, | |
caef4ee8 NM |
150 | .init_machine = omap_generic_init, |
151 | .init_late = omap3_init_late, | |
152 | .init_time = omap3_gptimer_timer_init, | |
153 | .dt_compat = am3517_boards_compat, | |
154 | .restart = omap3xxx_restart, | |
155 | MACHINE_END | |
8d61649d BC |
156 | #endif |
157 | ||
abf8cc1d TL |
158 | #ifdef CONFIG_SOC_TI81XX |
159 | static const char *const ti814x_boards_compat[] __initconst = { | |
160 | "ti,dm8148", | |
161 | "ti,dm814", | |
162 | NULL, | |
163 | }; | |
164 | ||
9fd274c0 | 165 | DT_MACHINE_START(TI814X_DT, "Generic ti814x (Flattened Device Tree)") |
abf8cc1d TL |
166 | .reserve = omap_reserve, |
167 | .map_io = ti81xx_map_io, | |
168 | .init_early = ti814x_init_early, | |
169 | .init_machine = omap_generic_init, | |
170 | .init_late = ti81xx_init_late, | |
171 | .init_time = omap3_gptimer_timer_init, | |
172 | .dt_compat = ti814x_boards_compat, | |
173 | .restart = ti81xx_restart, | |
174 | MACHINE_END | |
175 | ||
176 | static const char *const ti816x_boards_compat[] __initconst = { | |
177 | "ti,dm8168", | |
178 | "ti,dm816", | |
179 | NULL, | |
180 | }; | |
181 | ||
182 | DT_MACHINE_START(TI816X_DT, "Generic ti816x (Flattened Device Tree)") | |
183 | .reserve = omap_reserve, | |
184 | .map_io = ti81xx_map_io, | |
185 | .init_early = ti816x_init_early, | |
186 | .init_machine = omap_generic_init, | |
187 | .init_late = ti81xx_init_late, | |
188 | .init_time = omap3_gptimer_timer_init, | |
189 | .dt_compat = ti816x_boards_compat, | |
190 | .restart = ti81xx_restart, | |
191 | MACHINE_END | |
192 | #endif | |
193 | ||
08f30989 | 194 | #ifdef CONFIG_SOC_AM33XX |
58cda01e | 195 | static const char *const am33xx_boards_compat[] __initconst = { |
08f30989 AM |
196 | "ti,am33xx", |
197 | NULL, | |
198 | }; | |
199 | ||
200 | DT_MACHINE_START(AM33XX_DT, "Generic AM33XX (Flattened Device Tree)") | |
201 | .reserve = omap_reserve, | |
202 | .map_io = am33xx_map_io, | |
203 | .init_early = am33xx_init_early, | |
08f30989 | 204 | .init_machine = omap_generic_init, |
765e7a06 | 205 | .init_late = am33xx_init_late, |
00ea4d56 | 206 | .init_time = omap3_gptimer_timer_init, |
08f30989 | 207 | .dt_compat = am33xx_boards_compat, |
14e067c1 | 208 | .restart = am33xx_restart, |
08f30989 AM |
209 | MACHINE_END |
210 | #endif | |
211 | ||
0e02a8c1 | 212 | #ifdef CONFIG_ARCH_OMAP4 |
58cda01e | 213 | static const char *const omap4_boards_compat[] __initconst = { |
b83a08fe NM |
214 | "ti,omap4460", |
215 | "ti,omap4430", | |
8d61649d BC |
216 | "ti,omap4", |
217 | NULL, | |
218 | }; | |
219 | ||
220 | DT_MACHINE_START(OMAP4_DT, "Generic OMAP4 (Flattened Device Tree)") | |
944e9df1 MS |
221 | .l2c_aux_val = OMAP_L2C_AUX_CTRL, |
222 | .l2c_aux_mask = 0xcf9fffff, | |
223 | .l2c_write_sec = omap4_l2c310_write_sec, | |
8d61649d | 224 | .reserve = omap_reserve, |
06915321 | 225 | .smp = smp_ops(omap4_smp_ops), |
8d61649d BC |
226 | .map_io = omap4_map_io, |
227 | .init_early = omap4430_init_early, | |
c4082d49 | 228 | .init_irq = omap_gic_of_init, |
93651b85 | 229 | .init_machine = omap_generic_init, |
bbd707ac | 230 | .init_late = omap4430_init_late, |
6bb27d73 | 231 | .init_time = omap4_local_timer_init, |
8d61649d | 232 | .dt_compat = omap4_boards_compat, |
187e3e06 | 233 | .restart = omap44xx_restart, |
1dbae815 | 234 | MACHINE_END |
8d61649d | 235 | #endif |
0c1b6fac S |
236 | |
237 | #ifdef CONFIG_SOC_OMAP5 | |
58cda01e | 238 | static const char *const omap5_boards_compat[] __initconst = { |
b83a08fe NM |
239 | "ti,omap5432", |
240 | "ti,omap5430", | |
0c1b6fac S |
241 | "ti,omap5", |
242 | NULL, | |
243 | }; | |
244 | ||
245 | DT_MACHINE_START(OMAP5_DT, "Generic OMAP5 (Flattened Device Tree)") | |
246 | .reserve = omap_reserve, | |
06915321 | 247 | .smp = smp_ops(omap4_smp_ops), |
0c1b6fac S |
248 | .map_io = omap5_map_io, |
249 | .init_early = omap5_init_early, | |
250 | .init_irq = omap_gic_of_init, | |
0c1b6fac | 251 | .init_machine = omap_generic_init, |
765e7a06 | 252 | .init_late = omap5_init_late, |
6bb27d73 | 253 | .init_time = omap5_realtime_timer_init, |
0c1b6fac | 254 | .dt_compat = omap5_boards_compat, |
187e3e06 | 255 | .restart = omap44xx_restart, |
0c1b6fac S |
256 | MACHINE_END |
257 | #endif | |
bb256f80 AM |
258 | |
259 | #ifdef CONFIG_SOC_AM43XX | |
58cda01e | 260 | static const char *const am43_boards_compat[] __initconst = { |
b83a08fe | 261 | "ti,am4372", |
bb256f80 AM |
262 | "ti,am43", |
263 | NULL, | |
264 | }; | |
265 | ||
266 | DT_MACHINE_START(AM43_DT, "Generic AM43 (Flattened Device Tree)") | |
944e9df1 MS |
267 | .l2c_aux_val = OMAP_L2C_AUX_CTRL, |
268 | .l2c_aux_mask = 0xcf9fffff, | |
269 | .l2c_write_sec = omap4_l2c310_write_sec, | |
bb256f80 AM |
270 | .map_io = am33xx_map_io, |
271 | .init_early = am43xx_init_early, | |
765e7a06 | 272 | .init_late = am43xx_init_late, |
bb256f80 AM |
273 | .init_irq = omap_gic_of_init, |
274 | .init_machine = omap_generic_init, | |
5b5c0135 | 275 | .init_time = omap3_gptimer_timer_init, |
bb256f80 | 276 | .dt_compat = am43_boards_compat, |
a7daf64a | 277 | .restart = omap44xx_restart, |
bb256f80 AM |
278 | MACHINE_END |
279 | #endif | |
439bf39e S |
280 | |
281 | #ifdef CONFIG_SOC_DRA7XX | |
58cda01e | 282 | static const char *const dra74x_boards_compat[] __initconst = { |
0e0cb99d NM |
283 | "ti,am5728", |
284 | "ti,am5726", | |
44e97ff6 | 285 | "ti,dra742", |
439bf39e S |
286 | "ti,dra7", |
287 | NULL, | |
288 | }; | |
289 | ||
44e97ff6 | 290 | DT_MACHINE_START(DRA74X_DT, "Generic DRA74X (Flattened Device Tree)") |
439bf39e S |
291 | .reserve = omap_reserve, |
292 | .smp = smp_ops(omap4_smp_ops), | |
ea827ad5 | 293 | .map_io = dra7xx_map_io, |
439bf39e | 294 | .init_early = dra7xx_init_early, |
765e7a06 | 295 | .init_late = dra7xx_init_late, |
439bf39e S |
296 | .init_irq = omap_gic_of_init, |
297 | .init_machine = omap_generic_init, | |
298 | .init_time = omap5_realtime_timer_init, | |
44e97ff6 RN |
299 | .dt_compat = dra74x_boards_compat, |
300 | .restart = omap44xx_restart, | |
301 | MACHINE_END | |
302 | ||
58cda01e | 303 | static const char *const dra72x_boards_compat[] __initconst = { |
0e0cb99d NM |
304 | "ti,am5718", |
305 | "ti,am5716", | |
44e97ff6 RN |
306 | "ti,dra722", |
307 | NULL, | |
308 | }; | |
309 | ||
310 | DT_MACHINE_START(DRA72X_DT, "Generic DRA72X (Flattened Device Tree)") | |
311 | .reserve = omap_reserve, | |
ea827ad5 | 312 | .map_io = dra7xx_map_io, |
44e97ff6 RN |
313 | .init_early = dra7xx_init_early, |
314 | .init_late = dra7xx_init_late, | |
315 | .init_irq = omap_gic_of_init, | |
316 | .init_machine = omap_generic_init, | |
317 | .init_time = omap5_realtime_timer_init, | |
318 | .dt_compat = dra72x_boards_compat, | |
1d597b07 | 319 | .restart = omap44xx_restart, |
439bf39e S |
320 | MACHINE_END |
321 | #endif |