| Tony Lindgren | 1dbae81 | 2005-11-10 14:26:51 +0000 | [diff] [blame] | 1 | /* | 
| Tony Lindgren | 1dbae81 | 2005-11-10 14:26:51 +0000 | [diff] [blame] | 2 |  * Copyright (C) 2005 Nokia Corporation | 
 | 3 |  * Author: Paul Mundt <paul.mundt@nokia.com> | 
 | 4 |  * | 
| Benoit Cousson | 8d61649 | 2011-09-20 21:24:47 +0200 | [diff] [blame] | 5 |  * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/ | 
| Tony Lindgren | 1dbae81 | 2005-11-10 14:26:51 +0000 | [diff] [blame] | 6 |  * | 
| Benoit Cousson | 8d61649 | 2011-09-20 21:24:47 +0200 | [diff] [blame] | 7 |  * Modified from the original mach-omap/omap2/board-generic.c did by Paul | 
 | 8 |  * to support the OMAP2+ device tree boards with an unique board file. | 
| Tony Lindgren | 1dbae81 | 2005-11-10 14:26:51 +0000 | [diff] [blame] | 9 |  * | 
 | 10 |  * This program is free software; you can redistribute it and/or modify | 
 | 11 |  * it under the terms of the GNU General Public License version 2 as | 
 | 12 |  * published by the Free Software Foundation. | 
 | 13 |  */ | 
| Benoit Cousson | 8d61649 | 2011-09-20 21:24:47 +0200 | [diff] [blame] | 14 | #include <linux/io.h> | 
| Benoit Cousson | fbf75da | 2011-09-21 23:30:31 +0200 | [diff] [blame] | 15 | #include <linux/of_irq.h> | 
| Benoit Cousson | 8d61649 | 2011-09-20 21:24:47 +0200 | [diff] [blame] | 16 | #include <linux/of_platform.h> | 
 | 17 | #include <linux/irqdomain.h> | 
| Tony Lindgren | 1dbae81 | 2005-11-10 14:26:51 +0000 | [diff] [blame] | 18 |  | 
| Russell King | a09e64f | 2008-08-05 16:14:15 +0100 | [diff] [blame] | 19 | #include <mach/hardware.h> | 
| Benoit Cousson | b755706 | 2011-12-07 11:47:40 -0800 | [diff] [blame] | 20 | #include <asm/hardware/gic.h> | 
| Tony Lindgren | 1dbae81 | 2005-11-10 14:26:51 +0000 | [diff] [blame] | 21 | #include <asm/mach/arch.h> | 
| Tony Lindgren | 1dbae81 | 2005-11-10 14:26:51 +0000 | [diff] [blame] | 22 |  | 
| Tony Lindgren | ce491cf | 2009-10-20 09:40:47 -0700 | [diff] [blame] | 23 | #include <plat/board.h> | 
| Tony Lindgren | 4e65331 | 2011-11-10 22:45:17 +0100 | [diff] [blame] | 24 | #include "common.h" | 
| Benoit Cousson | a7cbb9b | 2011-09-22 21:52:02 +0200 | [diff] [blame] | 25 | #include "common-board-devices.h" | 
| Tony Lindgren | 1dbae81 | 2005-11-10 14:26:51 +0000 | [diff] [blame] | 26 |  | 
| Tony Lindgren | 75a57fe | 2012-03-05 13:47:28 -0800 | [diff] [blame] | 27 | #if !(defined(CONFIG_ARCH_OMAP2) || defined(CONFIG_ARCH_OMAP3)) | 
 | 28 | #define omap_intc_of_init	NULL | 
 | 29 | #endif | 
 | 30 | #ifndef CONFIG_ARCH_OMAP4 | 
 | 31 | #define gic_of_init		NULL | 
 | 32 | #endif | 
 | 33 |  | 
| Benoit Cousson | fbf75da | 2011-09-21 23:30:31 +0200 | [diff] [blame] | 34 | static struct of_device_id irq_match[] __initdata = { | 
 | 35 | 	{ .compatible = "ti,omap2-intc", .data = omap_intc_of_init, }, | 
 | 36 | 	{ .compatible = "arm,cortex-a9-gic", .data = gic_of_init, }, | 
 | 37 | 	{ } | 
 | 38 | }; | 
 | 39 |  | 
 | 40 | static void __init omap_init_irq(void) | 
 | 41 | { | 
 | 42 | 	of_irq_init(irq_match); | 
 | 43 | } | 
 | 44 |  | 
| Benoit Cousson | 8d61649 | 2011-09-20 21:24:47 +0200 | [diff] [blame] | 45 | static struct of_device_id omap_dt_match_table[] __initdata = { | 
 | 46 | 	{ .compatible = "simple-bus", }, | 
 | 47 | 	{ .compatible = "ti,omap-infra", }, | 
 | 48 | 	{ } | 
| Paul Walmsley | b3c6df3 | 2009-09-03 20:14:02 +0300 | [diff] [blame] | 49 | }; | 
 | 50 |  | 
