diff options
Diffstat (limited to 'arch/arm/mach-omap2/board-generic.c')
| -rw-r--r-- | arch/arm/mach-omap2/board-generic.c | 99 | 
1 files changed, 48 insertions, 51 deletions
diff --git a/arch/arm/mach-omap2/board-generic.c b/arch/arm/mach-omap2/board-generic.c index 02d7e828a14..74e1687b517 100644 --- a/arch/arm/mach-omap2/board-generic.c +++ b/arch/arm/mach-omap2/board-generic.c @@ -12,6 +12,7 @@   * 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 <linux/i2c/twl.h> @@ -24,33 +25,23 @@  #include "common.h"  #include "common-board-devices.h" -/* - * XXX: Still needed to boot until the i2c & twl driver is adapted to - * device-tree - */ -#ifdef CONFIG_ARCH_OMAP4 -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); -} +#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 -#ifdef CONFIG_ARCH_OMAP3 -static struct twl4030_platform_data beagle_twldata = { -	.irq_base	= TWL4030_IRQ_BASE, -	.irq_end	= TWL4030_IRQ_END, +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 omap3_i2c_init(void) +static void __init omap_init_irq(void)  { -	omap3_pmic_init("twl4030", &beagle_twldata); +	of_irq_init(irq_match);  } -#endif  static struct of_device_id omap_dt_match_table[] __initdata = {  	{ .compatible = "simple-bus", }, @@ -58,39 +49,13 @@ static struct of_device_id omap_dt_match_table[] __initdata = {  	{ }  }; -static struct of_device_id intc_match[] __initdata = { -	{ .compatible = "ti,omap3-intc", }, -	{ .compatible = "arm,cortex-a9-gic", }, -	{ } -}; -  static void __init omap_generic_init(void)  { -	struct device_node *node = of_find_matching_node(NULL, intc_match); -	if (node) -		irq_domain_add_legacy(node, 32, 0, 0, &irq_domain_simple_ops, NULL); -  	omap_sdrc_init(NULL, NULL);  	of_platform_populate(NULL, omap_dt_match_table, NULL, NULL);  } -#ifdef CONFIG_ARCH_OMAP4 -static void __init omap4_init(void) -{ -	omap4_i2c_init(); -	omap_generic_init(); -} -#endif - -#ifdef CONFIG_ARCH_OMAP3 -static void __init omap3_init(void) -{ -	omap3_i2c_init(); -	omap_generic_init(); -} -#endif -  #ifdef CONFIG_SOC_OMAP2420  static const char *omap242x_boards_compat[] __initdata = {  	"ti,omap2420", @@ -101,7 +66,7 @@ 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	= omap2_init_irq, +	.init_irq	= omap_init_irq,  	.handle_irq	= omap2_intc_handle_irq,  	.init_machine	= omap_generic_init,  	.timer		= &omap2_timer, @@ -120,7 +85,7 @@ 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	= omap2_init_irq, +	.init_irq	= omap_init_irq,  	.handle_irq	= omap2_intc_handle_irq,  	.init_machine	= omap_generic_init,  	.timer		= &omap2_timer, @@ -130,6 +95,22 @@ MACHINE_END  #endif  #ifdef CONFIG_ARCH_OMAP3 +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(); +} +  static const char *omap3_boards_compat[] __initdata = {  	"ti,omap3",  	NULL, @@ -139,7 +120,7 @@ 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	= omap3_init_irq, +	.init_irq	= omap_init_irq,  	.handle_irq	= omap3_intc_handle_irq,  	.init_machine	= omap3_init,  	.timer		= &omap3_timer, @@ -149,6 +130,22 @@ MACHINE_END  #endif  #ifdef CONFIG_ARCH_OMAP4 +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(); +} +  static const char *omap4_boards_compat[] __initdata = {  	"ti,omap4",  	NULL, @@ -158,7 +155,7 @@ DT_MACHINE_START(OMAP4_DT, "Generic OMAP4 (Flattened Device Tree)")  	.reserve	= omap_reserve,  	.map_io		= omap4_map_io,  	.init_early	= omap4430_init_early, -	.init_irq	= gic_init_irq, +	.init_irq	= omap_init_irq,  	.handle_irq	= gic_handle_irq,  	.init_machine	= omap4_init,  	.timer		= &omap4_timer,  |