diff options
Diffstat (limited to 'arch/arm/mach-omap2')
48 files changed, 400 insertions, 169 deletions
diff --git a/arch/arm/mach-omap2/Kconfig b/arch/arm/mach-omap2/Kconfig index 1a2cf6226a5..9b4e78fe3d1 100644 --- a/arch/arm/mach-omap2/Kconfig +++ b/arch/arm/mach-omap2/Kconfig @@ -53,25 +53,30 @@ config ARCH_OMAP4  comment "OMAP Core Type"  	depends on ARCH_OMAP2 -config ARCH_OMAP2420 +config SOC_OMAP2420  	bool "OMAP2420 support"  	depends on ARCH_OMAP2  	default y  	select OMAP_DM_TIMER  	select ARCH_OMAP_OTG -config ARCH_OMAP2430 +config SOC_OMAP2430  	bool "OMAP2430 support"  	depends on ARCH_OMAP2  	default y  	select ARCH_OMAP_OTG -config ARCH_OMAP3430 +config SOC_OMAP3430  	bool "OMAP3430 support"  	depends on ARCH_OMAP3  	default y  	select ARCH_OMAP_OTG +config SOC_OMAPTI816X +	bool "TI816X support" +	depends on ARCH_OMAP3 +	default y +  config OMAP_PACKAGE_ZAF         bool @@ -106,25 +111,25 @@ config MACH_OMAP_GENERIC  config MACH_OMAP2_TUSB6010  	bool -	depends on ARCH_OMAP2 && ARCH_OMAP2420 +	depends on ARCH_OMAP2 && SOC_OMAP2420  	default y if MACH_NOKIA_N8X0  config MACH_OMAP_H4  	bool "OMAP 2420 H4 board" -	depends on ARCH_OMAP2420 +	depends on SOC_OMAP2420  	default y  	select OMAP_PACKAGE_ZAF  	select OMAP_DEBUG_DEVICES  config MACH_OMAP_APOLLON  	bool "OMAP 2420 Apollon board" -	depends on ARCH_OMAP2420 +	depends on SOC_OMAP2420  	default y  	select OMAP_PACKAGE_ZAC  config MACH_OMAP_2430SDP  	bool "OMAP 2430 SDP board" -	depends on ARCH_OMAP2430 +	depends on SOC_OMAP2430  	default y  	select OMAP_PACKAGE_ZAC @@ -219,7 +224,7 @@ config MACH_NOKIA_N810_WIMAX  config MACH_NOKIA_N8X0  	bool "Nokia N800/N810" -	depends on ARCH_OMAP2420 +	depends on SOC_OMAP2420  	default y  	select OMAP_PACKAGE_ZAC  	select MACH_NOKIA_N800 @@ -294,6 +299,11 @@ config MACH_OMAP_3630SDP  	default y  	select OMAP_PACKAGE_CBP +config MACH_TI8168EVM +	bool "TI8168 Evaluation Module" +	depends on SOC_OMAPTI816X +	default y +  config MACH_OMAP_4430SDP  	bool "OMAP 4430 SDP board"  	default y diff --git a/arch/arm/mach-omap2/Makefile b/arch/arm/mach-omap2/Makefile index 1c0c2b02d87..a9e3974d015 100644 --- a/arch/arm/mach-omap2/Makefile +++ b/arch/arm/mach-omap2/Makefile @@ -31,8 +31,8 @@ AFLAGS_omap-headsmp.o			:=-Wa,-march=armv7-a$(plus_sec)  AFLAGS_omap44xx-smc.o			:=-Wa,-march=armv7-a$(plus_sec)  # Functions loaded to SRAM -obj-$(CONFIG_ARCH_OMAP2420)		+= sram242x.o -obj-$(CONFIG_ARCH_OMAP2430)		+= sram243x.o +obj-$(CONFIG_SOC_OMAP2420)		+= sram242x.o +obj-$(CONFIG_SOC_OMAP2430)		+= sram243x.o  obj-$(CONFIG_ARCH_OMAP3)		+= sram34xx.o  AFLAGS_sram242x.o			:=-Wa,-march=armv6 @@ -40,8 +40,8 @@ AFLAGS_sram243x.o			:=-Wa,-march=armv6  AFLAGS_sram34xx.o			:=-Wa,-march=armv7-a  # Pin multiplexing -obj-$(CONFIG_ARCH_OMAP2420)		+= mux2420.o -obj-$(CONFIG_ARCH_OMAP2430)		+= mux2430.o +obj-$(CONFIG_SOC_OMAP2420)		+= mux2420.o +obj-$(CONFIG_SOC_OMAP2430)		+= mux2430.o  obj-$(CONFIG_ARCH_OMAP3)		+= mux34xx.o  obj-$(CONFIG_ARCH_OMAP4)		+= mux44xx.o @@ -113,8 +113,8 @@ obj-$(CONFIG_ARCH_OMAP2)		+= $(clock-common) clock2xxx.o \  					   clkt2xxx_dpllcore.o \  					   clkt2xxx_virt_prcm_set.o \  					   clkt2xxx_apll.o clkt2xxx_osc.o -obj-$(CONFIG_ARCH_OMAP2420)		+= clock2420_data.o -obj-$(CONFIG_ARCH_OMAP2430)		+= clock2430.o clock2430_data.o +obj-$(CONFIG_SOC_OMAP2420)		+= clock2420_data.o +obj-$(CONFIG_SOC_OMAP2430)		+= clock2430.o clock2430_data.o  obj-$(CONFIG_ARCH_OMAP3)		+= $(clock-common) clock3xxx.o \  					   clock34xx.o clkt34xx_dpll3m2.o \  					   clock3517.o clock36xx.o \ @@ -123,12 +123,12 @@ obj-$(CONFIG_ARCH_OMAP4)		+= $(clock-common) clock44xx_data.o \  					   dpll3xxx.o  # OMAP2 clock rate set data (old "OPP" data) -obj-$(CONFIG_ARCH_OMAP2420)		+= opp2420_data.o -obj-$(CONFIG_ARCH_OMAP2430)		+= opp2430_data.o +obj-$(CONFIG_SOC_OMAP2420)		+= opp2420_data.o +obj-$(CONFIG_SOC_OMAP2430)		+= opp2430_data.o  # hwmod data -obj-$(CONFIG_ARCH_OMAP2420)		+= omap_hwmod_2420_data.o -obj-$(CONFIG_ARCH_OMAP2430)		+= omap_hwmod_2430_data.o +obj-$(CONFIG_SOC_OMAP2420)		+= omap_hwmod_2420_data.o +obj-$(CONFIG_SOC_OMAP2430)		+= omap_hwmod_2430_data.o  obj-$(CONFIG_ARCH_OMAP3)		+= omap_hwmod_3xxx_data.o  obj-$(CONFIG_ARCH_OMAP4)		+= omap_hwmod_44xx_data.o @@ -224,6 +224,7 @@ obj-$(CONFIG_MACH_CRANEBOARD)		+= board-am3517crane.o  obj-$(CONFIG_MACH_SBC3530)		+= board-omap3stalker.o \  					   hsmmc.o +obj-$(CONFIG_MACH_TI8168EVM)		+= board-ti8168evm.o  # Platform specific device init code  usbfs-$(CONFIG_ARCH_OMAP_OTG)		:= usb-fs.o  obj-y					+= $(usbfs-m) $(usbfs-y) diff --git a/arch/arm/mach-omap2/board-2430sdp.c b/arch/arm/mach-omap2/board-2430sdp.c index e0661777f59..ec74c0f2051 100644 --- a/arch/arm/mach-omap2/board-2430sdp.c +++ b/arch/arm/mach-omap2/board-2430sdp.c @@ -139,13 +139,12 @@ static struct omap_board_config_kernel sdp2430_config[] __initdata = {  	{OMAP_TAG_LCD, &sdp2430_lcd_config},  }; -static void __init omap_2430sdp_init_irq(void) +static void __init omap_2430sdp_init_early(void)  {  	omap_board_config = sdp2430_config;  	omap_board_config_size = ARRAY_SIZE(sdp2430_config);  	omap2_init_common_infrastructure();  	omap2_init_common_devices(NULL, NULL); -	omap_init_irq();  }  static struct twl4030_gpio_platform_data sdp2430_gpio_data = { @@ -253,9 +252,10 @@ static void __init omap_2430sdp_map_io(void)  MACHINE_START(OMAP_2430SDP, "OMAP2430 sdp2430 board")  	/* Maintainer: Syed Khasim - Texas Instruments Inc */  	.boot_params	= 0x80000100, -	.map_io		= omap_2430sdp_map_io,  	.reserve	= omap_reserve, -	.init_irq	= omap_2430sdp_init_irq, +	.map_io		= omap_2430sdp_map_io, +	.init_early	= omap_2430sdp_init_early, +	.init_irq	= omap_init_irq,  	.init_machine	= omap_2430sdp_init,  	.timer		= &omap_timer,  MACHINE_END diff --git a/arch/arm/mach-omap2/board-3430sdp.c b/arch/arm/mach-omap2/board-3430sdp.c index d4e41ef86aa..31085883199 100644 --- a/arch/arm/mach-omap2/board-3430sdp.c +++ b/arch/arm/mach-omap2/board-3430sdp.c @@ -327,14 +327,13 @@ static struct platform_device *sdp3430_devices[] __initdata = {  static struct omap_board_config_kernel sdp3430_config[] __initdata = {  }; -static void __init omap_3430sdp_init_irq(void) +static void __init omap_3430sdp_init_early(void)  {  	omap_board_config = sdp3430_config;  	omap_board_config_size = ARRAY_SIZE(sdp3430_config);  	omap3_pm_init_cpuidle(omap3_cpuidle_params_table);  	omap2_init_common_infrastructure();  	omap2_init_common_devices(hyb18m512160af6_sdrc_params, NULL); -	omap_init_irq();  }  static int sdp3430_batt_table[] = { @@ -822,9 +821,10 @@ static void __init omap_3430sdp_init(void)  MACHINE_START(OMAP_3430SDP, "OMAP3430 3430SDP board")  	/* Maintainer: Syed Khasim - Texas Instruments Inc */  	.boot_params	= 0x80000100, -	.map_io		= omap3_map_io,  	.reserve	= omap_reserve, -	.init_irq	= omap_3430sdp_init_irq, +	.map_io		= omap3_map_io, +	.init_early	= omap_3430sdp_init_early, +	.init_irq	= omap_init_irq,  	.init_machine	= omap_3430sdp_init,  	.timer		= &omap_timer,  MACHINE_END diff --git a/arch/arm/mach-omap2/board-3630sdp.c b/arch/arm/mach-omap2/board-3630sdp.c index 62645640f5e..16538757291 100644 --- a/arch/arm/mach-omap2/board-3630sdp.c +++ b/arch/arm/mach-omap2/board-3630sdp.c @@ -69,14 +69,13 @@ static const struct ehci_hcd_omap_platform_data ehci_pdata __initconst = {  static struct omap_board_config_kernel sdp_config[] __initdata = {  }; -static void __init omap_sdp_init_irq(void) +static void __init omap_sdp_init_early(void)  {  	omap_board_config = sdp_config;  	omap_board_config_size = ARRAY_SIZE(sdp_config);  	omap2_init_common_infrastructure();  	omap2_init_common_devices(h8mbx00u0mer0em_sdrc_params,  				  h8mbx00u0mer0em_sdrc_params); -	omap_init_irq();  }  #ifdef CONFIG_OMAP_MUX @@ -216,9 +215,10 @@ static void __init omap_sdp_init(void)  MACHINE_START(OMAP_3630SDP, "OMAP 3630SDP board")  	.boot_params	= 0x80000100, -	.map_io		= omap3_map_io,  	.reserve	= omap_reserve, -	.init_irq	= omap_sdp_init_irq, +	.map_io		= omap3_map_io, +	.init_early	= omap_sdp_init_early, +	.init_irq	= omap_init_irq,  	.init_machine	= omap_sdp_init,  	.timer		= &omap_timer,  MACHINE_END diff --git a/arch/arm/mach-omap2/board-4430sdp.c b/arch/arm/mach-omap2/board-4430sdp.c index 07d1b20b114..12d99e582cd 100644 --- a/arch/arm/mach-omap2/board-4430sdp.c +++ b/arch/arm/mach-omap2/board-4430sdp.c @@ -239,7 +239,7 @@ static struct omap_board_config_kernel sdp4430_config[] __initdata = {  	{ OMAP_TAG_LCD,		&sdp4430_lcd_config },  }; -static void __init omap_4430sdp_init_irq(void) +static void __init omap_4430sdp_init_early(void)  {  	omap_board_config = sdp4430_config;  	omap_board_config_size = ARRAY_SIZE(sdp4430_config); @@ -248,7 +248,6 @@ static void __init omap_4430sdp_init_irq(void)  #ifdef CONFIG_OMAP_32K_TIMER  	omap2_gp_clockevent_set_gptimer(1);  #endif -	gic_init_irq();  }  static const struct ehci_hcd_omap_platform_data ehci_pdata __initconst = { @@ -605,9 +604,10 @@ static void __init omap_4430sdp_map_io(void)  MACHINE_START(OMAP_4430SDP, "OMAP4430 4430SDP board")  	/* Maintainer: Santosh Shilimkar - Texas Instruments Inc */  	.boot_params	= 0x80000100, -	.map_io		= omap_4430sdp_map_io,  	.reserve	= omap_reserve, -	.init_irq	= omap_4430sdp_init_irq, +	.map_io		= omap_4430sdp_map_io, +	.init_early	= omap_4430sdp_init_early, +	.init_irq	= gic_init_irq,  	.init_machine	= omap_4430sdp_init,  	.timer		= &omap_timer,  MACHINE_END diff --git a/arch/arm/mach-omap2/board-am3517crane.c b/arch/arm/mach-omap2/board-am3517crane.c index 71acb5ab281..ae3a83d47da 100644 --- a/arch/arm/mach-omap2/board-am3517crane.c +++ b/arch/arm/mach-omap2/board-am3517crane.c @@ -49,14 +49,13 @@ static struct omap_board_mux board_mux[] __initdata = {  #define board_mux	NULL  #endif -static void __init am3517_crane_init_irq(void) +static void __init am3517_crane_init_early(void)  {  	omap_board_config = am3517_crane_config;  	omap_board_config_size = ARRAY_SIZE(am3517_crane_config);  	omap2_init_common_infrastructure();  	omap2_init_common_devices(NULL, NULL); -	omap_init_irq();  }  static struct ehci_hcd_omap_platform_data ehci_pdata __initdata = { @@ -108,9 +107,10 @@ static void __init am3517_crane_init(void)  MACHINE_START(CRANEBOARD, "AM3517/05 CRANEBOARD")  	.boot_params	= 0x80000100, -	.map_io		= omap3_map_io,  	.reserve	= omap_reserve, -	.init_irq	= am3517_crane_init_irq, +	.map_io		= omap3_map_io, +	.init_early	= am3517_crane_init_early, +	.init_irq	= omap_init_irq,  	.init_machine	= am3517_crane_init,  	.timer		= &omap_timer,  MACHINE_END diff --git a/arch/arm/mach-omap2/board-am3517evm.c b/arch/arm/mach-omap2/board-am3517evm.c index 10d60b7743c..d0d0f552813 100644 --- a/arch/arm/mach-omap2/board-am3517evm.c +++ b/arch/arm/mach-omap2/board-am3517evm.c @@ -396,13 +396,12 @@ static struct platform_device *am3517_evm_devices[] __initdata = {  	&am3517_evm_dss_device,  }; -static void __init am3517_evm_init_irq(void) +static void __init am3517_evm_init_early(void)  {  	omap_board_config = am3517_evm_config;  	omap_board_config_size = ARRAY_SIZE(am3517_evm_config);  	omap2_init_common_infrastructure();  	omap2_init_common_devices(NULL, NULL); -	omap_init_irq();  }  static struct omap_musb_board_data musb_board_data = { @@ -521,9 +520,10 @@ static void __init am3517_evm_init(void)  MACHINE_START(OMAP3517EVM, "OMAP3517/AM3517 EVM")  	.boot_params	= 0x80000100, -	.map_io		= omap3_map_io,  	.reserve	= omap_reserve, -	.init_irq	= am3517_evm_init_irq, +	.map_io		= omap3_map_io, +	.init_early	= am3517_evm_init_early, +	.init_irq	= omap_init_irq,  	.init_machine	= am3517_evm_init,  	.timer		= &omap_timer,  MACHINE_END diff --git a/arch/arm/mach-omap2/board-apollon.c b/arch/arm/mach-omap2/board-apollon.c index 9f55b68687f..4ef4aad4e71 100644 --- a/arch/arm/mach-omap2/board-apollon.c +++ b/arch/arm/mach-omap2/board-apollon.c @@ -274,13 +274,12 @@ static struct omap_board_config_kernel apollon_config[] __initdata = {  	{ OMAP_TAG_LCD,		&apollon_lcd_config },  }; -static void __init omap_apollon_init_irq(void) +static void __init omap_apollon_init_early(void)  {  	omap_board_config = apollon_config;  	omap_board_config_size = ARRAY_SIZE(apollon_config);  	omap2_init_common_infrastructure();  	omap2_init_common_devices(NULL, NULL); -	omap_init_irq();  }  static void __init apollon_led_init(void) @@ -355,9 +354,10 @@ static void __init omap_apollon_map_io(void)  MACHINE_START(OMAP_APOLLON, "OMAP24xx Apollon")  	/* Maintainer: Kyungmin Park <kyungmin.park@samsung.com> */  	.boot_params	= 0x80000100, -	.map_io		= omap_apollon_map_io,  	.reserve	= omap_reserve, -	.init_irq	= omap_apollon_init_irq, +	.map_io		= omap_apollon_map_io, +	.init_early	= omap_apollon_init_early, +	.init_irq	= omap_init_irq,  	.init_machine	= omap_apollon_init,  	.timer		= &omap_timer,  MACHINE_END diff --git a/arch/arm/mach-omap2/board-cm-t35.c b/arch/arm/mach-omap2/board-cm-t35.c index dac14161066..9e4de92a579 100644 --- a/arch/arm/mach-omap2/board-cm-t35.c +++ b/arch/arm/mach-omap2/board-cm-t35.c @@ -683,7 +683,7 @@ static void __init cm_t35_init_i2c(void)  static struct omap_board_config_kernel cm_t35_config[] __initdata = {  }; -static void __init cm_t35_init_irq(void) +static void __init cm_t35_init_early(void)  {  	omap_board_config = cm_t35_config;  	omap_board_config_size = ARRAY_SIZE(cm_t35_config); @@ -691,7 +691,6 @@ static void __init cm_t35_init_irq(void)  	omap2_init_common_infrastructure();  	omap2_init_common_devices(mt46h32m32lf6_sdrc_params,  			     mt46h32m32lf6_sdrc_params); -	omap_init_irq();  }  static struct omap_board_mux board_mux[] __initdata = { @@ -815,9 +814,10 @@ static void __init cm_t35_init(void)  MACHINE_START(CM_T35, "Compulab CM-T35")  	.boot_params	= 0x80000100, -	.map_io		= omap3_map_io,  	.reserve	= omap_reserve, -	.init_irq	= cm_t35_init_irq, +	.map_io		= omap3_map_io, +	.init_early	= cm_t35_init_early, +	.init_irq	= omap_init_irq,  	.init_machine	= cm_t35_init,  	.timer		= &omap_timer,  MACHINE_END diff --git a/arch/arm/mach-omap2/board-cm-t3517.c b/arch/arm/mach-omap2/board-cm-t3517.c index 8f9a64d650e..38bef6d004c 100644 --- a/arch/arm/mach-omap2/board-cm-t3517.c +++ b/arch/arm/mach-omap2/board-cm-t3517.c @@ -254,14 +254,13 @@ static inline void cm_t3517_init_nand(void) {}  static struct omap_board_config_kernel cm_t3517_config[] __initdata = {  }; -static void __init cm_t3517_init_irq(void) +static void __init cm_t3517_init_early(void)  {  	omap_board_config = cm_t3517_config;  	omap_board_config_size = ARRAY_SIZE(cm_t3517_config);  	omap2_init_common_infrastructure();  	omap2_init_common_devices(NULL, NULL); -	omap_init_irq();  }  static struct omap_board_mux board_mux[] __initdata = { @@ -303,9 +302,10 @@ static void __init cm_t3517_init(void)  MACHINE_START(CM_T3517, "Compulab CM-T3517")  	.boot_params	= 0x80000100, -	.map_io		= omap3_map_io,  	.reserve        = omap_reserve, -	.init_irq	= cm_t3517_init_irq, +	.map_io		= omap3_map_io, +	.init_early	= cm_t3517_init_early, +	.init_irq	= omap_init_irq,  	.init_machine	= cm_t3517_init,  	.timer		= &omap_timer,  MACHINE_END diff --git a/arch/arm/mach-omap2/board-devkit8000.c b/arch/arm/mach-omap2/board-devkit8000.c index 9a2a31e011c..af742887e83 100644 --- a/arch/arm/mach-omap2/board-devkit8000.c +++ b/arch/arm/mach-omap2/board-devkit8000.c @@ -456,11 +456,15 @@ static struct platform_device keys_gpio = {  }; -static void __init devkit8000_init_irq(void) +static void __init devkit8000_init_early(void)  {  	omap2_init_common_infrastructure();  	omap2_init_common_devices(mt46h32m32lf6_sdrc_params,  				  mt46h32m32lf6_sdrc_params); +} + +static void __init devkit8000_init_irq(void) +{  	omap_init_irq();  #ifdef CONFIG_OMAP_32K_TIMER  	omap2_gp_clockevent_set_gptimer(12); @@ -813,8 +817,9 @@ static void __init devkit8000_init(void)  MACHINE_START(DEVKIT8000, "OMAP3 Devkit8000")  	.boot_params	= 0x80000100, -	.map_io		= omap3_map_io,  	.reserve	= omap_reserve, +	.map_io		= omap3_map_io, +	.init_early	= devkit8000_init_early,  	.init_irq	= devkit8000_init_irq,  	.init_machine	= devkit8000_init,  	.timer		= &omap_timer, diff --git a/arch/arm/mach-omap2/board-generic.c b/arch/arm/mach-omap2/board-generic.c index 0e3d81e09f8..682da9251db 100644 --- a/arch/arm/mach-omap2/board-generic.c +++ b/arch/arm/mach-omap2/board-generic.c @@ -33,13 +33,12 @@  static struct omap_board_config_kernel generic_config[] = {  }; -static void __init omap_generic_init_irq(void) +static void __init omap_generic_init_early(void)  {  	omap_board_config = generic_config;  	omap_board_config_size = ARRAY_SIZE(generic_config);  	omap2_init_common_infrastructure();  	omap2_init_common_devices(NULL, NULL); -	omap_init_irq();  }  static void __init omap_generic_init(void) @@ -68,9 +67,10 @@ static void __init omap_generic_map_io(void)  MACHINE_START(OMAP_GENERIC, "Generic OMAP24xx")  	/* Maintainer: Paul Mundt <paul.mundt@nokia.com> */  	.boot_params	= 0x80000100, -	.map_io		= omap_generic_map_io,  	.reserve	= omap_reserve, -	.init_irq	= omap_generic_init_irq, +	.map_io		= omap_generic_map_io, +	.init_early	= omap_generic_init_early, +	.init_irq	= omap_init_irq,  	.init_machine	= omap_generic_init,  	.timer		= &omap_timer,  MACHINE_END diff --git a/arch/arm/mach-omap2/board-h4.c b/arch/arm/mach-omap2/board-h4.c index 25cc9dad4b0..f6a3872f72f 100644 --- a/arch/arm/mach-omap2/board-h4.c +++ b/arch/arm/mach-omap2/board-h4.c @@ -290,12 +290,16 @@ static struct omap_board_config_kernel h4_config[] __initdata = {  	{ OMAP_TAG_LCD,		&h4_lcd_config },  }; -static void __init omap_h4_init_irq(void) +static void __init omap_h4_init_early(void)  {  	omap_board_config = h4_config;  	omap_board_config_size = ARRAY_SIZE(h4_config);  	omap2_init_common_infrastructure();  	omap2_init_common_devices(NULL, NULL); +} + +static void __init omap_h4_init_irq(void) +{  	omap_init_irq();  	h4_init_flash();  } @@ -378,8 +382,9 @@ static void __init omap_h4_map_io(void)  MACHINE_START(OMAP_H4, "OMAP2420 H4 board")  	/* Maintainer: Paul Mundt <paul.mundt@nokia.com> */  	.boot_params	= 0x80000100, -	.map_io		= omap_h4_map_io,  	.reserve	= omap_reserve, +	.map_io		= omap_h4_map_io, +	.init_early	= omap_h4_init_early,  	.init_irq	= omap_h4_init_irq,  	.init_machine	= omap_h4_init,  	.timer		= &omap_timer, diff --git a/arch/arm/mach-omap2/board-igep0020.c b/arch/arm/mach-omap2/board-igep0020.c index 3be85a1f55f..dd0b1ac3b66 100644 --- a/arch/arm/mach-omap2/board-igep0020.c +++ b/arch/arm/mach-omap2/board-igep0020.c @@ -525,12 +525,11 @@ static struct platform_device *igep2_devices[] __initdata = {  	&igep2_vwlan_device,  }; -static void __init igep2_init_irq(void) +static void __init igep2_init_early(void)  {  	omap2_init_common_infrastructure();  	omap2_init_common_devices(m65kxxxxam_sdrc_params,  				  m65kxxxxam_sdrc_params); -	omap_init_irq();  }  static struct twl4030_codec_audio_data igep2_audio_data = { @@ -716,9 +715,10 @@ static void __init igep2_init(void)  MACHINE_START(IGEP0020, "IGEP v2 board")  	.boot_params	= 0x80000100, -	.map_io		= omap3_map_io,  	.reserve	= omap_reserve, -	.init_irq	= igep2_init_irq, +	.map_io		= omap3_map_io, +	.init_early	= igep2_init_early, +	.init_irq	= omap_init_irq,  	.init_machine	= igep2_init,  	.timer		= &omap_timer,  MACHINE_END diff --git a/arch/arm/mach-omap2/board-igep0030.c b/arch/arm/mach-omap2/board-igep0030.c index 4dc62a9b9cb..d75028e48f5 100644 --- a/arch/arm/mach-omap2/board-igep0030.c +++ b/arch/arm/mach-omap2/board-igep0030.c @@ -331,12 +331,11 @@ static struct platform_device *igep3_devices[] __initdata = {  	&igep3_vwlan_device,  }; -static void __init igep3_init_irq(void) +static void __init igep3_init_early(void)  {  	omap2_init_common_infrastructure();  	omap2_init_common_devices(m65kxxxxam_sdrc_params,  				  m65kxxxxam_sdrc_params); -	omap_init_irq();  }  static struct twl4030_platform_data igep3_twl4030_pdata = { @@ -452,7 +451,8 @@ MACHINE_START(IGEP0030, "IGEP OMAP3 module")  	.boot_params	= 0x80000100,  	.reserve	= omap_reserve,  	.map_io		= omap3_map_io, -	.init_irq	= igep3_init_irq, +	.init_early	= igep3_init_early, +	.init_irq	= omap_init_irq,  	.init_machine	= igep3_init,  	.timer		= &omap_timer,  MACHINE_END diff --git a/arch/arm/mach-omap2/board-ldp.c b/arch/arm/mach-omap2/board-ldp.c index e5dc74875f9..d8eb2cb7cbc 100644 --- a/arch/arm/mach-omap2/board-ldp.c +++ b/arch/arm/mach-omap2/board-ldp.c @@ -288,13 +288,12 @@ static struct omap_board_config_kernel ldp_config[] __initdata = {  	{ OMAP_TAG_LCD,		&ldp_lcd_config },  }; -static void __init omap_ldp_init_irq(void) +static void __init omap_ldp_init_early(void)  {  	omap_board_config = ldp_config;  	omap_board_config_size = ARRAY_SIZE(ldp_config);  	omap2_init_common_infrastructure();  	omap2_init_common_devices(NULL, NULL); -	omap_init_irq();  }  static struct twl4030_usb_data ldp_usb_data = { @@ -443,9 +442,10 @@ static void __init omap_ldp_init(void)  MACHINE_START(OMAP_LDP, "OMAP LDP board")  	.boot_params	= 0x80000100, -	.map_io		= omap3_map_io,  	.reserve	= omap_reserve, -	.init_irq	= omap_ldp_init_irq, +	.map_io		= omap3_map_io, +	.init_early	= omap_ldp_init_early, +	.init_irq	= omap_init_irq,  	.init_machine	= omap_ldp_init,  	.timer		= &omap_timer,  MACHINE_END diff --git a/arch/arm/mach-omap2/board-n8x0.c b/arch/arm/mach-omap2/board-n8x0.c index f396756872b..b36cbd21e2d 100644 --- a/arch/arm/mach-omap2/board-n8x0.c +++ b/arch/arm/mach-omap2/board-n8x0.c @@ -628,11 +628,10 @@ static void __init n8x0_map_io(void)  	omap242x_map_common_io();  } -static void __init n8x0_init_irq(void) +static void __init n8x0_init_early(void)  {  	omap2_init_common_infrastructure();  	omap2_init_common_devices(NULL, NULL); -	omap_init_irq();  }  #ifdef CONFIG_OMAP_MUX @@ -703,27 +702,30 @@ static void __init n8x0_init_machine(void)  MACHINE_START(NOKIA_N800, "Nokia N800")  	.boot_params	= 0x80000100, -	.map_io		= n8x0_map_io,  	.reserve	= omap_reserve, -	.init_irq	= n8x0_init_irq, +	.map_io		= n8x0_map_io, +	.init_early	= n8x0_init_early, +	.init_irq	= omap_init_irq,  	.init_machine	= n8x0_init_machine,  	.timer		= &omap_timer,  MACHINE_END  MACHINE_START(NOKIA_N810, "Nokia N810")  	.boot_params	= 0x80000100, -	.map_io		= n8x0_map_io,  	.reserve	= omap_reserve, -	.init_irq	= n8x0_init_irq, +	.map_io		= n8x0_map_io, +	.init_early	= n8x0_init_early, +	.init_irq	= omap_init_irq,  	.init_machine	= n8x0_init_machine,  	.timer		= &omap_timer,  MACHINE_END  MACHINE_START(NOKIA_N810_WIMAX, "Nokia N810 WiMAX")  	.boot_params	= 0x80000100, -	.map_io		= n8x0_map_io,  	.reserve	= omap_reserve, -	.init_irq	= n8x0_init_irq, +	.map_io		= n8x0_map_io, +	.init_early	= n8x0_init_early, +	.init_irq	= omap_init_irq,  	.init_machine	= n8x0_init_machine,  	.timer		= &omap_timer,  MACHINE_END diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c index 46d814ab565..19bcd004d60 100644 --- a/arch/arm/mach-omap2/board-omap3beagle.c +++ b/arch/arm/mach-omap2/board-omap3beagle.c @@ -536,11 +536,15 @@ static struct platform_device keys_gpio = {  	},  }; -static void __init omap3_beagle_init_irq(void) +static void __init omap3_beagle_init_early(void)  {  	omap2_init_common_infrastructure();  	omap2_init_common_devices(mt46h32m32lf6_sdrc_params,  				  mt46h32m32lf6_sdrc_params); +} + +static void __init omap3_beagle_init_irq(void) +{  	omap_init_irq();  #ifdef CONFIG_OMAP_32K_TIMER  	omap2_gp_clockevent_set_gptimer(12); @@ -638,8 +642,9 @@ static void __init omap3_beagle_init(void)  MACHINE_START(OMAP3_BEAGLE, "OMAP3 Beagle Board")  	/* Maintainer: Syed Mohammed Khasim - http://beagleboard.org */  	.boot_params	= 0x80000100, -	.map_io		= omap3_map_io,  	.reserve	= omap_reserve, +	.map_io		= omap3_map_io, +	.init_early	= omap3_beagle_init_early,  	.init_irq	= omap3_beagle_init_irq,  	.init_machine	= omap3_beagle_init,  	.timer		= &omap_timer, diff --git a/arch/arm/mach-omap2/board-omap3evm.c b/arch/arm/mach-omap2/board-omap3evm.c index 323c3809ce3..c2a0fca4aa5 100644 --- a/arch/arm/mach-omap2/board-omap3evm.c +++ b/arch/arm/mach-omap2/board-omap3evm.c @@ -625,13 +625,12 @@ static struct spi_board_info omap3evm_spi_board_info[] = {  static struct omap_board_config_kernel omap3_evm_config[] __initdata = {  }; -static void __init omap3_evm_init_irq(void) +static void __init omap3_evm_init_early(void)  {  	omap_board_config = omap3_evm_config;  	omap_board_config_size = ARRAY_SIZE(omap3_evm_config);  	omap2_init_common_infrastructure();  	omap2_init_common_devices(mt46h32m32lf6_sdrc_params, NULL); -	omap_init_irq();  }  static struct platform_device *omap3_evm_devices[] __initdata = { @@ -720,9 +719,10 @@ static void __init omap3_evm_init(void)  MACHINE_START(OMAP3EVM, "OMAP3 EVM")  	/* Maintainer: Syed Mohammed Khasim - Texas Instruments */  	.boot_params	= 0x80000100, -	.map_io		= omap3_map_io,  	.reserve	= omap_reserve, -	.init_irq	= omap3_evm_init_irq, +	.map_io		= omap3_map_io, +	.init_early	= omap3_evm_init_early, +	.init_irq	= omap_init_irq,  	.init_machine	= omap3_evm_init,  	.timer		= &omap_timer,  MACHINE_END diff --git a/arch/arm/mach-omap2/board-omap3logic.c b/arch/arm/mach-omap2/board-omap3logic.c index 15e4b08e99b..b726943d7c9 100644 --- a/arch/arm/mach-omap2/board-omap3logic.c +++ b/arch/arm/mach-omap2/board-omap3logic.c @@ -195,11 +195,10 @@ static inline void __init board_smsc911x_init(void)  	gpmc_smsc911x_init(&board_smsc911x_data);  } -static void __init omap3logic_init_irq(void) +static void __init omap3logic_init_early(void)  {  	omap2_init_common_infrastructure();  	omap2_init_common_devices(NULL, NULL); -	omap_init_irq();  }  #ifdef CONFIG_OMAP_MUX @@ -225,7 +224,8 @@ static void __init omap3logic_init(void)  MACHINE_START(OMAP3_TORPEDO, "Logic OMAP3 Torpedo board")  	.boot_params	= 0x80000100,  	.map_io		= omap3_map_io, -	.init_irq	= omap3logic_init_irq, +	.init_early	= omap3logic_init_early, +	.init_irq	= omap_init_irq,  	.init_machine	= omap3logic_init,  	.timer		= &omap_timer,  MACHINE_END @@ -233,7 +233,8 @@ MACHINE_END  MACHINE_START(OMAP3530_LV_SOM, "OMAP Logic 3530 LV SOM board")  	.boot_params	= 0x80000100,  	.map_io		= omap3_map_io, -	.init_irq	= omap3logic_init_irq, +	.init_early	= omap3logic_init_early, +	.init_irq	= omap_init_irq,  	.init_machine	= omap3logic_init,  	.timer		= &omap_timer,  MACHINE_END diff --git a/arch/arm/mach-omap2/board-omap3pandora.c b/arch/arm/mach-omap2/board-omap3pandora.c index 0b34beded11..b91f74ce3a9 100644 --- a/arch/arm/mach-omap2/board-omap3pandora.c +++ b/arch/arm/mach-omap2/board-omap3pandora.c @@ -634,12 +634,11 @@ static struct spi_board_info omap3pandora_spi_board_info[] __initdata = {  	}  }; -static void __init omap3pandora_init_irq(void) +static void __init omap3pandora_init_early(void)  {  	omap2_init_common_infrastructure();  	omap2_init_common_devices(mt46h32m32lf6_sdrc_params,  				  mt46h32m32lf6_sdrc_params); -	omap_init_irq();  }  static void __init pandora_wl1251_init(void) @@ -727,9 +726,10 @@ static void __init omap3pandora_init(void)  MACHINE_START(OMAP3_PANDORA, "Pandora Handheld Console")  	.boot_params	= 0x80000100, -	.map_io		= omap3_map_io,  	.reserve	= omap_reserve, -	.init_irq	= omap3pandora_init_irq, +	.map_io		= omap3_map_io, +	.init_early	= omap3pandora_init_early, +	.init_irq	= omap_init_irq,  	.init_machine	= omap3pandora_init,  	.timer		= &omap_timer,  MACHINE_END diff --git a/arch/arm/mach-omap2/board-omap3stalker.c b/arch/arm/mach-omap2/board-omap3stalker.c index 2a2dad447e8..5d1ccef6916 100644 --- a/arch/arm/mach-omap2/board-omap3stalker.c +++ b/arch/arm/mach-omap2/board-omap3stalker.c @@ -591,12 +591,16 @@ static struct spi_board_info omap3stalker_spi_board_info[] = {  static struct omap_board_config_kernel omap3_stalker_config[] __initdata = {  }; -static void __init omap3_stalker_init_irq(void) +static void __init omap3_stalker_init_early(void)  {  	omap_board_config = omap3_stalker_config;  	omap_board_config_size = ARRAY_SIZE(omap3_stalker_config);  	omap2_init_common_infrastructure();  	omap2_init_common_devices(mt46h32m32lf6_sdrc_params, NULL); +} + +static void __init omap3_stalker_init_irq(void) +{  	omap_init_irq();  #ifdef CONFIG_OMAP_32K_TIMER  	omap2_gp_clockevent_set_gptimer(12); @@ -666,6 +670,7 @@ MACHINE_START(SBC3530, "OMAP3 STALKER")  	/* Maintainer: Jason Lam -lzg@ema-tech.com */  	.boot_params		= 0x80000100,  	.map_io			= omap3_map_io, +	.init_early		= omap3_stalker_init_early,  	.init_irq		= omap3_stalker_init_irq,  	.init_machine		= omap3_stalker_init,  	.timer			= &omap_timer, diff --git a/arch/arm/mach-omap2/board-omap3touchbook.c b/arch/arm/mach-omap2/board-omap3touchbook.c index db1f74fe6c4..6a60f79dccc 100644 --- a/arch/arm/mach-omap2/board-omap3touchbook.c +++ b/arch/arm/mach-omap2/board-omap3touchbook.c @@ -415,7 +415,7 @@ static struct omap_board_mux board_mux[] __initdata = {  };  #endif -static void __init omap3_touchbook_init_irq(void) +static void __init omap3_touchbook_init_early(void)  {  	omap3_mux_init(board_mux, OMAP_PACKAGE_CBB);  	omap_board_config = omap3_touchbook_config; @@ -423,6 +423,10 @@ static void __init omap3_touchbook_init_irq(void)  	omap2_init_common_infrastructure();  	omap2_init_common_devices(mt46h32m32lf6_sdrc_params,  				  mt46h32m32lf6_sdrc_params); +} + +static void __init omap3_touchbook_init_irq(void) +{  	omap_init_irq();  #ifdef CONFIG_OMAP_32K_TIMER  	omap2_gp_clockevent_set_gptimer(12); @@ -538,8 +542,9 @@ static void __init omap3_touchbook_init(void)  MACHINE_START(TOUCHBOOK, "OMAP3 touchbook Board")  	/* Maintainer: Gregoire Gentil - http://www.alwaysinnovating.com */  	.boot_params	= 0x80000100, -	.map_io		= omap3_map_io,  	.reserve	= omap_reserve, +	.map_io		= omap3_map_io, +	.init_early	= omap3_touchbook_init_early,  	.init_irq	= omap3_touchbook_init_irq,  	.init_machine	= omap3_touchbook_init,  	.timer		= &omap_timer, diff --git a/arch/arm/mach-omap2/board-omap4panda.c b/arch/arm/mach-omap2/board-omap4panda.c index e944025d5ef..fca5b9e80c1 100644 --- a/arch/arm/mach-omap2/board-omap4panda.c +++ b/arch/arm/mach-omap2/board-omap4panda.c @@ -76,11 +76,10 @@ static struct platform_device *panda_devices[] __initdata = {  	&leds_gpio,  }; -static void __init omap4_panda_init_irq(void) +static void __init omap4_panda_init_early(void)  {  	omap2_init_common_infrastructure();  	omap2_init_common_devices(NULL, NULL); -	gic_init_irq();  }  static const struct ehci_hcd_omap_platform_data ehci_pdata __initconst = { @@ -424,7 +423,8 @@ MACHINE_START(OMAP4_PANDA, "OMAP4 Panda board")  	.boot_params	= 0x80000100,  	.reserve	= omap_reserve,  	.map_io		= omap4_panda_map_io, -	.init_irq	= omap4_panda_init_irq, +	.init_early	= omap4_panda_init_early, +	.init_irq	= gic_init_irq,  	.init_machine	= omap4_panda_init,  	.timer		= &omap_timer,  MACHINE_END diff --git a/arch/arm/mach-omap2/board-overo.c b/arch/arm/mach-omap2/board-overo.c index cb26e5d8268..a33ec0edec1 100644 --- a/arch/arm/mach-omap2/board-overo.c +++ b/arch/arm/mach-omap2/board-overo.c @@ -409,14 +409,13 @@ static struct omap_board_config_kernel overo_config[] __initdata = {  	{ OMAP_TAG_LCD,		&overo_lcd_config },  }; -static void __init overo_init_irq(void) +static void __init overo_init_early(void)  {  	omap_board_config = overo_config;  	omap_board_config_size = ARRAY_SIZE(overo_config);  	omap2_init_common_infrastructure();  	omap2_init_common_devices(mt46h32m32lf6_sdrc_params,  				  mt46h32m32lf6_sdrc_params); -	omap_init_irq();  }  static struct platform_device *overo_devices[] __initdata = { @@ -501,9 +500,10 @@ static void __init overo_init(void)  MACHINE_START(OVERO, "Gumstix Overo")  	.boot_params	= 0x80000100, -	.map_io		= omap3_map_io,  	.reserve	= omap_reserve, -	.init_irq	= overo_init_irq, +	.map_io		= omap3_map_io, +	.init_early	= overo_init_early, +	.init_irq	= omap_init_irq,  	.init_machine	= overo_init,  	.timer		= &omap_timer,  MACHINE_END diff --git a/arch/arm/mach-omap2/board-rm680.c b/arch/arm/mach-omap2/board-rm680.c index 39a71bb8a30..bdebcb7328e 100644 --- a/arch/arm/mach-omap2/board-rm680.c +++ b/arch/arm/mach-omap2/board-rm680.c @@ -138,14 +138,13 @@ static void __init rm680_peripherals_init(void)  	omap2_hsmmc_init(mmc);  } -static void __init rm680_init_irq(void) +static void __init rm680_init_early(void)  {  	struct omap_sdrc_params *sdrc_params;  	omap2_init_common_infrastructure();  	sdrc_params = nokia_get_sdram_timings();  	omap2_init_common_devices(sdrc_params, sdrc_params); -	omap_init_irq();  }  #ifdef CONFIG_OMAP_MUX @@ -176,9 +175,10 @@ static void __init rm680_map_io(void)  MACHINE_START(NOKIA_RM680, "Nokia RM-680 board")  	.boot_params	= 0x80000100, -	.map_io		= rm680_map_io,  	.reserve	= omap_reserve, -	.init_irq	= rm680_init_irq, +	.map_io		= rm680_map_io, +	.init_early	= rm680_init_early, +	.init_irq	= omap_init_irq,  	.init_machine	= rm680_init,  	.timer		= &omap_timer,  MACHINE_END diff --git a/arch/arm/mach-omap2/board-rx51.c b/arch/arm/mach-omap2/board-rx51.c index f53fc551c58..3cf72fe6d75 100644 --- a/arch/arm/mach-omap2/board-rx51.c +++ b/arch/arm/mach-omap2/board-rx51.c @@ -98,7 +98,7 @@ static struct omap_board_config_kernel rx51_config[] = {  	{ OMAP_TAG_LCD,		&rx51_lcd_config },  }; -static void __init rx51_init_irq(void) +static void __init rx51_init_early(void)  {  	struct omap_sdrc_params *sdrc_params; @@ -108,7 +108,6 @@ static void __init rx51_init_irq(void)  	omap2_init_common_infrastructure();  	sdrc_params = nokia_get_sdram_timings();  	omap2_init_common_devices(sdrc_params, sdrc_params); -	omap_init_irq();  }  extern void __init rx51_peripherals_init(void); @@ -149,9 +148,10 @@ static void __init rx51_map_io(void)  MACHINE_START(NOKIA_RX51, "Nokia RX-51 board")  	/* Maintainer: Lauri Leukkunen <lauri.leukkunen@nokia.com> */  	.boot_params	= 0x80000100, -	.map_io		= rx51_map_io,  	.reserve	= omap_reserve, -	.init_irq	= rx51_init_irq, +	.map_io		= rx51_map_io, +	.init_early	= rx51_init_early, +	.init_irq	= omap_init_irq,  	.init_machine	= rx51_init,  	.timer		= &omap_timer,  MACHINE_END diff --git a/arch/arm/mach-omap2/board-ti8168evm.c b/arch/arm/mach-omap2/board-ti8168evm.c new file mode 100644 index 00000000000..f2b097190e0 --- /dev/null +++ b/arch/arm/mach-omap2/board-ti8168evm.c @@ -0,0 +1,62 @@ +/* + * Code for TI8168 EVM. + * + * Copyright (C) 2010 Texas Instruments, Inc. - http://www.ti.com/ + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation version 2. + * + * This program is distributed "as is" WITHOUT ANY WARRANTY of any + * kind, whether express or implied; without even the implied warranty + * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU General Public License for more details. + */ +#include <linux/kernel.h> +#include <linux/init.h> + +#include <mach/hardware.h> +#include <asm/mach-types.h> +#include <asm/mach/arch.h> +#include <asm/mach/map.h> + +#include <plat/irqs.h> +#include <plat/board.h> +#include <plat/common.h> + +static struct omap_board_config_kernel ti8168_evm_config[] __initdata = { +}; + +static void __init ti8168_init_early(void) +{ +	omap_board_config = ti8168_evm_config; +	omap_board_config_size = ARRAY_SIZE(ti8168_evm_config); +	omap2_init_common_infrastructure(); +	omap2_init_common_devices(NULL, NULL); +} + +static void __init ti8168_evm_init_irq(void) +{ +	omap_init_irq(); +} + +static void __init ti8168_evm_init(void) +{ +	omap_serial_init(); +} + +static void __init ti8168_evm_map_io(void) +{ +	omap2_set_globals_ti816x(); +	omapti816x_map_common_io(); +} + +MACHINE_START(TI8168EVM, "ti8168evm") +	/* Maintainer: Texas Instruments */ +	.boot_params	= 0x80000100, +	.map_io		= ti8168_evm_map_io, +	.init_early	= ti8168_init_early, +	.init_irq	= ti8168_evm_init_irq, +	.timer		= &omap_timer, +	.init_machine	= ti8168_evm_init, +MACHINE_END diff --git a/arch/arm/mach-omap2/board-zoom.c b/arch/arm/mach-omap2/board-zoom.c index e26754c24ee..85d4170f30a 100644 --- a/arch/arm/mach-omap2/board-zoom.c +++ b/arch/arm/mach-omap2/board-zoom.c @@ -33,7 +33,7 @@  #define ZOOM3_EHCI_RESET_GPIO		64 -static void __init omap_zoom_init_irq(void) +static void __init omap_zoom_init_early(void)  {  	omap2_init_common_infrastructure();  	if (machine_is_omap_zoom2()) @@ -42,8 +42,6 @@ static void __init omap_zoom_init_irq(void)  	else if (machine_is_omap_zoom3())  		omap2_init_common_devices(h8mbx00u0mer0em_sdrc_params,  					  h8mbx00u0mer0em_sdrc_params); - -	omap_init_irq();  }  #ifdef CONFIG_OMAP_MUX @@ -135,18 +133,20 @@ static void __init omap_zoom_init(void)  MACHINE_START(OMAP_ZOOM2, "OMAP Zoom2 board")  	.boot_params	= 0x80000100, -	.map_io		= omap3_map_io,  	.reserve	= omap_reserve, -	.init_irq	= omap_zoom_init_irq, +	.map_io		= omap3_map_io, +	.init_early	= omap_zoom_init_early, +	.init_irq	= omap_init_irq,  	.init_machine	= omap_zoom_init,  	.timer		= &omap_timer,  MACHINE_END  MACHINE_START(OMAP_ZOOM3, "OMAP Zoom3 board")  	.boot_params	= 0x80000100, -	.map_io		= omap3_map_io,  	.reserve	= omap_reserve, -	.init_irq	= omap_zoom_init_irq, +	.map_io		= omap3_map_io, +	.init_early	= omap_zoom_init_early, +	.init_irq	= omap_init_irq,  	.init_machine	= omap_zoom_init,  	.timer		= &omap_timer,  MACHINE_END diff --git a/arch/arm/mach-omap2/clock2xxx.h b/arch/arm/mach-omap2/clock2xxx.h index 6a658b890c1..cc5c8d422c5 100644 --- a/arch/arm/mach-omap2/clock2xxx.h +++ b/arch/arm/mach-omap2/clock2xxx.h @@ -20,13 +20,13 @@ u32 omap2xxx_get_apll_clkin(void);  u32 omap2xxx_get_sysclkdiv(void);  void omap2xxx_clk_prepare_for_reboot(void); -#ifdef CONFIG_ARCH_OMAP2420 +#ifdef CONFIG_SOC_OMAP2420  int omap2420_clk_init(void);  #else  #define omap2420_clk_init()	0  #endif -#ifdef CONFIG_ARCH_OMAP2430 +#ifdef CONFIG_SOC_OMAP2430  int omap2430_clk_init(void);  #else  #define omap2430_clk_init()	0 diff --git a/arch/arm/mach-omap2/clock3xxx_data.c b/arch/arm/mach-omap2/clock3xxx_data.c index 403a4a1d3f9..f14d986f0b5 100644 --- a/arch/arm/mach-omap2/clock3xxx_data.c +++ b/arch/arm/mach-omap2/clock3xxx_data.c @@ -3471,6 +3471,9 @@ int __init omap3xxx_clk_init(void)  	} else if (cpu_is_omap3630()) {  		cpu_mask = (RATE_IN_34XX | RATE_IN_36XX);  		cpu_clkflg = CK_36XX; +	} else if (cpu_is_ti816x()) { +		cpu_mask = RATE_IN_TI816X; +		cpu_clkflg = CK_TI816X;  	} else if (cpu_is_omap34xx()) {  		if (omap_rev() == OMAP3430_REV_ES1_0) {  			cpu_mask = RATE_IN_3430ES1; @@ -3550,7 +3553,7 @@ int __init omap3xxx_clk_init(void)  	/*  	 * Lock DPLL5 and put it in autoidle.  	 */ -	if (omap_rev() >= OMAP3430_REV_ES2_0) +	if (!cpu_is_ti816x() && (omap_rev() >= OMAP3430_REV_ES2_0))  		omap3_clk_lock_dpll5();  	/* Avoid sleeping during omap3_core_dpll_m2_set_rate() */ diff --git a/arch/arm/mach-omap2/clockdomains2xxx_3xxx_data.c b/arch/arm/mach-omap2/clockdomains2xxx_3xxx_data.c index e4a7133ea3b..e6f0d18d5e8 100644 --- a/arch/arm/mach-omap2/clockdomains2xxx_3xxx_data.c +++ b/arch/arm/mach-omap2/clockdomains2xxx_3xxx_data.c @@ -171,7 +171,7 @@ static struct clkdm_dep core_24xx_wkdeps[] = {  /* 2430-specific possible wakeup dependencies */ -#ifdef CONFIG_ARCH_OMAP2430 +#ifdef CONFIG_SOC_OMAP2430  /* 2430 PM_WKDEP_MDM: CORE, MPU, WKUP */  static struct clkdm_dep mdm_2430_wkdeps[] = { @@ -194,7 +194,7 @@ static struct clkdm_dep mdm_2430_wkdeps[] = {  	{ NULL },  }; -#endif /* CONFIG_ARCH_OMAP2430 */ +#endif /* CONFIG_SOC_OMAP2430 */  /* OMAP3-specific possible dependencies */ @@ -450,7 +450,7 @@ static struct clockdomain cm_clkdm = {   * 2420-only clockdomains   */ -#if defined(CONFIG_ARCH_OMAP2420) +#if defined(CONFIG_SOC_OMAP2420)  static struct clockdomain mpu_2420_clkdm = {  	.name		= "mpu_clkdm", @@ -514,14 +514,14 @@ static struct clockdomain dss_2420_clkdm = {  	.omap_chip	= OMAP_CHIP_INIT(CHIP_IS_OMAP2420),  }; -#endif   /* CONFIG_ARCH_OMAP2420 */ +#endif   /* CONFIG_SOC_OMAP2420 */  /*   * 2430-only clockdomains   */ -#if defined(CONFIG_ARCH_OMAP2430) +#if defined(CONFIG_SOC_OMAP2430)  static struct clockdomain mpu_2430_clkdm = {  	.name		= "mpu_clkdm", @@ -600,7 +600,7 @@ static struct clockdomain dss_2430_clkdm = {  	.omap_chip	= OMAP_CHIP_INIT(CHIP_IS_OMAP2430),  }; -#endif    /* CONFIG_ARCH_OMAP2430 */ +#endif    /* CONFIG_SOC_OMAP2430 */  /* @@ -811,7 +811,7 @@ static struct clockdomain *clockdomains_omap2[] __initdata = {  	&cm_clkdm,  	&prm_clkdm, -#ifdef CONFIG_ARCH_OMAP2420 +#ifdef CONFIG_SOC_OMAP2420  	&mpu_2420_clkdm,  	&iva1_2420_clkdm,  	&dsp_2420_clkdm, @@ -821,7 +821,7 @@ static struct clockdomain *clockdomains_omap2[] __initdata = {  	&dss_2420_clkdm,  #endif -#ifdef CONFIG_ARCH_OMAP2430 +#ifdef CONFIG_SOC_OMAP2430  	&mpu_2430_clkdm,  	&mdm_clkdm,  	&dsp_2430_clkdm, diff --git a/arch/arm/mach-omap2/common.c b/arch/arm/mach-omap2/common.c index 778929f7e92..48de4513de4 100644 --- a/arch/arm/mach-omap2/common.c +++ b/arch/arm/mach-omap2/common.c @@ -40,7 +40,7 @@ static void __init __omap2_set_globals(struct omap_globals *omap2_globals)  #endif -#if defined(CONFIG_ARCH_OMAP2420) +#if defined(CONFIG_SOC_OMAP2420)  static struct omap_globals omap242x_globals = {  	.class	= OMAP242X_CLASS, @@ -61,7 +61,7 @@ void __init omap2_set_globals_242x(void)  }  #endif -#if defined(CONFIG_ARCH_OMAP2430) +#if defined(CONFIG_SOC_OMAP2430)  static struct omap_globals omap243x_globals = {  	.class	= OMAP243X_CLASS, @@ -108,6 +108,27 @@ void __init omap3_map_io(void)  	omap2_set_globals_3xxx();  	omap34xx_map_common_io();  } + +/* + * Adjust TAP register base such that omap3_check_revision accesses the correct + * TI816X register for checking device ID (it adds 0x204 to tap base while + * TI816X DEVICE ID register is at offset 0x600 from control base). + */ +#define TI816X_TAP_BASE		(TI816X_CTRL_BASE + \ +				TI816X_CONTROL_DEVICE_ID - 0x204) + +static struct omap_globals ti816x_globals = { +	.class  = OMAP343X_CLASS, +	.tap    = OMAP2_L4_IO_ADDRESS(TI816X_TAP_BASE), +	.ctrl   = TI816X_CTRL_BASE, +	.prm    = TI816X_PRCM_BASE, +	.cm     = TI816X_PRCM_BASE, +}; + +void __init omap2_set_globals_ti816x(void) +{ +	__omap2_set_globals(&ti816x_globals); +}  #endif  #if defined(CONFIG_ARCH_OMAP4) diff --git a/arch/arm/mach-omap2/control.h b/arch/arm/mach-omap2/control.h index f0629ae0410..c2804c1c4ef 100644 --- a/arch/arm/mach-omap2/control.h +++ b/arch/arm/mach-omap2/control.h @@ -52,6 +52,9 @@  #define OMAP343X_CONTROL_PADCONFS_WKUP	0xa00  #define OMAP343X_CONTROL_GENERAL_WKUP	0xa60 +/* TI816X spefic control submodules */ +#define TI816X_CONTROL_DEVCONF		0x600 +  /* Control register offsets - read/write with omap_ctrl_{read,write}{bwl}() */  #define OMAP2_CONTROL_SYSCONFIG		(OMAP2_CONTROL_INTERFACE + 0x10) @@ -241,6 +244,9 @@  #define OMAP3_PADCONF_SAD2D_MSTANDBY   0x250  #define OMAP3_PADCONF_SAD2D_IDLEACK    0x254 +/* TI816X CONTROL_DEVCONF register offsets */ +#define TI816X_CONTROL_DEVICE_ID	(TI816X_CONTROL_DEVCONF + 0x000) +  /*   * REVISIT: This list of registers is not comprehensive - there are more   * that should be added. diff --git a/arch/arm/mach-omap2/devices.c b/arch/arm/mach-omap2/devices.c index 2c9c912f2c4..e0f0ef952bc 100644 --- a/arch/arm/mach-omap2/devices.c +++ b/arch/arm/mach-omap2/devices.c @@ -333,7 +333,7 @@ static struct platform_device omap2_mcspi2 = {  	},  }; -#if defined(CONFIG_ARCH_OMAP2430) || defined(CONFIG_ARCH_OMAP3) || \ +#if defined(CONFIG_SOC_OMAP2430) || defined(CONFIG_ARCH_OMAP3) || \  	defined(CONFIG_ARCH_OMAP4)  static struct omap2_mcspi_platform_config omap2_mcspi3_config = {  	.num_cs		= 2, @@ -400,7 +400,7 @@ static inline void omap4_mcspi_fixup(void)  }  #endif -#if defined(CONFIG_ARCH_OMAP2430) || defined(CONFIG_ARCH_OMAP3) || \ +#if defined(CONFIG_SOC_OMAP2430) || defined(CONFIG_ARCH_OMAP3) || \  	defined(CONFIG_ARCH_OMAP4)  static inline void omap2_mcspi3_init(void)  { @@ -895,7 +895,7 @@ void __init omap2_init_mmc(struct omap_mmc_platform_data **mmc_data,  /*-------------------------------------------------------------------------*/  #if defined(CONFIG_HDQ_MASTER_OMAP) || defined(CONFIG_HDQ_MASTER_OMAP_MODULE) -#if defined(CONFIG_ARCH_OMAP2430) || defined(CONFIG_ARCH_OMAP3430) +#if defined(CONFIG_SOC_OMAP2430) || defined(CONFIG_SOC_OMAP3430)  #define OMAP_HDQ_BASE	0x480B2000  #endif  static struct resource omap_hdq_resources[] = { diff --git a/arch/arm/mach-omap2/id.c b/arch/arm/mach-omap2/id.c index 5f9086c65e4..5c25f1b5523 100644 --- a/arch/arm/mach-omap2/id.c +++ b/arch/arm/mach-omap2/id.c @@ -191,12 +191,19 @@ static void __init omap3_check_features(void)  	if (!cpu_is_omap3505() && !cpu_is_omap3517())  		omap3_features |= OMAP3_HAS_IO_WAKEUP; +	omap3_features |= OMAP3_HAS_SDRC; +  	/*  	 * TODO: Get additional info (where applicable)  	 *       e.g. Size of L2 cache.  	 */  } +static void __init ti816x_check_features(void) +{ +	omap3_features = OMAP3_HAS_NEON; +} +  static void __init omap3_check_revision(void)  {  	u32 cpuid, idcode; @@ -287,6 +294,20 @@ static void __init omap3_check_revision(void)  			omap_chip.oc |= CHIP_IS_OMAP3630ES1_2;  		}  		break; +	case 0xb81e: +		omap_chip.oc = CHIP_IS_TI816X; + +		switch (rev) { +		case 0: +			omap_revision = TI8168_REV_ES1_0; +			break; +		case 1: +			omap_revision = TI8168_REV_ES1_1; +			break; +		default: +			omap_revision =  TI8168_REV_ES1_1; +		} +		break;  	default:  		/* Unknown default to latest silicon rev as default*/  		omap_revision =  OMAP3630_REV_ES1_2; @@ -372,6 +393,8 @@ static void __init omap3_cpuinfo(void)  			/* Already set in omap3_check_revision() */  			strcpy(cpu_name, "AM3505");  		} +	} else if (cpu_is_ti816x()) { +		strcpy(cpu_name, "TI816X");  	} else if (omap3_has_iva() && omap3_has_sgx()) {  		/* OMAP3430, OMAP3525, OMAP3515, OMAP3503 devices */  		strcpy(cpu_name, "OMAP3430/3530"); @@ -386,7 +409,7 @@ static void __init omap3_cpuinfo(void)  		strcpy(cpu_name, "OMAP3503");  	} -	if (cpu_is_omap3630()) { +	if (cpu_is_omap3630() || cpu_is_ti816x()) {  		switch (rev) {  		case OMAP_REVBITS_00:  			strcpy(cpu_rev, "1.0"); @@ -462,7 +485,13 @@ void __init omap2_check_revision(void)  		omap24xx_check_revision();  	} else if (cpu_is_omap34xx()) {  		omap3_check_revision(); -		omap3_check_features(); + +		/* TI816X doesn't have feature register */ +		if (!cpu_is_ti816x()) +			omap3_check_features(); +		else +			ti816x_check_features(); +  		omap3_cpuinfo();  		return;  	} else if (cpu_is_omap44xx()) { diff --git a/arch/arm/mach-omap2/include/mach/debug-macro.S b/arch/arm/mach-omap2/include/mach/debug-macro.S index 6a4d4136002..e1b0f17b092 100644 --- a/arch/arm/mach-omap2/include/mach/debug-macro.S +++ b/arch/arm/mach-omap2/include/mach/debug-macro.S @@ -69,6 +69,12 @@ omap_uart_lsr:	.word	0  		beq	34f			@ configure OMAP3UART4  		cmp	\rp, #OMAP4UART4	@ only on 44xx  		beq	44f			@ configure OMAP4UART4 +		cmp	\rp, #TI816XUART1	@ ti816x UART offsets different +		beq	81f			@ configure UART1 +		cmp	\rp, #TI816XUART2	@ ti816x UART offsets different +		beq	82f			@ configure UART2 +		cmp	\rp, #TI816XUART3	@ ti816x UART offsets different +		beq	83f			@ configure UART3  		cmp	\rp, #ZOOM_UART		@ only on zoom2/3  		beq	95f			@ configure ZOOM_UART @@ -91,6 +97,12 @@ omap_uart_lsr:	.word	0  		b	98f  44:		mov	\rp, #UART_OFFSET(OMAP4_UART4_BASE)  		b	98f +81:		mov	\rp, #UART_OFFSET(TI816X_UART1_BASE) +		b	98f +82:		mov	\rp, #UART_OFFSET(TI816X_UART2_BASE) +		b	98f +83:		mov	\rp, #UART_OFFSET(TI816X_UART3_BASE) +		b	98f  95:		ldr	\rp, =ZOOM_UART_BASE  		mrc	p15, 0, \rv, c1, c0  		tst	\rv, #1			@ MMU enabled? diff --git a/arch/arm/mach-omap2/include/mach/entry-macro.S b/arch/arm/mach-omap2/include/mach/entry-macro.S index 81985a665cb..a48690b9099 100644 --- a/arch/arm/mach-omap2/include/mach/entry-macro.S +++ b/arch/arm/mach-omap2/include/mach/entry-macro.S @@ -61,6 +61,14 @@  		bne	9998f  		ldr	\irqnr, [\base, #0xd8] /* IRQ pending reg 3 */  		cmp	\irqnr, #0x0 +		bne	9998f + +		/* +		 * ti816x has additional IRQ pending register. Checking this +		 * register on omap2 & omap3 has no effect (read as 0). +		 */ +		ldr	\irqnr, [\base, #0xf8] /* IRQ pending reg 4 */ +		cmp	\irqnr, #0x0  9998:  		ldrne	\irqnr, [\base, #INTCPS_SIR_IRQ_OFFSET]  		and	\irqnr, \irqnr, #ACTIVEIRQ_MASK /* Clear spurious bits */ @@ -133,6 +141,11 @@  		bne	9999f  		ldr	\irqnr, [\base, #0xd8] /* IRQ pending reg 3 */  		cmp	\irqnr, #0x0 +#ifdef CONFIG_SOC_OMAPTI816X +		bne	9999f +		ldr	\irqnr, [\base, #0xf8] /* IRQ pending reg 4 */ +		cmp	\irqnr, #0x0 +#endif  9999:  		ldrne	\irqnr, [\base, #INTCPS_SIR_IRQ_OFFSET]  		and	\irqnr, \irqnr, #ACTIVEIRQ_MASK /* Clear spurious bits */ diff --git a/arch/arm/mach-omap2/io.c b/arch/arm/mach-omap2/io.c index c2032041d26..b8b49e4ae92 100644 --- a/arch/arm/mach-omap2/io.c +++ b/arch/arm/mach-omap2/io.c @@ -66,7 +66,7 @@ static struct map_desc omap24xx_io_desc[] __initdata = {  	},  }; -#ifdef CONFIG_ARCH_OMAP2420 +#ifdef CONFIG_SOC_OMAP2420  static struct map_desc omap242x_io_desc[] __initdata = {  	{  		.virtual	= DSP_MEM_2420_VIRT, @@ -90,7 +90,7 @@ static struct map_desc omap242x_io_desc[] __initdata = {  #endif -#ifdef CONFIG_ARCH_OMAP2430 +#ifdef CONFIG_SOC_OMAP2430  static struct map_desc omap243x_io_desc[] __initdata = {  	{  		.virtual	= L4_WK_243X_VIRT, @@ -175,6 +175,18 @@ static struct map_desc omap34xx_io_desc[] __initdata = {  #endif  };  #endif + +#ifdef CONFIG_SOC_OMAPTI816X +static struct map_desc omapti816x_io_desc[] __initdata = { +	{ +		.virtual	= L4_34XX_VIRT, +		.pfn		= __phys_to_pfn(L4_34XX_PHYS), +		.length		= L4_34XX_SIZE, +		.type		= MT_DEVICE +	}, +}; +#endif +  #ifdef	CONFIG_ARCH_OMAP4  static struct map_desc omap44xx_io_desc[] __initdata = {  	{ @@ -241,7 +253,7 @@ static void __init _omap2_map_common_io(void)  	omap_sram_init();  } -#ifdef CONFIG_ARCH_OMAP2420 +#ifdef CONFIG_SOC_OMAP2420  void __init omap242x_map_common_io(void)  {  	iotable_init(omap24xx_io_desc, ARRAY_SIZE(omap24xx_io_desc)); @@ -250,7 +262,7 @@ void __init omap242x_map_common_io(void)  }  #endif -#ifdef CONFIG_ARCH_OMAP2430 +#ifdef CONFIG_SOC_OMAP2430  void __init omap243x_map_common_io(void)  {  	iotable_init(omap24xx_io_desc, ARRAY_SIZE(omap24xx_io_desc)); @@ -267,6 +279,14 @@ void __init omap34xx_map_common_io(void)  }  #endif +#ifdef CONFIG_SOC_OMAPTI816X +void __init omapti816x_map_common_io(void) +{ +	iotable_init(omapti816x_io_desc, ARRAY_SIZE(omapti816x_io_desc)); +	_omap2_map_common_io(); +} +#endif +  #ifdef CONFIG_ARCH_OMAP4  void __init omap44xx_map_common_io(void)  { @@ -398,11 +418,7 @@ void __init omap2_init_common_infrastructure(void)  void __init omap2_init_common_devices(struct omap_sdrc_params *sdrc_cs0,  				      struct omap_sdrc_params *sdrc_cs1)  { -	omap_serial_early_init(); - -	omap_hwmod_late_init(); - -	if (cpu_is_omap24xx() || cpu_is_omap34xx()) { +	if (cpu_is_omap24xx() || omap3_has_sdrc()) {  		omap2_sdrc_init(sdrc_cs0, sdrc_cs1);  		_omap2_init_reprogram_sdrc();  	} diff --git a/arch/arm/mach-omap2/irq.c b/arch/arm/mach-omap2/irq.c index 23049c487c4..bc524b94fd5 100644 --- a/arch/arm/mach-omap2/irq.c +++ b/arch/arm/mach-omap2/irq.c @@ -61,8 +61,6 @@ struct omap3_intc_regs {  	u32 mir[INTCPS_NR_MIR_REGS];  }; -static struct omap3_intc_regs intc_context[ARRAY_SIZE(irq_banks)]; -  /* INTC bank register get/set */  static void intc_bank_write_reg(u32 val, struct omap_irq_bank *bank, u16 reg) @@ -110,7 +108,7 @@ static void omap_mask_irq(struct irq_data *d)  	unsigned int irq = d->irq;  	int offset = irq & (~(IRQ_BITS_PER_REG - 1)); -	if (cpu_is_omap34xx()) { +	if (cpu_is_omap34xx() && !cpu_is_ti816x()) {  		int spurious = 0;  		/* @@ -205,6 +203,9 @@ void __init omap_init_irq(void)  		BUG_ON(!base); +		if (cpu_is_ti816x()) +			bank->nr_irqs = 128; +  		/* Static mapping, never released */  		bank->base_reg = ioremap(base, SZ_4K);  		if (!bank->base_reg) { @@ -229,6 +230,8 @@ void __init omap_init_irq(void)  }  #ifdef CONFIG_ARCH_OMAP3 +static struct omap3_intc_regs intc_context[ARRAY_SIZE(irq_banks)]; +  void omap_intc_save_context(void)  {  	int ind = 0, i = 0; diff --git a/arch/arm/mach-omap2/mailbox.c b/arch/arm/mach-omap2/mailbox.c index 394413dc7de..29b9dc3917a 100644 --- a/arch/arm/mach-omap2/mailbox.c +++ b/arch/arm/mach-omap2/mailbox.c @@ -310,7 +310,7 @@ struct omap_mbox mbox_dsp_info = {  struct omap_mbox *omap3_mboxes[] = { &mbox_dsp_info, NULL };  #endif -#if defined(CONFIG_ARCH_OMAP2420) +#if defined(CONFIG_SOC_OMAP2420)  /* IVA */  static struct omap_mbox2_priv omap2_mbox_iva_priv = {  	.tx_fifo = { diff --git a/arch/arm/mach-omap2/mcbsp.c b/arch/arm/mach-omap2/mcbsp.c index f9c9df5b5ff..0526b758bdc 100644 --- a/arch/arm/mach-omap2/mcbsp.c +++ b/arch/arm/mach-omap2/mcbsp.c @@ -104,7 +104,7 @@ EXPORT_SYMBOL(omap2_mcbsp_set_clks_src);  /* Platform data */ -#ifdef CONFIG_ARCH_OMAP2420 +#ifdef CONFIG_SOC_OMAP2420  static struct omap_mcbsp_platform_data omap2420_mcbsp_pdata[] = {  	{  		.phys_base	= OMAP24XX_MCBSP1_BASE, @@ -129,7 +129,7 @@ static struct omap_mcbsp_platform_data omap2420_mcbsp_pdata[] = {  #define OMAP2420_MCBSP_REG_NUM		0  #endif -#ifdef CONFIG_ARCH_OMAP2430 +#ifdef CONFIG_SOC_OMAP2430  static struct omap_mcbsp_platform_data omap2430_mcbsp_pdata[] = {  	{  		.phys_base	= OMAP24XX_MCBSP1_BASE, diff --git a/arch/arm/mach-omap2/omap_hwmod.c b/arch/arm/mach-omap2/omap_hwmod.c index e282e35769f..9e89a58711b 100644 --- a/arch/arm/mach-omap2/omap_hwmod.c +++ b/arch/arm/mach-omap2/omap_hwmod.c @@ -1467,12 +1467,10 @@ static int __init _register(struct omap_hwmod *oh)  		return -EEXIST;  	ms_id = _find_mpu_port_index(oh); -	if (!IS_ERR_VALUE(ms_id)) { +	if (!IS_ERR_VALUE(ms_id))  		oh->_mpu_port_index = ms_id; -		oh->_mpu_rt_va = _find_mpu_rt_base(oh, oh->_mpu_port_index); -	} else { +	else  		oh->_int_flags |= _HWMOD_NO_MPU_PORT; -	}  	list_add_tail(&oh->node, &omap_hwmod_list); @@ -1621,6 +1619,26 @@ int __init omap_hwmod_init(struct omap_hwmod **ohs)  	return 0;  } +/* + * _populate_mpu_rt_base - populate the virtual address for a hwmod + * + * Must be called only from omap_hwmod_late_init so ioremap works properly. + * Assumes the caller takes care of locking if needed. + * + */ +static int __init _populate_mpu_rt_base(struct omap_hwmod *oh, void *data) +{ +	if (oh->_int_flags & _HWMOD_NO_MPU_PORT) +		return 0; + +	oh->_mpu_rt_va = _find_mpu_rt_base(oh, oh->_mpu_port_index); +	if (!oh->_mpu_rt_va) +		pr_warning("omap_hwmod: %s found no _mpu_rt_va for %s\n", +				__func__, oh->name); + +	return 0; +} +  /**   * omap_hwmod_late_init - do some post-clock framework initialization   * @@ -1628,10 +1646,12 @@ int __init omap_hwmod_init(struct omap_hwmod **ohs)   * to struct clk pointers for each registered omap_hwmod.  Also calls   * _setup() on each hwmod.  Returns 0.   */ -int omap_hwmod_late_init(void) +static int __init omap_hwmod_late_init(void)  {  	int r; +	r = omap_hwmod_for_each(_populate_mpu_rt_base, NULL); +  	/* XXX check return value */  	r = omap_hwmod_for_each(_init_clocks, NULL);  	WARN(r, "omap_hwmod: omap_hwmod_late_init(): _init_clocks failed\n"); @@ -1644,6 +1664,7 @@ int omap_hwmod_late_init(void)  	return 0;  } +core_initcall(omap_hwmod_late_init);  /**   * omap_hwmod_enable - enable an omap_hwmod diff --git a/arch/arm/mach-omap2/opp2xxx.h b/arch/arm/mach-omap2/opp2xxx.h index 38b73055050..8affc66a92c 100644 --- a/arch/arm/mach-omap2/opp2xxx.h +++ b/arch/arm/mach-omap2/opp2xxx.h @@ -418,7 +418,7 @@ struct prcm_config {  extern const struct prcm_config omap2420_rate_table[]; -#ifdef CONFIG_ARCH_OMAP2430 +#ifdef CONFIG_SOC_OMAP2430  extern const struct prcm_config omap2430_rate_table[];  #else  #define omap2430_rate_table	NULL diff --git a/arch/arm/mach-omap2/powerdomains2xxx_data.c b/arch/arm/mach-omap2/powerdomains2xxx_data.c index 9b1a3350057..78739e10f5b 100644 --- a/arch/arm/mach-omap2/powerdomains2xxx_data.c +++ b/arch/arm/mach-omap2/powerdomains2xxx_data.c @@ -78,7 +78,7 @@ static struct powerdomain core_24xx_pwrdm = {   * 2430-specific powerdomains   */ -#ifdef CONFIG_ARCH_OMAP2430 +#ifdef CONFIG_SOC_OMAP2430  /* XXX 2430 KILLDOMAINWKUP bit?  No current users apparently */ @@ -97,7 +97,7 @@ static struct powerdomain mdm_pwrdm = {  	},  }; -#endif     /* CONFIG_ARCH_OMAP2430 */ +#endif     /* CONFIG_SOC_OMAP2430 */  /* As powerdomains are added or removed above, this list must also be changed */  static struct powerdomain *powerdomains_omap2xxx[] __initdata = { @@ -111,7 +111,7 @@ static struct powerdomain *powerdomains_omap2xxx[] __initdata = {  	&core_24xx_pwrdm,  #endif -#ifdef CONFIG_ARCH_OMAP2430 +#ifdef CONFIG_SOC_OMAP2430  	&mdm_pwrdm,  #endif  	NULL diff --git a/arch/arm/mach-omap2/prcm.c b/arch/arm/mach-omap2/prcm.c index 679bcd28576..6be14389e4f 100644 --- a/arch/arm/mach-omap2/prcm.c +++ b/arch/arm/mach-omap2/prcm.c @@ -24,6 +24,7 @@  #include <linux/io.h>  #include <linux/delay.h> +#include <mach/system.h>  #include <plat/common.h>  #include <plat/prcm.h>  #include <plat/irqs.h> @@ -57,7 +58,7 @@ u32 omap_prcm_get_reset_sources(void)  EXPORT_SYMBOL(omap_prcm_get_reset_sources);  /* Resets clock rates and reboots the system. Only called from system.h */ -void omap_prcm_arch_reset(char mode, const char *cmd) +static void omap_prcm_arch_reset(char mode, const char *cmd)  {  	s16 prcm_offs = 0; @@ -108,6 +109,8 @@ void omap_prcm_arch_reset(char mode, const char *cmd)  	omap2_prm_read_mod_reg(prcm_offs, OMAP2_RM_RSTCTRL); /* OCP barrier */  } +void (*arch_reset)(char, const char *) = omap_prcm_arch_reset; +  /**   * omap2_cm_wait_idlest - wait for IDLEST bit to indicate module readiness   * @reg: physical address of module IDLEST register diff --git a/arch/arm/mach-omap2/serial.c b/arch/arm/mach-omap2/serial.c index 32e91a9c8b6..47eef48b883 100644 --- a/arch/arm/mach-omap2/serial.c +++ b/arch/arm/mach-omap2/serial.c @@ -486,7 +486,7 @@ static void omap_uart_idle_init(struct omap_uart_state *uart)  		mod_timer(&uart->timer, jiffies + uart->timeout);  	omap_uart_smart_idle_enable(uart, 0); -	if (cpu_is_omap34xx()) { +	if (cpu_is_omap34xx() && !cpu_is_ti816x()) {  		u32 mod = (uart->num > 1) ? OMAP3430_PER_MOD : CORE_MOD;  		u32 wk_mask = 0;  		u32 padconf = 0; @@ -655,7 +655,7 @@ static void serial_out_override(struct uart_port *up, int offset, int value)  }  #endif -void __init omap_serial_early_init(void) +static int __init omap_serial_early_init(void)  {  	int i = 0; @@ -672,7 +672,7 @@ void __init omap_serial_early_init(void)  		uart = kzalloc(sizeof(struct omap_uart_state), GFP_KERNEL);  		if (WARN_ON(!uart)) -			return; +			return -ENODEV;  		uart->oh = oh;  		uart->num = i++; @@ -691,7 +691,10 @@ void __init omap_serial_early_init(void)  		 */  		uart->oh->flags |= HWMOD_INIT_NO_IDLE | HWMOD_INIT_NO_RESET;  	} while (1); + +	return 0;  } +core_initcall(omap_serial_early_init);  /**   * omap_serial_init_port() - initialize single serial port @@ -759,13 +762,13 @@ void __init omap_serial_init_port(struct omap_board_data *bdata)  	p->private_data = uart;  	/* -	 * omap44xx: Never read empty UART fifo +	 * omap44xx, ti816x: Never read empty UART fifo  	 * omap3xxx: Never read empty UART fifo on UARTs  	 * with IP rev >=0x52  	 */  	uart->regshift = p->regshift;  	uart->membase = p->membase; -	if (cpu_is_omap44xx()) +	if (cpu_is_omap44xx() || cpu_is_ti816x())  		uart->errata |= UART_ERRATA_FIFO_FULL_ABORT;  	else if ((serial_read_reg(uart, UART_OMAP_MVER) & 0xFF)  			>= UART_OMAP_NO_EMPTY_FIFO_READ_IP_REV) @@ -847,7 +850,7 @@ void __init omap_serial_init_port(struct omap_board_data *bdata)  	}  	/* Enable the MDR1 errata for OMAP3 */ -	if (cpu_is_omap34xx()) +	if (cpu_is_omap34xx() && !cpu_is_ti816x())  		uart->errata |= UART_ERRATA_i202_MDR1_ACCESS;  }  |