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