2005-11-10 14:26:51 +00:00
|
|
|
/*
|
|
|
|
* Copyright (C) 2005 Nokia Corporation
|
|
|
|
* Author: Paul Mundt <paul.mundt@nokia.com>
|
|
|
|
*
|
2011-09-20 19:24:47 +00:00
|
|
|
* Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
|
2005-11-10 14:26:51 +00:00
|
|
|
*
|
2011-09-20 19:24:47 +00:00
|
|
|
* Modified from the original mach-omap/omap2/board-generic.c did by Paul
|
|
|
|
* to support the OMAP2+ device tree boards with an unique board file.
|
2005-11-10 14:26:51 +00:00
|
|
|
*
|
|
|
|
* This program is free software; you can redistribute it and/or modify
|
|
|
|
* it under the terms of the GNU General Public License version 2 as
|
|
|
|
* published by the Free Software Foundation.
|
|
|
|
*/
|
2011-09-20 19:24:47 +00:00
|
|
|
#include <linux/io.h>
|
2011-09-21 21:30:31 +00:00
|
|
|
#include <linux/of_irq.h>
|
2011-09-20 19:24:47 +00:00
|
|
|
#include <linux/of_platform.h>
|
|
|
|
#include <linux/irqdomain.h>
|
2005-11-10 14:26:51 +00:00
|
|
|
|
|
|
|
#include <asm/mach/arch.h>
|
|
|
|
|
2011-11-10 21:45:17 +00:00
|
|
|
#include "common.h"
|
2011-09-20 19:24:47 +00:00
|
|
|
|
2012-03-05 21:47:28 +00:00
|
|
|
#if !(defined(CONFIG_ARCH_OMAP2) || defined(CONFIG_ARCH_OMAP3))
|
2012-06-05 11:01:06 +00:00
|
|
|
#define intc_of_init NULL
|
2012-03-05 21:47:28 +00:00
|
|
|
#endif
|
|
|
|
#ifndef CONFIG_ARCH_OMAP4
|
|
|
|
#define gic_of_init NULL
|
|
|
|
#endif
|
|
|
|
|
2011-09-20 19:24:47 +00:00
|
|
|
static struct of_device_id omap_dt_match_table[] __initdata = {
|
|
|
|
{ .compatible = "simple-bus", },
|
|
|
|
{ .compatible = "ti,omap-infra", },
|
|
|
|
{ }
|
2009-09-03 17:14:02 +00:00
|
|
|
};
|
|
|
|
|
2005-11-10 14:26:51 +00:00
|
|
|
static void __init omap_generic_init(void)
|
|
|
|
{
|
ARM: OMAP2+: DT 'compatible' tweak for displays
As there is no common panel framework in the kernel, we have OMAP
specific panel drivers. However, the DT data should be generic. This
brings the issue that some other platform could use the same panels, and
would need to create a driver with the same 'compatible' string as the
OMAP driver.
In the long run, we have to get a common panel framework. For the time
being, this patch solves the issue:
At early boot time, we go through the DT nodes looking for the panels
the kernel supports for OMAP. For each found node, the 'compatible'
string is prepended with "omapdss,", i.e. "sony,acx565akm" becomes
"omapdss,sony,acx565akm". The OMAP display drivers all have "omapdss,"
at the beginning of their compatible field.
This allows us to have generic DT data, but OMAP specific display
drivers.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Reviewed-by: Archit Taneja <archit@ti.com>
Acked-by: Tony Lindgren <tony@atomide.com>
2013-12-19 10:34:19 +00:00
|
|
|
omapdss_early_init_of();
|
|
|
|
|
2013-10-10 22:45:12 +00:00
|
|
|
pdata_quirks_init(omap_dt_match_table);
|
2013-03-18 13:50:25 +00:00
|
|
|
|
|
|
|
omapdss_init_of();
|
2005-11-10 14:26:51 +00:00
|
|
|
}
|
|
|
|
|
2011-12-01 10:05:17 +00:00
|
|
|
#ifdef CONFIG_SOC_OMAP2420
|
2014-04-29 11:05:11 +00:00
|
|
|
static const char *omap242x_boards_compat[] __initconst = {
|
2011-09-20 19:24:47 +00:00
|
|
|
"ti,omap2420",
|
|
|
|
NULL,
|
|
|
|
};
|
|
|
|
|
|
|
|
DT_MACHINE_START(OMAP242X_DT, "Generic OMAP2420 (Flattened Device Tree)")
|
|
|
|
.reserve = omap_reserve,
|
|
|
|
.map_io = omap242x_map_io,
|
|
|
|
.init_early = omap2420_init_early,
|
2012-06-05 11:01:06 +00:00
|
|
|
.init_irq = omap_intc_of_init,
|
2011-12-07 19:47:40 +00:00
|
|
|
.handle_irq = omap2_intc_handle_irq,
|
2011-09-20 19:24:47 +00:00
|
|
|
.init_machine = omap_generic_init,
|
2012-11-08 19:40:59 +00:00
|
|
|
.init_time = omap2_sync32k_timer_init,
|
2011-09-20 19:24:47 +00:00
|
|
|
.dt_compat = omap242x_boards_compat,
|
2012-10-30 02:56:12 +00:00
|
|
|
.restart = omap2xxx_restart,
|
2011-09-20 19:24:47 +00:00
|
|
|
MACHINE_END
|
|
|
|
#endif
|
|
|
|
|
2011-12-01 10:05:17 +00:00
|
|
|
#ifdef CONFIG_SOC_OMAP2430
|
2014-04-29 11:05:11 +00:00
|
|
|
static const char *omap243x_boards_compat[] __initconst = {
|
2011-09-20 19:24:47 +00:00
|
|
|
"ti,omap2430",
|
|
|
|
NULL,
|
|
|
|
};
|
|
|
|
|
|
|
|
DT_MACHINE_START(OMAP243X_DT, "Generic OMAP2430 (Flattened Device Tree)")
|
2010-05-23 09:18:16 +00:00
|
|
|
.reserve = omap_reserve,
|
2011-09-20 19:24:47 +00:00
|
|
|
.map_io = omap243x_map_io,
|
|
|
|
.init_early = omap2430_init_early,
|
2012-06-05 11:01:06 +00:00
|
|
|
.init_irq = omap_intc_of_init,
|
2011-09-06 09:23:45 +00:00
|
|
|
.handle_irq = omap2_intc_handle_irq,
|
2005-11-10 14:26:51 +00:00
|
|
|
.init_machine = omap_generic_init,
|
2012-11-08 19:40:59 +00:00
|
|
|
.init_time = omap2_sync32k_timer_init,
|
2011-09-20 19:24:47 +00:00
|
|
|
.dt_compat = omap243x_boards_compat,
|
2012-10-30 02:56:12 +00:00
|
|
|
.restart = omap2xxx_restart,
|
2011-09-20 19:24:47 +00:00
|
|
|
MACHINE_END
|
|
|
|
#endif
|
|
|
|
|
2011-12-01 10:05:17 +00:00
|
|
|
#ifdef CONFIG_ARCH_OMAP3
|
2014-04-29 11:05:11 +00:00
|
|
|
static const char *omap3_boards_compat[] __initconst = {
|
2013-12-05 00:49:37 +00:00
|
|
|
"ti,omap3430",
|
2011-09-20 19:24:47 +00:00
|
|
|
"ti,omap3",
|
|
|
|
NULL,
|
|
|
|
};
|
|
|
|
|
|
|
|
DT_MACHINE_START(OMAP3_DT, "Generic OMAP3 (Flattened Device Tree)")
|
|
|
|
.reserve = omap_reserve,
|
|
|
|
.map_io = omap3_map_io,
|
|
|
|
.init_early = omap3430_init_early,
|
2012-06-05 11:01:06 +00:00
|
|
|
.init_irq = omap_intc_of_init,
|
2011-12-07 19:47:40 +00:00
|
|
|
.handle_irq = omap3_intc_handle_irq,
|
2011-09-23 11:51:57 +00:00
|
|
|
.init_machine = omap_generic_init,
|
2013-02-19 12:58:31 +00:00
|
|
|
.init_late = omap3_init_late,
|
2012-11-08 19:40:59 +00:00
|
|
|
.init_time = omap3_sync32k_timer_init,
|
2011-09-20 19:24:47 +00:00
|
|
|
.dt_compat = omap3_boards_compat,
|
2012-10-30 02:56:12 +00:00
|
|
|
.restart = omap3xxx_restart,
|
2011-09-20 19:24:47 +00:00
|
|
|
MACHINE_END
|
2012-09-12 16:40:58 +00:00
|
|
|
|
2014-04-29 11:05:11 +00:00
|
|
|
static const char *omap36xx_boards_compat[] __initconst = {
|
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>
2013-10-07 20:43:49 +00:00
|
|
|
"ti,omap36xx",
|
|
|
|
NULL,
|
|
|
|
};
|
|
|
|
|
|
|
|
DT_MACHINE_START(OMAP36XX_DT, "Generic OMAP36xx (Flattened Device Tree)")
|
|
|
|
.reserve = omap_reserve,
|
|
|
|
.map_io = omap3_map_io,
|
|
|
|
.init_early = omap3630_init_early,
|
|
|
|
.init_irq = omap_intc_of_init,
|
|
|
|
.handle_irq = omap3_intc_handle_irq,
|
|
|
|
.init_machine = omap_generic_init,
|
|
|
|
.init_late = omap3_init_late,
|
|
|
|
.init_time = omap3_sync32k_timer_init,
|
|
|
|
.dt_compat = omap36xx_boards_compat,
|
|
|
|
.restart = omap3xxx_restart,
|
|
|
|
MACHINE_END
|
|
|
|
|
2014-04-29 11:05:11 +00:00
|
|
|
static const char *omap3_gp_boards_compat[] __initconst = {
|
2012-09-12 16:40:58 +00:00
|
|
|
"ti,omap3-beagle",
|
ARM: dts: Add minimal DT support for DevKit8000
DevKit8000 is a beagle board clone from Timll, sold by
armkits.com. The DevKit8000 has RS232 serial port, LCD, DVI-D,
S-Video, Ethernet, SD/MMC, keyboard, camera, SPI, I2C, USB and
JTAG interface.
Add the basic DT support for devkit8000. It includes:
- twl4030 (PMIC)
- MMC1
- I2C1
- leds
Signed-off-by: Anil Kumar <anilk4.v@gmail.com>
Tested-by: Thomas Weber <thomas@tomweber.eu>
Signed-off-by: Benoit Cousson <benoit.cousson@linaro.org>
2013-03-16 09:59:21 +00:00
|
|
|
"timll,omap3-devkit8000",
|
2012-09-12 16:40:58 +00:00
|
|
|
NULL,
|
|
|
|
};
|
|
|
|
|
|
|
|
DT_MACHINE_START(OMAP3_GP_DT, "Generic OMAP3-GP (Flattened Device Tree)")
|
|
|
|
.reserve = omap_reserve,
|
|
|
|
.map_io = omap3_map_io,
|
|
|
|
.init_early = omap3430_init_early,
|
|
|
|
.init_irq = omap_intc_of_init,
|
|
|
|
.handle_irq = omap3_intc_handle_irq,
|
|
|
|
.init_machine = omap_generic_init,
|
2013-02-19 12:58:31 +00:00
|
|
|
.init_late = omap3_init_late,
|
2012-11-08 19:40:59 +00:00
|
|
|
.init_time = omap3_secure_sync32k_timer_init,
|
2012-09-12 16:40:58 +00:00
|
|
|
.dt_compat = omap3_gp_boards_compat,
|
2012-12-12 19:51:39 +00:00
|
|
|
.restart = omap3xxx_restart,
|
2011-09-20 19:24:47 +00:00
|
|
|
MACHINE_END
|
2013-12-06 22:20:17 +00:00
|
|
|
|
2014-04-29 11:05:11 +00:00
|
|
|
static const char *am3517_boards_compat[] __initconst = {
|
2013-12-06 22:20:17 +00:00
|
|
|
"ti,am3517",
|
|
|
|
NULL,
|
|
|
|
};
|
|
|
|
|
|
|
|
DT_MACHINE_START(AM3517_DT, "Generic AM3517 (Flattened Device Tree)")
|
|
|
|
.reserve = omap_reserve,
|
|
|
|
.map_io = omap3_map_io,
|
|
|
|
.init_early = am35xx_init_early,
|
|
|
|
.init_irq = omap_intc_of_init,
|
|
|
|
.handle_irq = omap3_intc_handle_irq,
|
|
|
|
.init_machine = omap_generic_init,
|
|
|
|
.init_late = omap3_init_late,
|
|
|
|
.init_time = omap3_gptimer_timer_init,
|
|
|
|
.dt_compat = am3517_boards_compat,
|
|
|
|
.restart = omap3xxx_restart,
|
|
|
|
MACHINE_END
|
2011-09-20 19:24:47 +00:00
|
|
|
#endif
|
|
|
|
|
2012-05-10 19:08:49 +00:00
|
|
|
#ifdef CONFIG_SOC_AM33XX
|
2014-04-29 11:05:11 +00:00
|
|
|
static const char *am33xx_boards_compat[] __initconst = {
|
2012-05-10 19:08:49 +00:00
|
|
|
"ti,am33xx",
|
|
|
|
NULL,
|
|
|
|
};
|
|
|
|
|
|
|
|
DT_MACHINE_START(AM33XX_DT, "Generic AM33XX (Flattened Device Tree)")
|
|
|
|
.reserve = omap_reserve,
|
|
|
|
.map_io = am33xx_map_io,
|
|
|
|
.init_early = am33xx_init_early,
|
2012-06-05 11:01:06 +00:00
|
|
|
.init_irq = omap_intc_of_init,
|
2012-05-10 19:08:49 +00:00
|
|
|
.handle_irq = omap3_intc_handle_irq,
|
|
|
|
.init_machine = omap_generic_init,
|
2013-10-16 15:39:02 +00:00
|
|
|
.init_late = am33xx_init_late,
|
2013-01-12 02:23:09 +00:00
|
|
|
.init_time = omap3_gptimer_timer_init,
|
2012-05-10 19:08:49 +00:00
|
|
|
.dt_compat = am33xx_boards_compat,
|
2013-01-23 21:02:40 +00:00
|
|
|
.restart = am33xx_restart,
|
2012-05-10 19:08:49 +00:00
|
|
|
MACHINE_END
|
|
|
|
#endif
|
|
|
|
|
2011-12-01 10:05:17 +00:00
|
|
|
#ifdef CONFIG_ARCH_OMAP4
|
2014-04-29 11:05:11 +00:00
|
|
|
static const char *omap4_boards_compat[] __initconst = {
|
2013-12-05 00:49:37 +00:00
|
|
|
"ti,omap4460",
|
|
|
|
"ti,omap4430",
|
2011-09-20 19:24:47 +00:00
|
|
|
"ti,omap4",
|
|
|
|
NULL,
|
|
|
|
};
|
|
|
|
|
|
|
|
DT_MACHINE_START(OMAP4_DT, "Generic OMAP4 (Flattened Device Tree)")
|
|
|
|
.reserve = omap_reserve,
|
2011-09-08 12:15:22 +00:00
|
|
|
.smp = smp_ops(omap4_smp_ops),
|
2011-09-20 19:24:47 +00:00
|
|
|
.map_io = omap4_map_io,
|
|
|
|
.init_early = omap4430_init_early,
|
2012-06-05 11:01:06 +00:00
|
|
|
.init_irq = omap_gic_of_init,
|
2011-09-23 11:51:57 +00:00
|
|
|
.init_machine = omap_generic_init,
|
2012-04-26 08:06:50 +00:00
|
|
|
.init_late = omap4430_init_late,
|
2012-11-08 19:40:59 +00:00
|
|
|
.init_time = omap4_local_timer_init,
|
2011-09-20 19:24:47 +00:00
|
|
|
.dt_compat = omap4_boards_compat,
|
2012-10-30 02:56:12 +00:00
|
|
|
.restart = omap44xx_restart,
|
2005-11-10 14:26:51 +00:00
|
|
|
MACHINE_END
|
2011-09-20 19:24:47 +00:00
|
|
|
#endif
|
2012-05-09 18:04:56 +00:00
|
|
|
|
|
|
|
#ifdef CONFIG_SOC_OMAP5
|
2014-04-29 11:05:11 +00:00
|
|
|
static const char *omap5_boards_compat[] __initconst = {
|
2013-12-05 00:49:37 +00:00
|
|
|
"ti,omap5432",
|
|
|
|
"ti,omap5430",
|
2012-05-09 18:04:56 +00:00
|
|
|
"ti,omap5",
|
|
|
|
NULL,
|
|
|
|
};
|
|
|
|
|
|
|
|
DT_MACHINE_START(OMAP5_DT, "Generic OMAP5 (Flattened Device Tree)")
|
|
|
|
.reserve = omap_reserve,
|
2011-09-08 12:15:22 +00:00
|
|
|
.smp = smp_ops(omap4_smp_ops),
|
2012-05-09 18:04:56 +00:00
|
|
|
.map_io = omap5_map_io,
|
|
|
|
.init_early = omap5_init_early,
|
|
|
|
.init_irq = omap_gic_of_init,
|
|
|
|
.init_machine = omap_generic_init,
|
2013-10-16 15:39:02 +00:00
|
|
|
.init_late = omap5_init_late,
|
2012-11-08 19:40:59 +00:00
|
|
|
.init_time = omap5_realtime_timer_init,
|
2012-05-09 18:04:56 +00:00
|
|
|
.dt_compat = omap5_boards_compat,
|
2012-10-30 02:56:12 +00:00
|
|
|
.restart = omap44xx_restart,
|
2012-05-09 18:04:56 +00:00
|
|
|
MACHINE_END
|
|
|
|
#endif
|
2013-05-27 14:36:53 +00:00
|
|
|
|
|
|
|
#ifdef CONFIG_SOC_AM43XX
|
2014-04-29 11:05:11 +00:00
|
|
|
static const char *am43_boards_compat[] __initconst = {
|
2013-12-05 00:49:37 +00:00
|
|
|
"ti,am4372",
|
2013-05-27 14:36:53 +00:00
|
|
|
"ti,am43",
|
|
|
|
NULL,
|
|
|
|
};
|
|
|
|
|
|
|
|
DT_MACHINE_START(AM43_DT, "Generic AM43 (Flattened Device Tree)")
|
|
|
|
.map_io = am33xx_map_io,
|
|
|
|
.init_early = am43xx_init_early,
|
2013-10-16 15:39:02 +00:00
|
|
|
.init_late = am43xx_init_late,
|
2013-05-27 14:36:53 +00:00
|
|
|
.init_irq = omap_gic_of_init,
|
|
|
|
.init_machine = omap_generic_init,
|
2014-02-07 10:21:26 +00:00
|
|
|
.init_time = omap3_gptimer_timer_init,
|
2013-05-27 14:36:53 +00:00
|
|
|
.dt_compat = am43_boards_compat,
|
2014-02-28 19:43:45 +00:00
|
|
|
.restart = omap44xx_restart,
|
2013-05-27 14:36:53 +00:00
|
|
|
MACHINE_END
|
|
|
|
#endif
|
2013-02-07 08:23:05 +00:00
|
|
|
|
|
|
|
#ifdef CONFIG_SOC_DRA7XX
|
2014-04-29 11:05:12 +00:00
|
|
|
static const char *dra74x_boards_compat[] __initconst = {
|
|
|
|
"ti,dra742",
|
2013-02-07 08:23:05 +00:00
|
|
|
"ti,dra7",
|
|
|
|
NULL,
|
|
|
|
};
|
|
|
|
|
2014-04-29 11:05:12 +00:00
|
|
|
DT_MACHINE_START(DRA74X_DT, "Generic DRA74X (Flattened Device Tree)")
|
2013-02-07 08:23:05 +00:00
|
|
|
.reserve = omap_reserve,
|
|
|
|
.smp = smp_ops(omap4_smp_ops),
|
|
|
|
.map_io = omap5_map_io,
|
|
|
|
.init_early = dra7xx_init_early,
|
2013-10-16 15:39:02 +00:00
|
|
|
.init_late = dra7xx_init_late,
|
2013-02-07 08:23:05 +00:00
|
|
|
.init_irq = omap_gic_of_init,
|
|
|
|
.init_machine = omap_generic_init,
|
|
|
|
.init_time = omap5_realtime_timer_init,
|
2014-04-29 11:05:12 +00:00
|
|
|
.dt_compat = dra74x_boards_compat,
|
|
|
|
.restart = omap44xx_restart,
|
|
|
|
MACHINE_END
|
|
|
|
|
|
|
|
static const char *dra72x_boards_compat[] __initconst = {
|
|
|
|
"ti,dra722",
|
|
|
|
NULL,
|
|
|
|
};
|
|
|
|
|
|
|
|
DT_MACHINE_START(DRA72X_DT, "Generic DRA72X (Flattened Device Tree)")
|
|
|
|
.reserve = omap_reserve,
|
|
|
|
.map_io = omap5_map_io,
|
|
|
|
.init_early = dra7xx_init_early,
|
|
|
|
.init_late = dra7xx_init_late,
|
|
|
|
.init_irq = omap_gic_of_init,
|
|
|
|
.init_machine = omap_generic_init,
|
|
|
|
.init_time = omap5_realtime_timer_init,
|
|
|
|
.dt_compat = dra72x_boards_compat,
|
2013-07-09 07:32:15 +00:00
|
|
|
.restart = omap44xx_restart,
|
2013-02-07 08:23:05 +00:00
|
|
|
MACHINE_END
|
|
|
|
#endif
|