11dbae815STony Lindgren /* 21dbae815STony Lindgren * Copyright (C) 2005 Nokia Corporation 31dbae815STony Lindgren * Author: Paul Mundt <paul.mundt@nokia.com> 41dbae815STony Lindgren * 58d61649dSBenoit Cousson * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/ 61dbae815STony Lindgren * 78d61649dSBenoit Cousson * Modified from the original mach-omap/omap2/board-generic.c did by Paul 88d61649dSBenoit Cousson * to support the OMAP2+ device tree boards with an unique board file. 91dbae815STony Lindgren * 101dbae815STony Lindgren * This program is free software; you can redistribute it and/or modify 111dbae815STony Lindgren * it under the terms of the GNU General Public License version 2 as 121dbae815STony Lindgren * published by the Free Software Foundation. 131dbae815STony Lindgren */ 148d61649dSBenoit Cousson #include <linux/io.h> 15fbf75da7SBenoit Cousson #include <linux/of_irq.h> 168d61649dSBenoit Cousson #include <linux/of_platform.h> 178d61649dSBenoit Cousson #include <linux/irqdomain.h> 181dbae815STony Lindgren 19a09e64fbSRussell King #include <mach/hardware.h> 20b755706cSBenoit Cousson #include <asm/hardware/gic.h> 211dbae815STony Lindgren #include <asm/mach/arch.h> 221dbae815STony Lindgren 23ce491cf8STony Lindgren #include <plat/board.h> 244e65331cSTony Lindgren #include "common.h" 25a7cbb9b1SBenoit Cousson #include "common-board-devices.h" 261dbae815STony Lindgren 2775a57fe9STony Lindgren #if !(defined(CONFIG_ARCH_OMAP2) || defined(CONFIG_ARCH_OMAP3)) 2875a57fe9STony Lindgren #define omap_intc_of_init NULL 2975a57fe9STony Lindgren #endif 3075a57fe9STony Lindgren #ifndef CONFIG_ARCH_OMAP4 3175a57fe9STony Lindgren #define gic_of_init NULL 3275a57fe9STony Lindgren #endif 3375a57fe9STony Lindgren 34fbf75da7SBenoit Cousson static struct of_device_id irq_match[] __initdata = { 35fbf75da7SBenoit Cousson { .compatible = "ti,omap2-intc", .data = omap_intc_of_init, }, 36fbf75da7SBenoit Cousson { .compatible = "arm,cortex-a9-gic", .data = gic_of_init, }, 37fbf75da7SBenoit Cousson { } 38fbf75da7SBenoit Cousson }; 39fbf75da7SBenoit Cousson 40fbf75da7SBenoit Cousson static void __init omap_init_irq(void) 41fbf75da7SBenoit Cousson { 42fbf75da7SBenoit Cousson of_irq_init(irq_match); 43fbf75da7SBenoit Cousson } 44fbf75da7SBenoit Cousson 458d61649dSBenoit Cousson static struct of_device_id omap_dt_match_table[] __initdata = { 468d61649dSBenoit Cousson { .compatible = "simple-bus", }, 478d61649dSBenoit Cousson { .compatible = "ti,omap-infra", }, 488d61649dSBenoit Cousson { } 49b3c6df3aSPaul Walmsley }; 50b3c6df3aSPaul Walmsley 511dbae815STony Lindgren static void __init omap_generic_init(void) 521dbae815STony Lindgren { 53a4ca9dbeSTony Lindgren omap_sdrc_init(NULL, NULL); 548d61649dSBenoit Cousson 558d61649dSBenoit Cousson of_platform_populate(NULL, omap_dt_match_table, NULL, NULL); 561dbae815STony Lindgren } 571dbae815STony Lindgren 580e02a8c1SBenoit Cousson #ifdef CONFIG_SOC_OMAP2420 598d61649dSBenoit Cousson static const char *omap242x_boards_compat[] __initdata = { 608d61649dSBenoit Cousson "ti,omap2420", 618d61649dSBenoit Cousson NULL, 628d61649dSBenoit Cousson }; 631dbae815STony Lindgren 648d61649dSBenoit Cousson DT_MACHINE_START(OMAP242X_DT, "Generic OMAP2420 (Flattened Device Tree)") 6571ee7dadSRussell King .reserve = omap_reserve, 668d61649dSBenoit Cousson .map_io = omap242x_map_io, 678d61649dSBenoit Cousson .init_early = omap2420_init_early, 68fbf75da7SBenoit Cousson .init_irq = omap_init_irq, 69b755706cSBenoit Cousson .handle_irq = omap2_intc_handle_irq, 701dbae815STony Lindgren .init_machine = omap_generic_init, 7113340b2aSArnd Bergmann .timer = &omap2_timer, 728d61649dSBenoit Cousson .dt_compat = omap242x_boards_compat, 73baa95883SRussell King .restart = omap_prcm_restart, 741dbae815STony Lindgren MACHINE_END 758d61649dSBenoit Cousson #endif 768d61649dSBenoit Cousson 770e02a8c1SBenoit Cousson #ifdef CONFIG_SOC_OMAP2430 788d61649dSBenoit Cousson static const char *omap243x_boards_compat[] __initdata = { 798d61649dSBenoit Cousson "ti,omap2430", 808d61649dSBenoit Cousson NULL, 818d61649dSBenoit Cousson }; 828d61649dSBenoit Cousson 838d61649dSBenoit Cousson DT_MACHINE_START(OMAP243X_DT, "Generic OMAP2430 (Flattened Device Tree)") 848d61649dSBenoit Cousson .reserve = omap_reserve, 858d61649dSBenoit Cousson .map_io = omap243x_map_io, 868d61649dSBenoit Cousson .init_early = omap2430_init_early, 87fbf75da7SBenoit Cousson .init_irq = omap_init_irq, 886b2f55d7SMarc Zyngier .handle_irq = omap2_intc_handle_irq, 898d61649dSBenoit Cousson .init_machine = omap_generic_init, 908d61649dSBenoit Cousson .timer = &omap2_timer, 918d61649dSBenoit Cousson .dt_compat = omap243x_boards_compat, 92baa95883SRussell King .restart = omap_prcm_restart, 938d61649dSBenoit Cousson MACHINE_END 948d61649dSBenoit Cousson #endif 958d61649dSBenoit Cousson 960e02a8c1SBenoit Cousson #ifdef CONFIG_ARCH_OMAP3 978d61649dSBenoit Cousson static const char *omap3_boards_compat[] __initdata = { 988d61649dSBenoit Cousson "ti,omap3", 998d61649dSBenoit Cousson NULL, 1008d61649dSBenoit Cousson }; 1018d61649dSBenoit Cousson 1028d61649dSBenoit Cousson DT_MACHINE_START(OMAP3_DT, "Generic OMAP3 (Flattened Device Tree)") 1038d61649dSBenoit Cousson .reserve = omap_reserve, 1048d61649dSBenoit Cousson .map_io = omap3_map_io, 1058d61649dSBenoit Cousson .init_early = omap3430_init_early, 106fbf75da7SBenoit Cousson .init_irq = omap_init_irq, 107b755706cSBenoit Cousson .handle_irq = omap3_intc_handle_irq, 10893651b85SBenoit Cousson .init_machine = omap_generic_init, 1098d61649dSBenoit Cousson .timer = &omap3_timer, 1108d61649dSBenoit Cousson .dt_compat = omap3_boards_compat, 111baa95883SRussell King .restart = omap_prcm_restart, 1128d61649dSBenoit Cousson MACHINE_END 1138d61649dSBenoit Cousson #endif 1148d61649dSBenoit Cousson 1150e02a8c1SBenoit Cousson #ifdef CONFIG_ARCH_OMAP4 1168d61649dSBenoit Cousson static const char *omap4_boards_compat[] __initdata = { 1178d61649dSBenoit Cousson "ti,omap4", 1188d61649dSBenoit Cousson NULL, 1198d61649dSBenoit Cousson }; 1208d61649dSBenoit Cousson 1218d61649dSBenoit Cousson DT_MACHINE_START(OMAP4_DT, "Generic OMAP4 (Flattened Device Tree)") 1228d61649dSBenoit Cousson .reserve = omap_reserve, 1238d61649dSBenoit Cousson .map_io = omap4_map_io, 1248d61649dSBenoit Cousson .init_early = omap4430_init_early, 125fbf75da7SBenoit Cousson .init_irq = omap_init_irq, 126b755706cSBenoit Cousson .handle_irq = gic_handle_irq, 12793651b85SBenoit Cousson .init_machine = omap_generic_init, 1288d61649dSBenoit Cousson .timer = &omap4_timer, 1298d61649dSBenoit Cousson .dt_compat = omap4_boards_compat, 130baa95883SRussell King .restart = omap_prcm_restart, 1318d61649dSBenoit Cousson MACHINE_END 1328d61649dSBenoit Cousson #endif 133