2005-11-10 14:26:51 +00:00
/*
* Copyright ( C ) 2005 Nokia Corporation
* Author : Paul Mundt < paul . mundt @ nokia . com >
*
2011-09-20 21:24:47 +02:00
* Copyright ( C ) 2011 Texas Instruments Incorporated - http : //www.ti.com/
2005-11-10 14:26:51 +00:00
*
2011-09-20 21:24:47 +02: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 21:24:47 +02:00
# include <linux/io.h>
2011-09-21 23:30:31 +02:00
# include <linux/of_irq.h>
2011-09-20 21:24:47 +02:00
# include <linux/of_platform.h>
# include <linux/irqdomain.h>
2005-11-10 14:26:51 +00:00
2011-12-07 11:47:40 -08:00
# include <asm/hardware/gic.h>
2005-11-10 14:26:51 +00:00
# include <asm/mach/arch.h>
2011-11-10 22:45:17 +01:00
# include "common.h"
2011-09-22 21:52:02 +02:00
# include "common-board-devices.h"
2011-09-20 21:24:47 +02:00
2012-03-05 13:47:28 -08:00
# if !(defined(CONFIG_ARCH_OMAP2) || defined(CONFIG_ARCH_OMAP3))
2012-06-05 16:31:06 +05:30
# define intc_of_init NULL
2012-03-05 13:47:28 -08:00
# endif
# ifndef CONFIG_ARCH_OMAP4
# define gic_of_init NULL
# endif
2011-09-20 21:24:47 +02:00
static struct of_device_id omap_dt_match_table [ ] __initdata = {
{ . compatible = " simple-bus " , } ,
{ . compatible = " ti,omap-infra " , } ,
{ }
2009-09-03 20:14:02 +03:00
} ;
2005-11-10 14:26:51 +00:00
static void __init omap_generic_init ( void )
{
2011-08-22 23:57:23 -07:00
omap_sdrc_init ( NULL , NULL ) ;
2005-11-10 14:26:51 +00:00
2011-09-20 21:24:47 +02:00
of_platform_populate ( NULL , omap_dt_match_table , NULL , NULL ) ;
2005-11-10 14:26:51 +00:00
}
2011-12-01 11:05:17 +01:00
# ifdef CONFIG_SOC_OMAP2420
2011-09-20 21:24:47 +02:00
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 ,
2012-06-05 16:31:06 +05:30
. init_irq = omap_intc_of_init ,
2011-12-07 11:47:40 -08:00
. handle_irq = omap2_intc_handle_irq ,
2011-09-20 21:24:47 +02:00
. init_machine = omap_generic_init ,
. timer = & omap2_timer ,
. dt_compat = omap242x_boards_compat ,
2011-11-05 17:06:28 +00:00
. restart = omap_prcm_restart ,
2011-09-20 21:24:47 +02:00
MACHINE_END
# endif
2011-12-01 11:05:17 +01:00
# ifdef CONFIG_SOC_OMAP2430
2011-09-20 21:24:47 +02:00
static const char * omap243x_boards_compat [ ] __initdata = {
" ti,omap2430 " ,
NULL ,
} ;
DT_MACHINE_START ( OMAP243X_DT , " Generic OMAP2430 (Flattened Device Tree) " )
2010-05-23 10:18:16 +01:00
. reserve = omap_reserve ,
2011-09-20 21:24:47 +02:00
. map_io = omap243x_map_io ,
. init_early = omap2430_init_early ,
2012-06-05 16:31:06 +05:30
. init_irq = omap_intc_of_init ,
2011-09-06 10:23:45 +01:00
. handle_irq = omap2_intc_handle_irq ,
2005-11-10 14:26:51 +00:00
. init_machine = omap_generic_init ,
2011-06-30 12:58:01 +00:00
. timer = & omap2_timer ,
2011-09-20 21:24:47 +02:00
. dt_compat = omap243x_boards_compat ,
2011-11-05 17:06:28 +00:00
. restart = omap_prcm_restart ,
2011-09-20 21:24:47 +02:00
MACHINE_END
# endif
2011-12-01 11:05:17 +01:00
# ifdef CONFIG_ARCH_OMAP3
2011-09-20 21:24:47 +02:00
static const char * omap3_boards_compat [ ] __initdata = {
" 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 16:31:06 +05:30
. init_irq = omap_intc_of_init ,
2011-12-07 11:47:40 -08:00
. handle_irq = omap3_intc_handle_irq ,
2011-09-23 13:51:57 +02:00
. init_machine = omap_generic_init ,
2011-09-20 21:24:47 +02:00
. timer = & omap3_timer ,
. dt_compat = omap3_boards_compat ,
2011-11-05 17:06:28 +00:00
. restart = omap_prcm_restart ,
2011-09-20 21:24:47 +02:00
MACHINE_END
# endif
2012-05-11 00:38:49 +05:30
# 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 ,
2012-06-05 16:31:06 +05:30
. init_irq = omap_intc_of_init ,
2012-05-11 00:38:49 +05:30
. handle_irq = omap3_intc_handle_irq ,
. init_machine = omap_generic_init ,
. timer = & omap3_am33xx_timer ,
. dt_compat = am33xx_boards_compat ,
MACHINE_END
# endif
2011-12-01 11:05:17 +01:00
# ifdef CONFIG_ARCH_OMAP4
2011-09-20 21:24:47 +02:00
static const char * omap4_boards_compat [ ] __initdata = {
" ti,omap4 " ,
NULL ,
} ;
DT_MACHINE_START ( OMAP4_DT , " Generic OMAP4 (Flattened Device Tree) " )
. reserve = omap_reserve ,
2011-09-08 13:15:22 +01:00
. smp = smp_ops ( omap4_smp_ops ) ,
2011-09-20 21:24:47 +02:00
. map_io = omap4_map_io ,
. init_early = omap4430_init_early ,
2012-06-05 16:31:06 +05:30
. init_irq = omap_gic_of_init ,
2011-12-07 11:47:40 -08:00
. handle_irq = gic_handle_irq ,
2011-09-23 13:51:57 +02:00
. init_machine = omap_generic_init ,
2012-04-26 16:06:50 +08:00
. init_late = omap4430_init_late ,
2011-09-20 21:24:47 +02:00
. timer = & omap4_timer ,
. dt_compat = omap4_boards_compat ,
2011-11-05 17:06:28 +00:00
. restart = omap_prcm_restart ,
2005-11-10 14:26:51 +00:00
MACHINE_END
2011-09-20 21:24:47 +02:00
# endif
2012-05-09 23:34:56 +05:30
# ifdef CONFIG_SOC_OMAP5
static const char * omap5_boards_compat [ ] __initdata = {
" ti,omap5 " ,
NULL ,
} ;
DT_MACHINE_START ( OMAP5_DT , " Generic OMAP5 (Flattened Device Tree) " )
. reserve = omap_reserve ,
2011-09-08 13:15:22 +01:00
. smp = smp_ops ( omap4_smp_ops ) ,
2012-05-09 23:34:56 +05:30
. map_io = omap5_map_io ,
. init_early = omap5_init_early ,
. init_irq = omap_gic_of_init ,
. handle_irq = gic_handle_irq ,
. init_machine = omap_generic_init ,
. timer = & omap5_timer ,
. dt_compat = omap5_boards_compat ,
. restart = omap_prcm_restart ,
MACHINE_END
# endif