| Tony Lindgren | 1dbae81 | 2005-11-10 14:26:51 +0000 | [diff] [blame] | 51 | static void __init omap_generic_init(void) | 
 | 52 | { | 
| Tony Lindgren | a4ca9db | 2011-08-22 23:57:23 -0700 | [diff] [blame] | 53 | 	omap_sdrc_init(NULL, NULL); | 
| Benoit Cousson | 8d61649 | 2011-09-20 21:24:47 +0200 | [diff] [blame] | 54 |  | 
 | 55 | 	of_platform_populate(NULL, omap_dt_match_table, NULL, NULL); | 
| Tony Lindgren | 1dbae81 | 2005-11-10 14:26:51 +0000 | [diff] [blame] | 56 | } | 
 | 57 |  | 
| Benoit Cousson | 0e02a8c | 2011-12-01 11:05:17 +0100 | [diff] [blame] | 58 | #ifdef CONFIG_SOC_OMAP2420 | 
| Benoit Cousson | 8d61649 | 2011-09-20 21:24:47 +0200 | [diff] [blame] | 59 | static const char *omap242x_boards_compat[] __initdata = { | 
 | 60 | 	"ti,omap2420", | 
 | 61 | 	NULL, | 
 | 62 | }; | 
| Tony Lindgren | 1dbae81 | 2005-11-10 14:26:51 +0000 | [diff] [blame] | 63 |  | 
| Benoit Cousson | 8d61649 | 2011-09-20 21:24:47 +0200 | [diff] [blame] | 64 | DT_MACHINE_START(OMAP242X_DT, "Generic OMAP2420 (Flattened Device Tree)") | 
| Russell King | 71ee7da | 2010-05-23 10:18:16 +0100 | [diff] [blame] | 65 | 	.reserve	= omap_reserve, | 
| Benoit Cousson | 8d61649 | 2011-09-20 21:24:47 +0200 | [diff] [blame] | 66 | 	.map_io		= omap242x_map_io, | 
 | 67 | 	.init_early	= omap2420_init_early, | 
| Benoit Cousson | fbf75da | 2011-09-21 23:30:31 +0200 | [diff] [blame] | 68 | 	.init_irq	= omap_init_irq, | 
| Benoit Cousson | b755706 | 2011-12-07 11:47:40 -0800 | [diff] [blame] | 69 | 	.handle_irq	= omap2_intc_handle_irq, | 
| Tony Lindgren | 1dbae81 | 2005-11-10 14:26:51 +0000 | [diff] [blame] | 70 | 	.init_machine	= omap_generic_init, | 
| Arnd Bergmann | 13340b2 | 2011-06-30 12:58:01 +0000 | [diff] [blame] | 71 | 	.timer		= &omap2_timer, | 
| Benoit Cousson | 8d61649 | 2011-09-20 21:24:47 +0200 | [diff] [blame] | 72 | 	.dt_compat	= omap242x_boards_compat, | 
| Russell King | baa9588 | 2011-11-05 17:06:28 +0000 | [diff] [blame] | 73 | 	.restart	= omap_prcm_restart, | 
| Tony Lindgren | 1dbae81 | 2005-11-10 14:26:51 +0000 | [diff] [blame] | 74 | MACHINE_END | 
| Benoit Cousson | 8d61649 | 2011-09-20 21:24:47 +0200 | [diff] [blame] | 75 | #endif | 
 | 76 |  | 
| Benoit Cousson | 0e02a8c | 2011-12-01 11:05:17 +0100 | [diff] [blame] | 77 | #ifdef CONFIG_SOC_OMAP2430 | 
| Benoit Cousson | 8d61649 | 2011-09-20 21:24:47 +0200 | [diff] [blame] | 78 | static const char *omap243x_boards_compat[] __initdata = { | 
 | 79 | 	"ti,omap2430", | 
 | 80 | 	NULL, | 
 | 81 | }; | 
 | 82 |  | 
 | 83 | DT_MACHINE_START(OMAP243X_DT, "Generic OMAP2430 (Flattened Device Tree)") | 
 | 84 | 	.reserve	= omap_reserve, | 
 | 85 | 	.map_io		= omap243x_map_io, | 
 | 86 | 	.init_early	= omap2430_init_early, | 
