~ubuntu-branches/ubuntu/precise/linux-lowlatency/precise

« back to all changes in this revision

Viewing changes to arch/arm/mach-omap2/board-generic.c

  • Committer: Package Import Robot
  • Author(s): Alessio Igor Bogani
  • Date: 2011-10-26 11:13:05 UTC
  • Revision ID: package-import@ubuntu.com-20111026111305-tz023xykf0i6eosh
Tags: upstream-3.2.0
ImportĀ upstreamĀ versionĀ 3.2.0

Show diffs side-by-side

added added

removed removed

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