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 BC |
14 | #include <linux/io.h> |
15 | #include <linux/of_platform.h> | |
16 | #include <linux/irqdomain.h> | |
a7cbb9b1 | 17 | #include <linux/i2c/twl.h> |
1dbae815 | 18 | |
a09e64fb | 19 | #include <mach/hardware.h> |
1dbae815 | 20 | #include <asm/mach/arch.h> |
1dbae815 | 21 | |
ce491cf8 | 22 | #include <plat/board.h> |
4e65331c | 23 | #include "common.h" |
a7cbb9b1 | 24 | #include "common-board-devices.h" |
8d61649d | 25 | |
a7cbb9b1 BC |
26 | /* |
27 | * XXX: Still needed to boot until the i2c & twl driver is adapted to | |
28 | * device-tree | |
29 | */ | |
c4e2d245 | 30 | #ifdef CONFIG_ARCH_OMAP4 |
a7cbb9b1 BC |
31 | static struct twl4030_platform_data sdp4430_twldata = { |
32 | .irq_base = TWL6030_IRQ_BASE, | |
33 | .irq_end = TWL6030_IRQ_END, | |
34 | }; | |
35 | ||
36 | static void __init omap4_i2c_init(void) | |
37 | { | |
38 | omap4_pmic_init("twl6030", &sdp4430_twldata); | |
39 | } | |
c4e2d245 | 40 | #endif |
a7cbb9b1 | 41 | |
c4e2d245 | 42 | #ifdef CONFIG_ARCH_OMAP3 |
a7cbb9b1 BC |
43 | static struct twl4030_platform_data beagle_twldata = { |
44 | .irq_base = TWL4030_IRQ_BASE, | |
45 | .irq_end = TWL4030_IRQ_END, | |
46 | }; | |
47 | ||
48 | static void __init omap3_i2c_init(void) | |
49 | { | |
50 | omap3_pmic_init("twl4030", &beagle_twldata); | |
51 | } | |
c4e2d245 | 52 | #endif |
1dbae815 | 53 | |
8d61649d BC |
54 | static struct of_device_id omap_dt_match_table[] __initdata = { |
55 | { .compatible = "simple-bus", }, | |
56 | { .compatible = "ti,omap-infra", }, | |
57 | { } | |
b3c6df3a PW |
58 | }; |
59 | ||
8d61649d BC |
60 | static struct of_device_id intc_match[] __initdata = { |
61 | { .compatible = "ti,omap3-intc", }, | |
62 | { .compatible = "arm,cortex-a9-gic", }, | |
63 | { } | |
64 | }; | |
1dbae815 | 65 | |
1dbae815 TL |
66 | static void __init omap_generic_init(void) |
67 | { | |
8d61649d BC |
68 | struct device_node *node = of_find_matching_node(NULL, intc_match); |
69 | if (node) | |
70 | irq_domain_add_simple(node, 0); | |
71 | ||
1dbae815 | 72 | omap_serial_init(); |
a4ca9dbe | 73 | omap_sdrc_init(NULL, NULL); |
1dbae815 | 74 | |
8d61649d | 75 | of_platform_populate(NULL, omap_dt_match_table, NULL, NULL); |
1dbae815 TL |
76 | } |
77 | ||
c4e2d245 | 78 | #ifdef CONFIG_ARCH_OMAP4 |
a7cbb9b1 BC |
79 | static void __init omap4_init(void) |
80 | { | |
81 | omap4_i2c_init(); | |
82 | omap_generic_init(); | |
83 | } | |
c4e2d245 | 84 | #endif |
a7cbb9b1 | 85 | |
c4e2d245 | 86 | #ifdef CONFIG_ARCH_OMAP3 |
a7cbb9b1 BC |
87 | static void __init omap3_init(void) |
88 | { | |
89 | omap3_i2c_init(); | |
90 | omap_generic_init(); | |
91 | } | |
c4e2d245 | 92 | #endif |
a7cbb9b1 | 93 | |
8d61649d BC |
94 | #if defined(CONFIG_SOC_OMAP2420) |
95 | static const char *omap242x_boards_compat[] __initdata = { | |
96 | "ti,omap2420", | |
97 | NULL, | |
98 | }; | |
99 | ||
100 | DT_MACHINE_START(OMAP242X_DT, "Generic OMAP2420 (Flattened Device Tree)") | |
df80442d | 101 | .atag_offset = 0x100, |
8d61649d BC |
102 | .reserve = omap_reserve, |
103 | .map_io = omap242x_map_io, | |
104 | .init_early = omap2420_init_early, | |
105 | .init_irq = omap2_init_irq, | |
106 | .init_machine = omap_generic_init, | |
107 | .timer = &omap2_timer, | |
108 | .dt_compat = omap242x_boards_compat, | |
109 | MACHINE_END | |
110 | #endif | |
111 | ||
112 | #if defined(CONFIG_SOC_OMAP2430) | |
113 | static const char *omap243x_boards_compat[] __initdata = { | |
114 | "ti,omap2430", | |
115 | NULL, | |
116 | }; | |
117 | ||
118 | DT_MACHINE_START(OMAP243X_DT, "Generic OMAP2430 (Flattened Device Tree)") | |
5e52b435 | 119 | .atag_offset = 0x100, |
71ee7dad | 120 | .reserve = omap_reserve, |
8d61649d BC |
121 | .map_io = omap243x_map_io, |
122 | .init_early = omap2430_init_early, | |
741e3a89 | 123 | .init_irq = omap2_init_irq, |
6b2f55d7 | 124 | .handle_irq = omap2_intc_handle_irq, |
1dbae815 | 125 | .init_machine = omap_generic_init, |
13340b2a | 126 | .timer = &omap2_timer, |
8d61649d BC |
127 | .dt_compat = omap243x_boards_compat, |
128 | MACHINE_END | |
129 | #endif | |
130 | ||
131 | #if defined(CONFIG_ARCH_OMAP3) | |
132 | static const char *omap3_boards_compat[] __initdata = { | |
133 | "ti,omap3", | |
134 | NULL, | |
135 | }; | |
136 | ||
137 | DT_MACHINE_START(OMAP3_DT, "Generic OMAP3 (Flattened Device Tree)") | |
df80442d | 138 | .atag_offset = 0x100, |
8d61649d BC |
139 | .reserve = omap_reserve, |
140 | .map_io = omap3_map_io, | |
141 | .init_early = omap3430_init_early, | |
142 | .init_irq = omap3_init_irq, | |
a7cbb9b1 | 143 | .init_machine = omap3_init, |
8d61649d BC |
144 | .timer = &omap3_timer, |
145 | .dt_compat = omap3_boards_compat, | |
146 | MACHINE_END | |
147 | #endif | |
148 | ||
149 | #if defined(CONFIG_ARCH_OMAP4) | |
150 | static const char *omap4_boards_compat[] __initdata = { | |
151 | "ti,omap4", | |
152 | NULL, | |
153 | }; | |
154 | ||
155 | DT_MACHINE_START(OMAP4_DT, "Generic OMAP4 (Flattened Device Tree)") | |
df80442d | 156 | .atag_offset = 0x100, |
8d61649d BC |
157 | .reserve = omap_reserve, |
158 | .map_io = omap4_map_io, | |
159 | .init_early = omap4430_init_early, | |
160 | .init_irq = gic_init_irq, | |
a7cbb9b1 | 161 | .init_machine = omap4_init, |
8d61649d BC |
162 | .timer = &omap4_timer, |
163 | .dt_compat = omap4_boards_compat, | |
1dbae815 | 164 | MACHINE_END |
8d61649d | 165 | #endif |