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 | |
a09e64fb | 19 | #include <mach/hardware.h> |
b755706c | 20 | #include <asm/hardware/gic.h> |
1dbae815 | 21 | #include <asm/mach/arch.h> |
1dbae815 | 22 | |
ce491cf8 | 23 | #include <plat/board.h> |
4e65331c | 24 | #include "common.h" |
a7cbb9b1 | 25 | #include "common-board-devices.h" |
8d61649d | 26 | |
75a57fe9 | 27 | #if !(defined(CONFIG_ARCH_OMAP2) || defined(CONFIG_ARCH_OMAP3)) |
c4082d49 | 28 | #define intc_of_init NULL |
75a57fe9 TL |
29 | #endif |
30 | #ifndef CONFIG_ARCH_OMAP4 | |
31 | #define gic_of_init NULL | |
32 | #endif | |
33 | ||
8d61649d BC |
34 | static struct of_device_id omap_dt_match_table[] __initdata = { |
35 | { .compatible = "simple-bus", }, | |
36 | { .compatible = "ti,omap-infra", }, | |
37 | { } | |
b3c6df3a PW |
38 | }; |
39 | ||
1dbae815 TL |
40 | static void __init omap_generic_init(void) |
41 | { | |
a4ca9dbe | 42 | omap_sdrc_init(NULL, NULL); |
1dbae815 | 43 | |
8d61649d | 44 | of_platform_populate(NULL, omap_dt_match_table, NULL, NULL); |
1dbae815 TL |
45 | } |
46 | ||
0e02a8c1 | 47 | #ifdef CONFIG_SOC_OMAP2420 |
8d61649d BC |
48 | static const char *omap242x_boards_compat[] __initdata = { |
49 | "ti,omap2420", | |
50 | NULL, | |
51 | }; | |
52 | ||
53 | DT_MACHINE_START(OMAP242X_DT, "Generic OMAP2420 (Flattened Device Tree)") | |
54 | .reserve = omap_reserve, | |
55 | .map_io = omap242x_map_io, | |
56 | .init_early = omap2420_init_early, | |
c4082d49 | 57 | .init_irq = omap_intc_of_init, |
b755706c | 58 | .handle_irq = omap2_intc_handle_irq, |
8d61649d BC |
59 | .init_machine = omap_generic_init, |
60 | .timer = &omap2_timer, | |
61 | .dt_compat = omap242x_boards_compat, | |
baa95883 | 62 | .restart = omap_prcm_restart, |
8d61649d BC |
63 | MACHINE_END |
64 | #endif | |
65 | ||
0e02a8c1 | 66 | #ifdef CONFIG_SOC_OMAP2430 |
8d61649d BC |
67 | static const char *omap243x_boards_compat[] __initdata = { |
68 | "ti,omap2430", | |
69 | NULL, | |
70 | }; | |
71 | ||
72 | DT_MACHINE_START(OMAP243X_DT, "Generic OMAP2430 (Flattened Device Tree)") | |
71ee7dad | 73 | .reserve = omap_reserve, |
8d61649d BC |
74 | .map_io = omap243x_map_io, |
75 | .init_early = omap2430_init_early, | |
c4082d49 | 76 | .init_irq = omap_intc_of_init, |
6b2f55d7 | 77 | .handle_irq = omap2_intc_handle_irq, |
1dbae815 | 78 | .init_machine = omap_generic_init, |
13340b2a | 79 | .timer = &omap2_timer, |
8d61649d | 80 | .dt_compat = omap243x_boards_compat, |
baa95883 | 81 | .restart = omap_prcm_restart, |
8d61649d BC |
82 | MACHINE_END |
83 | #endif | |
84 | ||
0e02a8c1 | 85 | #ifdef CONFIG_ARCH_OMAP3 |
8d61649d BC |
86 | static const char *omap3_boards_compat[] __initdata = { |
87 | "ti,omap3", | |
88 | NULL, | |
89 | }; | |
90 | ||
91 | DT_MACHINE_START(OMAP3_DT, "Generic OMAP3 (Flattened Device Tree)") | |
92 | .reserve = omap_reserve, | |
93 | .map_io = omap3_map_io, | |
94 | .init_early = omap3430_init_early, | |
c4082d49 | 95 | .init_irq = omap_intc_of_init, |
b755706c | 96 | .handle_irq = omap3_intc_handle_irq, |
93651b85 | 97 | .init_machine = omap_generic_init, |
8d61649d BC |
98 | .timer = &omap3_timer, |
99 | .dt_compat = omap3_boards_compat, | |
baa95883 | 100 | .restart = omap_prcm_restart, |
8d61649d BC |
101 | MACHINE_END |
102 | #endif | |
103 | ||
08f30989 AM |
104 | #ifdef CONFIG_SOC_AM33XX |
105 | static const char *am33xx_boards_compat[] __initdata = { | |
106 | "ti,am33xx", | |
107 | NULL, | |
108 | }; | |
109 | ||
110 | DT_MACHINE_START(AM33XX_DT, "Generic AM33XX (Flattened Device Tree)") | |
111 | .reserve = omap_reserve, | |
112 | .map_io = am33xx_map_io, | |
113 | .init_early = am33xx_init_early, | |
c4082d49 | 114 | .init_irq = omap_intc_of_init, |
08f30989 AM |
115 | .handle_irq = omap3_intc_handle_irq, |
116 | .init_machine = omap_generic_init, | |
117 | .timer = &omap3_am33xx_timer, | |
118 | .dt_compat = am33xx_boards_compat, | |
119 | MACHINE_END | |
120 | #endif | |
121 | ||
0e02a8c1 | 122 | #ifdef CONFIG_ARCH_OMAP4 |
8d61649d BC |
123 | static const char *omap4_boards_compat[] __initdata = { |
124 | "ti,omap4", | |
125 | NULL, | |
126 | }; | |
127 | ||
128 | DT_MACHINE_START(OMAP4_DT, "Generic OMAP4 (Flattened Device Tree)") | |
129 | .reserve = omap_reserve, | |
130 | .map_io = omap4_map_io, | |
131 | .init_early = omap4430_init_early, | |
c4082d49 | 132 | .init_irq = omap_gic_of_init, |
b755706c | 133 | .handle_irq = gic_handle_irq, |
93651b85 | 134 | .init_machine = omap_generic_init, |
bbd707ac | 135 | .init_late = omap4430_init_late, |
8d61649d BC |
136 | .timer = &omap4_timer, |
137 | .dt_compat = omap4_boards_compat, | |
baa95883 | 138 | .restart = omap_prcm_restart, |
1dbae815 | 139 | MACHINE_END |
8d61649d | 140 | #endif |