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>
2011-09-22 21:52:02 +02:00
# include <linux/i2c/twl.h>
2005-11-10 14:26:51 +00:00
2008-08-05 16:14:15 +01:00
# include <mach/hardware.h>
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>
2009-10-20 09:40:47 -07:00
# include <plat/board.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))
# define omap_intc_of_init NULL
# endif
# ifndef CONFIG_ARCH_OMAP4
# define gic_of_init NULL
# endif
2011-09-21 23:30:31 +02:00
static struct of_device_id irq_match [ ] __initdata = {
{ . compatible = " ti,omap2-intc " , . data = omap_intc_of_init , } ,
{ . compatible = " arm,cortex-a9-gic " , . data = gic_of_init , } ,
{ }
} ;
static void __init omap_init_irq ( void )
{
of_irq_init ( irq_match ) ;
}
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 ,
2011-09-21 23:30:31 +02:00
. init_irq = omap_init_irq ,
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 ,
2011-09-21 23:30:31 +02:00
. init_irq = omap_init_irq ,
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
2012-03-05 13:47:59 -08:00
static struct twl4030_platform_data beagle_twldata = {
. irq_base = TWL4030_IRQ_BASE ,
. irq_end = TWL4030_IRQ_END ,
} ;
static void __init omap3_i2c_init ( void )
{
omap3_pmic_init ( " twl4030 " , & beagle_twldata ) ;
}
static void __init omap3_init ( void )
{
omap3_i2c_init ( ) ;
omap_generic_init ( ) ;
}
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 ,
2011-09-21 23:30:31 +02:00
. init_irq = omap_init_irq ,
2011-12-07 11:47:40 -08:00
. handle_irq = omap3_intc_handle_irq ,
2011-09-22 21:52:02 +02:00
. init_machine = omap3_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
2011-12-01 11:05:17 +01:00
# ifdef CONFIG_ARCH_OMAP4
2012-03-05 13:47:59 -08:00
static struct twl4030_platform_data sdp4430_twldata = {
. irq_base = TWL6030_IRQ_BASE ,
. irq_end = TWL6030_IRQ_END ,
} ;
static void __init omap4_i2c_init ( void )
{
omap4_pmic_init ( " twl6030 " , & sdp4430_twldata ) ;
}
static void __init omap4_init ( void )
{
omap4_i2c_init ( ) ;
omap_generic_init ( ) ;
}
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 ,
. map_io = omap4_map_io ,
. init_early = omap4430_init_early ,
2011-09-21 23:30:31 +02:00
. init_irq = omap_init_irq ,
2011-12-07 11:47:40 -08:00
. handle_irq = gic_handle_irq ,
2011-09-22 21:52:02 +02:00
. init_machine = omap4_init ,
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