mirror of
https://github.com/edk2-porting/linux-next.git
synced 2025-01-10 06:34:17 +08:00
6a0e6b3872
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>
261 lines
6.6 KiB
C
261 lines
6.6 KiB
C
/*
|
|
* Copyright (C) 2005 Nokia Corporation
|
|
* Author: Paul Mundt <paul.mundt@nokia.com>
|
|
*
|
|
* Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
|
|
*
|
|
* 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.
|
|
*
|
|
* 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.
|
|
*/
|
|
#include <linux/io.h>
|
|
#include <linux/of_irq.h>
|
|
#include <linux/of_platform.h>
|
|
#include <linux/irqdomain.h>
|
|
|
|
#include <asm/mach/arch.h>
|
|
|
|
#include "common.h"
|
|
|
|
#if !(defined(CONFIG_ARCH_OMAP2) || defined(CONFIG_ARCH_OMAP3))
|
|
#define intc_of_init NULL
|
|
#endif
|
|
#ifndef CONFIG_ARCH_OMAP4
|
|
#define gic_of_init NULL
|
|
#endif
|
|
|
|
static struct of_device_id omap_dt_match_table[] __initdata = {
|
|
{ .compatible = "simple-bus", },
|
|
{ .compatible = "ti,omap-infra", },
|
|
{ }
|
|
};
|
|
|
|
static void __init omap_generic_init(void)
|
|
{
|
|
omapdss_early_init_of();
|
|
|
|
pdata_quirks_init(omap_dt_match_table);
|
|
|
|
omapdss_init_of();
|
|
}
|
|
|
|
#ifdef CONFIG_SOC_OMAP2420
|
|
static const char *omap242x_boards_compat[] __initdata = {
|
|
"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,
|
|
.init_irq = omap_intc_of_init,
|
|
.handle_irq = omap2_intc_handle_irq,
|
|
.init_machine = omap_generic_init,
|
|
.init_time = omap2_sync32k_timer_init,
|
|
.dt_compat = omap242x_boards_compat,
|
|
.restart = omap2xxx_restart,
|
|
MACHINE_END
|
|
#endif
|
|
|
|
#ifdef CONFIG_SOC_OMAP2430
|
|
static const char *omap243x_boards_compat[] __initdata = {
|
|
"ti,omap2430",
|
|
NULL,
|
|
};
|
|
|
|
DT_MACHINE_START(OMAP243X_DT, "Generic OMAP2430 (Flattened Device Tree)")
|
|
.reserve = omap_reserve,
|
|
.map_io = omap243x_map_io,
|
|
.init_early = omap2430_init_early,
|
|
.init_irq = omap_intc_of_init,
|
|
.handle_irq = omap2_intc_handle_irq,
|
|
.init_machine = omap_generic_init,
|
|
.init_time = omap2_sync32k_timer_init,
|
|
.dt_compat = omap243x_boards_compat,
|
|
.restart = omap2xxx_restart,
|
|
MACHINE_END
|
|
#endif
|
|
|
|
#ifdef CONFIG_ARCH_OMAP3
|
|
static const char *omap3_boards_compat[] __initdata = {
|
|
"ti,omap3430",
|
|
"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,
|
|
.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 = omap3_boards_compat,
|
|
.restart = omap3xxx_restart,
|
|
MACHINE_END
|
|
|
|
static const char *omap36xx_boards_compat[] __initdata = {
|
|
"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
|
|
|
|
static const char *omap3_gp_boards_compat[] __initdata = {
|
|
"ti,omap3-beagle",
|
|
"timll,omap3-devkit8000",
|
|
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,
|
|
.init_late = omap3_init_late,
|
|
.init_time = omap3_secure_sync32k_timer_init,
|
|
.dt_compat = omap3_gp_boards_compat,
|
|
.restart = omap3xxx_restart,
|
|
MACHINE_END
|
|
|
|
static const char *am3517_boards_compat[] __initdata = {
|
|
"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
|
|
#endif
|
|
|
|
#ifdef CONFIG_SOC_AM33XX
|
|
static const char *am33xx_boards_compat[] __initdata = {
|
|
"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,
|
|
.init_irq = omap_intc_of_init,
|
|
.handle_irq = omap3_intc_handle_irq,
|
|
.init_machine = omap_generic_init,
|
|
.init_late = am33xx_init_late,
|
|
.init_time = omap3_gptimer_timer_init,
|
|
.dt_compat = am33xx_boards_compat,
|
|
.restart = am33xx_restart,
|
|
MACHINE_END
|
|
#endif
|
|
|
|
#ifdef CONFIG_ARCH_OMAP4
|
|
static const char *omap4_boards_compat[] __initdata = {
|
|
"ti,omap4460",
|
|
"ti,omap4430",
|
|
"ti,omap4",
|
|
NULL,
|
|
};
|
|
|
|
DT_MACHINE_START(OMAP4_DT, "Generic OMAP4 (Flattened Device Tree)")
|
|
.reserve = omap_reserve,
|
|
.smp = smp_ops(omap4_smp_ops),
|
|
.map_io = omap4_map_io,
|
|
.init_early = omap4430_init_early,
|
|
.init_irq = omap_gic_of_init,
|
|
.init_machine = omap_generic_init,
|
|
.init_late = omap4430_init_late,
|
|
.init_time = omap4_local_timer_init,
|
|
.dt_compat = omap4_boards_compat,
|
|
.restart = omap44xx_restart,
|
|
MACHINE_END
|
|
#endif
|
|
|
|
#ifdef CONFIG_SOC_OMAP5
|
|
static const char *omap5_boards_compat[] __initdata = {
|
|
"ti,omap5432",
|
|
"ti,omap5430",
|
|
"ti,omap5",
|
|
NULL,
|
|
};
|
|
|
|
DT_MACHINE_START(OMAP5_DT, "Generic OMAP5 (Flattened Device Tree)")
|
|
.reserve = omap_reserve,
|
|
.smp = smp_ops(omap4_smp_ops),
|
|
.map_io = omap5_map_io,
|
|
.init_early = omap5_init_early,
|
|
.init_irq = omap_gic_of_init,
|
|
.init_machine = omap_generic_init,
|
|
.init_late = omap5_init_late,
|
|
.init_time = omap5_realtime_timer_init,
|
|
.dt_compat = omap5_boards_compat,
|
|
.restart = omap44xx_restart,
|
|
MACHINE_END
|
|
#endif
|
|
|
|
#ifdef CONFIG_SOC_AM43XX
|
|
static const char *am43_boards_compat[] __initdata = {
|
|
"ti,am4372",
|
|
"ti,am43",
|
|
NULL,
|
|
};
|
|
|
|
DT_MACHINE_START(AM43_DT, "Generic AM43 (Flattened Device Tree)")
|
|
.map_io = am33xx_map_io,
|
|
.init_early = am43xx_init_early,
|
|
.init_late = am43xx_init_late,
|
|
.init_irq = omap_gic_of_init,
|
|
.init_machine = omap_generic_init,
|
|
.init_time = omap3_sync32k_timer_init,
|
|
.dt_compat = am43_boards_compat,
|
|
MACHINE_END
|
|
#endif
|
|
|
|
#ifdef CONFIG_SOC_DRA7XX
|
|
static const char *dra7xx_boards_compat[] __initdata = {
|
|
"ti,dra7xx",
|
|
"ti,dra7",
|
|
NULL,
|
|
};
|
|
|
|
DT_MACHINE_START(DRA7XX_DT, "Generic DRA7XX (Flattened Device Tree)")
|
|
.reserve = omap_reserve,
|
|
.smp = smp_ops(omap4_smp_ops),
|
|
.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 = dra7xx_boards_compat,
|
|
.restart = omap44xx_restart,
|
|
MACHINE_END
|
|
#endif
|