blob: 62c6b2e8b5d77db53bf00ba2ff09c3f24aebbcf7 [file] [log] [blame]
Tony Lindgren1dbae812005-11-10 14:26:51 +00001/*
Tony Lindgren1dbae812005-11-10 14:26:51 +00002 * Copyright (C) 2005 Nokia Corporation
3 * Author: Paul Mundt <paul.mundt@nokia.com>
4 *
Benoit Cousson8d616492011-09-20 21:24:47 +02005 * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
Tony Lindgren1dbae812005-11-10 14:26:51 +00006 *
Benoit Cousson8d616492011-09-20 21:24:47 +02007 * 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.
Tony Lindgren1dbae812005-11-10 14:26:51 +00009 *
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 */
14
Benoit Cousson8d616492011-09-20 21:24:47 +020015#include <linux/io.h>
16#include <linux/of_platform.h>
17#include <linux/irqdomain.h>
Tony Lindgren1dbae812005-11-10 14:26:51 +000018
Russell Kinga09e64f2008-08-05 16:14:15 +010019#include <mach/hardware.h>
Tony Lindgren1dbae812005-11-10 14:26:51 +000020#include <asm/mach/arch.h>
Tony Lindgren1dbae812005-11-10 14:26:51 +000021
Tony Lindgrence491cf2009-10-20 09:40:47 -070022#include <plat/board.h>
23#include <plat/common.h>
Benoit Cousson8d616492011-09-20 21:24:47 +020024#include <mach/omap4-common.h>
Tony Lindgren1dbae812005-11-10 14:26:51 +000025
Benoit Cousson8d616492011-09-20 21:24:47 +020026
27static struct of_device_id omap_dt_match_table[] __initdata = {
28 { .compatible = "simple-bus", },
29 { .compatible = "ti,omap-infra", },
30 { }
Paul Walmsleyb3c6df32009-09-03 20:14:02 +030031};
32
Benoit Cousson8d616492011-09-20 21:24:47 +020033static struct of_device_id intc_match[] __initdata = {
34 { .compatible = "ti,omap3-intc", },
35 { .compatible = "arm,cortex-a9-gic", },
36 { }
37};
Tony Lindgren1dbae812005-11-10 14:26:51 +000038
Tony Lindgren1dbae812005-11-10 14:26:51 +000039static void __init omap_generic_init(void)
40{
Benoit Cousson8d616492011-09-20 21:24:47 +020041 struct device_node *node = of_find_matching_node(NULL, intc_match);
42 if (node)
43 irq_domain_add_simple(node, 0);
44
Tony Lindgren1dbae812005-11-10 14:26:51 +000045 omap_serial_init();
Tony Lindgrena4ca9db2011-08-22 23:57:23 -070046 omap_sdrc_init(NULL, NULL);
Benoit Cousson8d616492011-09-20 21:24:47 +020047
48 of_platform_populate(NULL, omap_dt_match_table, NULL, NULL);
Tony Lindgren1dbae812005-11-10 14:26:51 +000049}
50
Benoit Cousson8d616492011-09-20 21:24:47 +020051#if defined(CONFIG_SOC_OMAP2420)
52static const char *omap242x_boards_compat[] __initdata = {
53 "ti,omap2420",
54 NULL,
55};
Tony Lindgren1dbae812005-11-10 14:26:51 +000056
Benoit Cousson8d616492011-09-20 21:24:47 +020057DT_MACHINE_START(OMAP242X_DT, "Generic OMAP2420 (Flattened Device Tree)")
Russell King71ee7da2010-05-23 10:18:16 +010058 .reserve = omap_reserve,
Benoit Cousson8d616492011-09-20 21:24:47 +020059 .map_io = omap242x_map_io,
60 .init_early = omap2420_init_early,
Tony Lindgren741e3a82011-05-17 03:51:26 -070061 .init_irq = omap2_init_irq,
Tony Lindgren1dbae812005-11-10 14:26:51 +000062 .init_machine = omap_generic_init,
Arnd Bergmann13340b22011-06-30 12:58:01 +000063 .timer = &omap2_timer,
Benoit Cousson8d616492011-09-20 21:24:47 +020064 .dt_compat = omap242x_boards_compat,
Tony Lindgren1dbae812005-11-10 14:26:51 +000065MACHINE_END
Benoit Cousson8d616492011-09-20 21:24:47 +020066#endif
67
68#if defined(CONFIG_SOC_OMAP2430)
69static const char *omap243x_boards_compat[] __initdata = {
70 "ti,omap2430",
71 NULL,
72};
73
74DT_MACHINE_START(OMAP243X_DT, "Generic OMAP2430 (Flattened Device Tree)")
75 .reserve = omap_reserve,
76 .map_io = omap243x_map_io,
77 .init_early = omap2430_init_early,
78 .init_irq = omap2_init_irq,
79 .init_machine = omap_generic_init,
80 .timer = &omap2_timer,
81 .dt_compat = omap243x_boards_compat,
82MACHINE_END
83#endif
84
85#if defined(CONFIG_ARCH_OMAP3)
86static const char *omap3_boards_compat[] __initdata = {
87 "ti,omap3",
88 NULL,
89};
90
91DT_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,
95 .init_irq = omap3_init_irq,
96 .init_machine = omap_generic_init,
97 .timer = &omap3_timer,
98 .dt_compat = omap3_boards_compat,
99MACHINE_END
100#endif
101
102#if defined(CONFIG_ARCH_OMAP4)
103static const char *omap4_boards_compat[] __initdata = {
104 "ti,omap4",
105 NULL,
106};
107
108DT_MACHINE_START(OMAP4_DT, "Generic OMAP4 (Flattened Device Tree)")
109 .reserve = omap_reserve,
110 .map_io = omap4_map_io,
111 .init_early = omap4430_init_early,
112 .init_irq = gic_init_irq,
113 .init_machine = omap_generic_init,
114 .timer = &omap4_timer,
115 .dt_compat = omap4_boards_compat,
116MACHINE_END
117#endif