Loading...
1/*
2 * Copyright (C) 2005 Nokia Corporation
3 * Author: Paul Mundt <paul.mundt@nokia.com>
4 *
5 * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
6 *
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.
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 */
14#include <linux/io.h>
15#include <linux/of_irq.h>
16#include <linux/of_platform.h>
17#include <linux/irqdomain.h>
18
19#include <mach/hardware.h>
20#include <asm/hardware/gic.h>
21#include <asm/mach/arch.h>
22
23#include <plat/board.h>
24#include "common.h"
25#include "common-board-devices.h"
26
27#if !(defined(CONFIG_ARCH_OMAP2) || defined(CONFIG_ARCH_OMAP3))
28#define omap_intc_of_init NULL
29#endif
30#ifndef CONFIG_ARCH_OMAP4
31#define gic_of_init NULL
32#endif
33
34static struct of_device_id irq_match[] __initdata = {
35 { .compatible = "ti,omap2-intc", .data = omap_intc_of_init, },
36 { .compatible = "arm,cortex-a9-gic", .data = gic_of_init, },
37 { }
38};
39
40static void __init omap_init_irq(void)
41{
42 of_irq_init(irq_match);
43}
44
45static struct of_device_id omap_dt_match_table[] __initdata = {
46 { .compatible = "simple-bus", },
47 { .compatible = "ti,omap-infra", },
48 { }
49};
50
51static void __init omap_generic_init(void)
52{
53 omap_sdrc_init(NULL, NULL);
54
55 of_platform_populate(NULL, omap_dt_match_table, NULL, NULL);
56}
57
58#ifdef CONFIG_SOC_OMAP2420
59static const char *omap242x_boards_compat[] __initdata = {
60 "ti,omap2420",
61 NULL,
62};
63
64DT_MACHINE_START(OMAP242X_DT, "Generic OMAP2420 (Flattened Device Tree)")
65 .reserve = omap_reserve,
66 .map_io = omap242x_map_io,
67 .init_early = omap2420_init_early,
68 .init_irq = omap_init_irq,
69 .handle_irq = omap2_intc_handle_irq,
70 .init_machine = omap_generic_init,
71 .timer = &omap2_timer,
72 .dt_compat = omap242x_boards_compat,
73 .restart = omap_prcm_restart,
74MACHINE_END
75#endif
76
77#ifdef CONFIG_SOC_OMAP2430
78static const char *omap243x_boards_compat[] __initdata = {
79 "ti,omap2430",
80 NULL,
81};
82
83DT_MACHINE_START(OMAP243X_DT, "Generic OMAP2430 (Flattened Device Tree)")
84 .reserve = omap_reserve,
85 .map_io = omap243x_map_io,
86 .init_early = omap2430_init_early,
87 .init_irq = omap_init_irq,
88 .handle_irq = omap2_intc_handle_irq,
89 .init_machine = omap_generic_init,
90 .timer = &omap2_timer,
91 .dt_compat = omap243x_boards_compat,
92 .restart = omap_prcm_restart,
93MACHINE_END
94#endif
95
96#ifdef CONFIG_ARCH_OMAP3
97static const char *omap3_boards_compat[] __initdata = {
98 "ti,omap3",
99 NULL,
100};
101
102DT_MACHINE_START(OMAP3_DT, "Generic OMAP3 (Flattened Device Tree)")
103 .reserve = omap_reserve,
104 .map_io = omap3_map_io,
105 .init_early = omap3430_init_early,
106 .init_irq = omap_init_irq,
107 .handle_irq = omap3_intc_handle_irq,
108 .init_machine = omap_generic_init,
109 .timer = &omap3_timer,
110 .dt_compat = omap3_boards_compat,
111 .restart = omap_prcm_restart,
112MACHINE_END
113#endif
114
115#ifdef CONFIG_ARCH_OMAP4
116static const char *omap4_boards_compat[] __initdata = {
117 "ti,omap4",
118 NULL,
119};
120
121DT_MACHINE_START(OMAP4_DT, "Generic OMAP4 (Flattened Device Tree)")
122 .reserve = omap_reserve,
123 .map_io = omap4_map_io,
124 .init_early = omap4430_init_early,
125 .init_irq = omap_init_irq,
126 .handle_irq = gic_handle_irq,
127 .init_machine = omap_generic_init,
128 .init_late = omap4430_init_late,
129 .timer = &omap4_timer,
130 .dt_compat = omap4_boards_compat,
131 .restart = omap_prcm_restart,
132MACHINE_END
133#endif
1/*
2 * linux/arch/arm/mach-omap2/board-generic.c
3 *
4 * Copyright (C) 2005 Nokia Corporation
5 * Author: Paul Mundt <paul.mundt@nokia.com>
6 *
7 * Modified from mach-omap/omap1/board-generic.c
8 *
9 * Code for generic OMAP2 board. Should work on many OMAP2 systems where
10 * the bootloader passes the board-specific data to the kernel.
11 * Do not put any board specific code to this file; create a new machine
12 * type if you need custom low-level initializations.
13 *
14 * This program is free software; you can redistribute it and/or modify
15 * it under the terms of the GNU General Public License version 2 as
16 * published by the Free Software Foundation.
17 */
18
19#include <linux/kernel.h>
20#include <linux/init.h>
21#include <linux/device.h>
22
23#include <mach/hardware.h>
24#include <asm/mach-types.h>
25#include <asm/mach/arch.h>
26#include <asm/mach/map.h>
27
28#include <mach/gpio.h>
29#include <plat/usb.h>
30#include <plat/board.h>
31#include <plat/common.h>
32
33static struct omap_board_config_kernel generic_config[] = {
34};
35
36static void __init omap_generic_init_early(void)
37{
38 omap2_init_common_infrastructure();
39 omap2_init_common_devices(NULL, NULL);
40}
41
42static void __init omap_generic_init(void)
43{
44 omap_serial_init();
45 omap_board_config = generic_config;
46 omap_board_config_size = ARRAY_SIZE(generic_config);
47}
48
49static void __init omap_generic_map_io(void)
50{
51 if (cpu_is_omap242x()) {
52 omap2_set_globals_242x();
53 omap242x_map_common_io();
54 } else if (cpu_is_omap243x()) {
55 omap2_set_globals_243x();
56 omap243x_map_common_io();
57 } else if (cpu_is_omap34xx()) {
58 omap2_set_globals_3xxx();
59 omap34xx_map_common_io();
60 } else if (cpu_is_omap44xx()) {
61 omap2_set_globals_443x();
62 omap44xx_map_common_io();
63 }
64}
65
66/* XXX This machine entry name should be updated */
67MACHINE_START(OMAP_GENERIC, "Generic OMAP24xx")
68 /* Maintainer: Paul Mundt <paul.mundt@nokia.com> */
69 .boot_params = 0x80000100,
70 .reserve = omap_reserve,
71 .map_io = omap_generic_map_io,
72 .init_early = omap_generic_init_early,
73 .init_irq = omap2_init_irq,
74 .init_machine = omap_generic_init,
75 .timer = &omap2_timer,
76MACHINE_END