diff options
| author | Nishanth Menon <nm@ti.com> | 2013-10-07 16:43:49 -0400 |
|---|---|---|
| committer | Tony Lindgren <tony@atomide.com> | 2013-10-08 13:32:24 -0400 |
| commit | 016c12d2fb8584db392211bc6b0bdd6fcf7cfd97 (patch) | |
| tree | 574e22d0f526845534d93d693755f3203e78ef59 | |
| parent | 1dc1c33879bf47500565e627506f3d4e150e1cae (diff) | |
ARM: OMAP3: Fix hardware detection for omap3630 when booted with device tree
SoC family definitions at the moment are reactive to board needs
as a result, beagle-xm would matchup with ti,omap3 which invokes
omap3430_init_early instead of omap3630_init_early. Obviously, this is
the wrong behavior.
With clock node dts conversion, we get the following warnings before
system hangs as a result and 3630 based platforms fails to boot
(uart4 clocks are only present in OMAP3630 and not present in
OMAP3430):
...
omap_hwmod: uart4: cannot clk_get main_clk uart4_fck
omap_hwmod: uart4: cannot _init_clocks
WARNING: CPU: 0 PID: 1 at arch/arm/mach-omap2/omap_hwmod.c:2434
_init+0x6c/0x80()
omap_hwmod: uart4: couldn't init clocks
...
WARNING: CPU: 0 PID: 1 at arch/arm/mach-omap2/omap_hwmod.c:2126
_enable+0x254/0x280()
omap_hwmod: timer12: enabled state can only be entered from
initialized, idle, or disabled state
...
WARNING: CPU: 0 PID: 46 at arch/arm/mach-omap2/omap_hwmod.c:2224
_idle+0xd4/0xf8()
omap_hwmod: timer12: idle state can only be entered from enabled state
WARNING: CPU: 0 PID: 1 at arch/arm/mach-omap2/omap_hwmod.c:2126
_enable+0x254/0x280()
omap_hwmod: uart4: enabled state can only be entered from
initialized, idle, or disabled state
So, add specific compatiblity for 3630 to allow match for Beagle-XM
platform.
Signed-off-by: Nishanth Menon <nm@ti.com>
[tony@atomide.com: left out ti,omap343x, updated comments]
Signed-off-by: Tony Lindgren <tony@atomide.com>
| -rw-r--r-- | arch/arm/boot/dts/omap3-beagle-xm.dts | 2 | ||||
| -rw-r--r-- | arch/arm/mach-omap2/board-generic.c | 18 |
2 files changed, 19 insertions, 1 deletions
diff --git a/arch/arm/boot/dts/omap3-beagle-xm.dts b/arch/arm/boot/dts/omap3-beagle-xm.dts index 0c514dc8460c..2816bf612672 100644 --- a/arch/arm/boot/dts/omap3-beagle-xm.dts +++ b/arch/arm/boot/dts/omap3-beagle-xm.dts | |||
| @@ -11,7 +11,7 @@ | |||
| 11 | 11 | ||
| 12 | / { | 12 | / { |
| 13 | model = "TI OMAP3 BeagleBoard xM"; | 13 | model = "TI OMAP3 BeagleBoard xM"; |
| 14 | compatible = "ti,omap3-beagle-xm", "ti,omap3-beagle", "ti,omap3"; | 14 | compatible = "ti,omap3-beagle-xm", "ti,omap36xx", "ti,omap3"; |
| 15 | 15 | ||
| 16 | cpus { | 16 | cpus { |
| 17 | cpu@0 { | 17 | cpu@0 { |
diff --git a/arch/arm/mach-omap2/board-generic.c b/arch/arm/mach-omap2/board-generic.c index 39c78387ddec..87162e1b94a5 100644 --- a/arch/arm/mach-omap2/board-generic.c +++ b/arch/arm/mach-omap2/board-generic.c | |||
| @@ -129,6 +129,24 @@ DT_MACHINE_START(OMAP3_DT, "Generic OMAP3 (Flattened Device Tree)") | |||
| 129 | .restart = omap3xxx_restart, | 129 | .restart = omap3xxx_restart, |
| 130 | MACHINE_END | 130 | MACHINE_END |
| 131 | 131 | ||
| 132 | static const char *omap36xx_boards_compat[] __initdata = { | ||
| 133 | "ti,omap36xx", | ||
| 134 | NULL, | ||
| 135 | }; | ||
| 136 | |||
| 137 | DT_MACHINE_START(OMAP36XX_DT, "Generic OMAP36xx (Flattened Device Tree)") | ||
| 138 | .reserve = omap_reserve, | ||
| 139 | .map_io = omap3_map_io, | ||
| 140 | .init_early = omap3630_init_early, | ||
| 141 | .init_irq = omap_intc_of_init, | ||
| 142 | .handle_irq = omap3_intc_handle_irq, | ||
| 143 | .init_machine = omap_generic_init, | ||
| 144 | .init_late = omap3_init_late, | ||
| 145 | .init_time = omap3_sync32k_timer_init, | ||
| 146 | .dt_compat = omap36xx_boards_compat, | ||
| 147 | .restart = omap3xxx_restart, | ||
| 148 | MACHINE_END | ||
| 149 | |||
| 132 | static const char *omap3_gp_boards_compat[] __initdata = { | 150 | static const char *omap3_gp_boards_compat[] __initdata = { |
| 133 | "ti,omap3-beagle", | 151 | "ti,omap3-beagle", |
| 134 | "timll,omap3-devkit8000", | 152 | "timll,omap3-devkit8000", |