| Benoit Cousson | fbf75da | 2011-09-21 23:30:31 +0200 | [diff] [blame] | 87 | 	.init_irq	= omap_init_irq, | 
| Marc Zyngier | 6b2f55d | 2011-09-06 10:23:45 +0100 | [diff] [blame] | 88 | 	.handle_irq	= omap2_intc_handle_irq, | 
| Benoit Cousson | 8d61649 | 2011-09-20 21:24:47 +0200 | [diff] [blame] | 89 | 	.init_machine	= omap_generic_init, | 
 | 90 | 	.timer		= &omap2_timer, | 
 | 91 | 	.dt_compat	= omap243x_boards_compat, | 
| Russell King | baa9588 | 2011-11-05 17:06:28 +0000 | [diff] [blame] | 92 | 	.restart	= omap_prcm_restart, | 
| Benoit Cousson | 8d61649 | 2011-09-20 21:24:47 +0200 | [diff] [blame] | 93 | MACHINE_END | 
 | 94 | #endif | 
 | 95 |  | 
| Benoit Cousson | 0e02a8c | 2011-12-01 11:05:17 +0100 | [diff] [blame] | 96 | #ifdef CONFIG_ARCH_OMAP3 | 
| Benoit Cousson | 8d61649 | 2011-09-20 21:24:47 +0200 | [diff] [blame] | 97 | static const char *omap3_boards_compat[] __initdata = { | 
 | 98 | 	"ti,omap3", | 
 | 99 | 	NULL, | 
 | 100 | }; | 
 | 101 |  | 
 | 102 | DT_MACHINE_START(OMAP3_DT, "Generic OMAP3 (Flattened Device Tree)") | 
 | 103 | 	.reserve	= omap_reserve, | 
 | 104 | 	.map_io		= omap3_map_io, | 
 | 105 | 	.init_early	= omap3430_init_early, | 
| Benoit Cousson | fbf75da | 2011-09-21 23:30:31 +0200 | [diff] [blame] | 106 | 	.init_irq	= omap_init_irq, | 
| Benoit Cousson | b755706 | 2011-12-07 11:47:40 -0800 | [diff] [blame] | 107 | 	.handle_irq	= omap3_intc_handle_irq, | 
| Benoit Cousson | 93651b8 | 2011-09-23 13:51:57 +0200 | [diff] [blame] | 108 | 	.init_machine	= omap_generic_init, | 
| Benoit Cousson | 8d61649 | 2011-09-20 21:24:47 +0200 | [diff] [blame] | 109 | 	.timer		= &omap3_timer, | 
 | 110 | 	.dt_compat	= omap3_boards_compat, | 
| Russell King | baa9588 | 2011-11-05 17:06:28 +0000 | [diff] [blame] | 111 | 	.restart	= omap_prcm_restart, | 
| Benoit Cousson | 8d61649 | 2011-09-20 21:24:47 +0200 | [diff] [blame] | 112 | MACHINE_END | 
 | 113 | #endif | 
 | 114 |  | 
| Benoit Cousson | 0e02a8c | 2011-12-01 11:05:17 +0100 | [diff] [blame] | 115 | #ifdef CONFIG_ARCH_OMAP4 | 
| Benoit Cousson | 8d61649 | 2011-09-20 21:24:47 +0200 | [diff] [blame] | 116 | static const char *omap4_boards_compat[] __initdata = { | 
 | 117 | 	"ti,omap4", | 
 | 118 | 	NULL, | 
 | 119 | }; | 
 | 120 |  | 
 | 121 | DT_MACHINE_START(OMAP4_DT, "Generic OMAP4 (Flattened Device Tree)") | 
 | 122 | 	.reserve	= omap_reserve, | 
 | 123 | 	.map_io		= omap4_map_io, | 
 | 124 | 	.init_early	= omap4430_init_early, | 
| Benoit Cousson | fbf75da | 2011-09-21 23:30:31 +0200 | [diff] [blame] | 125 | 	.init_irq	= omap_init_irq, | 
| Benoit Cousson | b755706 | 2011-12-07 11:47:40 -0800 | [diff] [blame] | 126 | 	.handle_irq	= gic_handle_irq, | 
| Benoit Cousson | 93651b8 | 2011-09-23 13:51:57 +0200 | [diff] [blame] | 127 | 	.init_machine	= omap_generic_init, | 
| Shawn Guo | bbd707a | 2012-04-26 16:06:50 +0800 | [diff] [blame] | 128 | 	.init_late	= omap4430_init_late, | 
| Benoit Cousson | 8d61649 | 2011-09-20 21:24:47 +0200 | [diff] [blame] | 129 | 	.timer		= &omap4_timer, | 
 | 130 | 	.dt_compat	= omap4_boards_compat, | 
| Russell King | baa9588 | 2011-11-05 17:06:28 +0000 | [diff] [blame] | 131 | 	.restart	= omap_prcm_restart, | 
| Benoit Cousson | 8d61649 | 2011-09-20 21:24:47 +0200 | [diff] [blame] | 132 | MACHINE_END | 
 | 133 | #endif |