Bläddra i källkod

omap: Set separate timer init functions to avoid cpu_is_omap tests

This is needed for the following patches so we can initialize the
rest of the hardware timers later on.

As with the init_irq calls, there's no need to do cpu_is_omap calls
during the timer init as we only care about the major omap generation.
This means that we can initialize the sys_timer with the .timer
entries alone.

Note that for now we just set stubs for the various sys_timer entries
that will get populated in a later patch. The following patches will
also remove the omap_dm_timer_init calls and change the init for the
rest of the hardware timers to happen with an arch_initcall.

Signed-off-by: Tony Lindgren <tony@atomide.com>
Reviewed-by: Kevin Hilman <khilman@ti.com>
Tony Lindgren 14 år sedan
förälder
incheckning
e74984e46e
46 ändrade filer med 86 tillägg och 62 borttagningar
  1. 1 1
      arch/arm/mach-omap1/board-ams-delta.c
  2. 1 1
      arch/arm/mach-omap1/board-fsample.c
  3. 1 1
      arch/arm/mach-omap1/board-generic.c
  4. 1 1
      arch/arm/mach-omap1/board-h2.c
  5. 1 1
      arch/arm/mach-omap1/board-h3.c
  6. 1 1
      arch/arm/mach-omap1/board-htcherald.c
  7. 1 1
      arch/arm/mach-omap1/board-innovator.c
  8. 1 1
      arch/arm/mach-omap1/board-nokia770.c
  9. 1 1
      arch/arm/mach-omap1/board-osk.c
  10. 1 1
      arch/arm/mach-omap1/board-palmte.c
  11. 1 1
      arch/arm/mach-omap1/board-palmtt.c
  12. 1 1
      arch/arm/mach-omap1/board-palmz71.c
  13. 1 1
      arch/arm/mach-omap1/board-perseus2.c
  14. 1 1
      arch/arm/mach-omap1/board-sx1.c
  15. 1 1
      arch/arm/mach-omap1/board-voiceblue.c
  16. 3 3
      arch/arm/mach-omap1/time.c
  17. 1 1
      arch/arm/mach-omap2/board-2430sdp.c
  18. 1 1
      arch/arm/mach-omap2/board-3430sdp.c
  19. 1 1
      arch/arm/mach-omap2/board-3630sdp.c
  20. 1 1
      arch/arm/mach-omap2/board-4430sdp.c
  21. 1 1
      arch/arm/mach-omap2/board-am3517crane.c
  22. 1 1
      arch/arm/mach-omap2/board-am3517evm.c
  23. 1 1
      arch/arm/mach-omap2/board-apollon.c
  24. 1 1
      arch/arm/mach-omap2/board-cm-t35.c
  25. 1 1
      arch/arm/mach-omap2/board-cm-t3517.c
  26. 1 1
      arch/arm/mach-omap2/board-devkit8000.c
  27. 1 1
      arch/arm/mach-omap2/board-generic.c
  28. 1 1
      arch/arm/mach-omap2/board-h4.c
  29. 2 2
      arch/arm/mach-omap2/board-igep0020.c
  30. 1 1
      arch/arm/mach-omap2/board-ldp.c
  31. 3 3
      arch/arm/mach-omap2/board-n8x0.c
  32. 1 1
      arch/arm/mach-omap2/board-omap3beagle.c
  33. 1 1
      arch/arm/mach-omap2/board-omap3evm.c
  34. 2 2
      arch/arm/mach-omap2/board-omap3logic.c
  35. 1 1
      arch/arm/mach-omap2/board-omap3pandora.c
  36. 1 1
      arch/arm/mach-omap2/board-omap3stalker.c
  37. 1 1
      arch/arm/mach-omap2/board-omap3touchbook.c
  38. 1 1
      arch/arm/mach-omap2/board-omap4panda.c
  39. 1 1
      arch/arm/mach-omap2/board-overo.c
  40. 1 1
      arch/arm/mach-omap2/board-rm680.c
  41. 1 1
      arch/arm/mach-omap2/board-rx51.c
  42. 1 1
      arch/arm/mach-omap2/board-ti8168evm.c
  43. 2 2
      arch/arm/mach-omap2/board-zoom.c
  44. 31 10
      arch/arm/mach-omap2/timer-gp.c
  45. 5 1
      arch/arm/plat-omap/include/plat/common.h
  46. 0 1
      arch/arm/plat-omap/include/plat/dmtimer.h

+ 1 - 1
arch/arm/mach-omap1/board-ams-delta.c

@@ -391,7 +391,7 @@ MACHINE_START(AMS_DELTA, "Amstrad E3 (Delta)")
 	.reserve	= omap_reserve,
 	.init_irq	= ams_delta_init_irq,
 	.init_machine	= ams_delta_init,
-	.timer		= &omap_timer,
+	.timer		= &omap1_timer,
 MACHINE_END
 
 EXPORT_SYMBOL(ams_delta_latch1_write);

+ 1 - 1
arch/arm/mach-omap1/board-fsample.c

@@ -394,5 +394,5 @@ MACHINE_START(OMAP_FSAMPLE, "OMAP730 F-Sample")
 	.reserve	= omap_reserve,
 	.init_irq	= omap_fsample_init_irq,
 	.init_machine	= omap_fsample_init,
-	.timer		= &omap_timer,
+	.timer		= &omap1_timer,
 MACHINE_END

+ 1 - 1
arch/arm/mach-omap1/board-generic.c

@@ -99,5 +99,5 @@ MACHINE_START(OMAP_GENERIC, "Generic OMAP1510/1610/1710")
 	.reserve	= omap_reserve,
 	.init_irq	= omap_generic_init_irq,
 	.init_machine	= omap_generic_init,
-	.timer		= &omap_timer,
+	.timer		= &omap1_timer,
 MACHINE_END

+ 1 - 1
arch/arm/mach-omap1/board-h2.c

@@ -466,5 +466,5 @@ MACHINE_START(OMAP_H2, "TI-H2")
 	.reserve	= omap_reserve,
 	.init_irq	= h2_init_irq,
 	.init_machine	= h2_init,
-	.timer		= &omap_timer,
+	.timer		= &omap1_timer,
 MACHINE_END

+ 1 - 1
arch/arm/mach-omap1/board-h3.c

@@ -454,5 +454,5 @@ MACHINE_START(OMAP_H3, "TI OMAP1710 H3 board")
 	.reserve	= omap_reserve,
 	.init_irq	= h3_init_irq,
 	.init_machine	= h3_init,
-	.timer		= &omap_timer,
+	.timer		= &omap1_timer,
 MACHINE_END

+ 1 - 1
arch/arm/mach-omap1/board-htcherald.c

@@ -616,5 +616,5 @@ MACHINE_START(HERALD, "HTC Herald")
 	.reserve	= omap_reserve,
 	.init_irq       = htcherald_init_irq,
 	.init_machine   = htcherald_init,
-	.timer          = &omap_timer,
+	.timer          = &omap1_timer,
 MACHINE_END

+ 1 - 1
arch/arm/mach-omap1/board-innovator.c

@@ -464,5 +464,5 @@ MACHINE_START(OMAP_INNOVATOR, "TI-Innovator")
 	.reserve	= omap_reserve,
 	.init_irq	= innovator_init_irq,
 	.init_machine	= innovator_init,
-	.timer		= &omap_timer,
+	.timer		= &omap1_timer,
 MACHINE_END

+ 1 - 1
arch/arm/mach-omap1/board-nokia770.c

@@ -269,5 +269,5 @@ MACHINE_START(NOKIA770, "Nokia 770")
 	.reserve	= omap_reserve,
 	.init_irq	= omap_nokia770_init_irq,
 	.init_machine	= omap_nokia770_init,
-	.timer		= &omap_timer,
+	.timer		= &omap1_timer,
 MACHINE_END

+ 1 - 1
arch/arm/mach-omap1/board-osk.c

@@ -588,5 +588,5 @@ MACHINE_START(OMAP_OSK, "TI-OSK")
 	.reserve	= omap_reserve,
 	.init_irq	= osk_init_irq,
 	.init_machine	= osk_init,
-	.timer		= &omap_timer,
+	.timer		= &omap1_timer,
 MACHINE_END

+ 1 - 1
arch/arm/mach-omap1/board-palmte.c

@@ -280,5 +280,5 @@ MACHINE_START(OMAP_PALMTE, "OMAP310 based Palm Tungsten E")
 	.reserve	= omap_reserve,
 	.init_irq	= omap_palmte_init_irq,
 	.init_machine	= omap_palmte_init,
-	.timer		= &omap_timer,
+	.timer		= &omap1_timer,
 MACHINE_END

+ 1 - 1
arch/arm/mach-omap1/board-palmtt.c

@@ -326,5 +326,5 @@ MACHINE_START(OMAP_PALMTT, "OMAP1510 based Palm Tungsten|T")
 	.reserve	= omap_reserve,
 	.init_irq	= omap_palmtt_init_irq,
 	.init_machine	= omap_palmtt_init,
-	.timer		= &omap_timer,
+	.timer		= &omap1_timer,
 MACHINE_END

+ 1 - 1
arch/arm/mach-omap1/board-palmz71.c

@@ -346,5 +346,5 @@ MACHINE_START(OMAP_PALMZ71, "OMAP310 based Palm Zire71")
 	.reserve	= omap_reserve,
 	.init_irq	= omap_palmz71_init_irq,
 	.init_machine	= omap_palmz71_init,
-	.timer		= &omap_timer,
+	.timer		= &omap1_timer,
 MACHINE_END

+ 1 - 1
arch/arm/mach-omap1/board-perseus2.c

@@ -355,5 +355,5 @@ MACHINE_START(OMAP_PERSEUS2, "OMAP730 Perseus2")
 	.reserve	= omap_reserve,
 	.init_irq	= omap_perseus2_init_irq,
 	.init_machine	= omap_perseus2_init,
-	.timer		= &omap_timer,
+	.timer		= &omap1_timer,
 MACHINE_END

+ 1 - 1
arch/arm/mach-omap1/board-sx1.c

@@ -426,5 +426,5 @@ MACHINE_START(SX1, "OMAP310 based Siemens SX1")
 	.reserve	= omap_reserve,
 	.init_irq	= omap_sx1_init_irq,
 	.init_machine	= omap_sx1_init,
-	.timer		= &omap_timer,
+	.timer		= &omap1_timer,
 MACHINE_END

+ 1 - 1
arch/arm/mach-omap1/board-voiceblue.c

@@ -306,5 +306,5 @@ MACHINE_START(VOICEBLUE, "VoiceBlue OMAP5910")
 	.reserve	= omap_reserve,
 	.init_irq	= voiceblue_init_irq,
 	.init_machine	= voiceblue_init,
-	.timer		= &omap_timer,
+	.timer		= &omap1_timer,
 MACHINE_END

+ 3 - 3
arch/arm/mach-omap1/time.c

@@ -297,7 +297,7 @@ static inline int omap_32k_timer_usable(void)
  * Timer initialization
  * ---------------------------------------------------------------------------
  */
-static void __init omap_timer_init(void)
+static void __init omap1_timer_init(void)
 {
 	if (omap_32k_timer_usable()) {
 		preferred_sched_clock_init(1);
@@ -307,6 +307,6 @@ static void __init omap_timer_init(void)
 	}
 }
 
-struct sys_timer omap_timer = {
-	.init		= omap_timer_init,
+struct sys_timer omap1_timer = {
+	.init		= omap1_timer_init,
 };

+ 1 - 1
arch/arm/mach-omap2/board-2430sdp.c

@@ -262,5 +262,5 @@ MACHINE_START(OMAP_2430SDP, "OMAP2430 sdp2430 board")
 	.init_early	= omap_2430sdp_init_early,
 	.init_irq	= omap2_init_irq,
 	.init_machine	= omap_2430sdp_init,
-	.timer		= &omap_timer,
+	.timer		= &omap2_timer,
 MACHINE_END

+ 1 - 1
arch/arm/mach-omap2/board-3430sdp.c

@@ -806,5 +806,5 @@ MACHINE_START(OMAP_3430SDP, "OMAP3430 3430SDP board")
 	.init_early	= omap_3430sdp_init_early,
 	.init_irq	= omap3_init_irq,
 	.init_machine	= omap_3430sdp_init,
-	.timer		= &omap_timer,
+	.timer		= &omap3_timer,
 MACHINE_END

+ 1 - 1
arch/arm/mach-omap2/board-3630sdp.c

@@ -221,5 +221,5 @@ MACHINE_START(OMAP_3630SDP, "OMAP 3630SDP board")
 	.init_early	= omap_sdp_init_early,
 	.init_irq	= omap3_init_irq,
 	.init_machine	= omap_sdp_init,
-	.timer		= &omap_timer,
+	.timer		= &omap3_timer,
 MACHINE_END

+ 1 - 1
arch/arm/mach-omap2/board-4430sdp.c

@@ -773,5 +773,5 @@ MACHINE_START(OMAP_4430SDP, "OMAP4430 4430SDP board")
 	.init_early	= omap_4430sdp_init_early,
 	.init_irq	= gic_init_irq,
 	.init_machine	= omap_4430sdp_init,
-	.timer		= &omap_timer,
+	.timer		= &omap4_timer,
 MACHINE_END

+ 1 - 1
arch/arm/mach-omap2/board-am3517crane.c

@@ -106,5 +106,5 @@ MACHINE_START(CRANEBOARD, "AM3517/05 CRANEBOARD")
 	.init_early	= am3517_crane_init_early,
 	.init_irq	= omap3_init_irq,
 	.init_machine	= am3517_crane_init,
-	.timer		= &omap_timer,
+	.timer		= &omap3_timer,
 MACHINE_END

+ 1 - 1
arch/arm/mach-omap2/board-am3517evm.c

@@ -496,5 +496,5 @@ MACHINE_START(OMAP3517EVM, "OMAP3517/AM3517 EVM")
 	.init_early	= am3517_evm_init_early,
 	.init_irq	= omap3_init_irq,
 	.init_machine	= am3517_evm_init,
-	.timer		= &omap_timer,
+	.timer		= &omap3_timer,
 MACHINE_END

+ 1 - 1
arch/arm/mach-omap2/board-apollon.c

@@ -356,5 +356,5 @@ MACHINE_START(OMAP_APOLLON, "OMAP24xx Apollon")
 	.init_early	= omap_apollon_init_early,
 	.init_irq	= omap2_init_irq,
 	.init_machine	= omap_apollon_init,
-	.timer		= &omap_timer,
+	.timer		= &omap2_timer,
 MACHINE_END

+ 1 - 1
arch/arm/mach-omap2/board-cm-t35.c

@@ -648,5 +648,5 @@ MACHINE_START(CM_T35, "Compulab CM-T35")
 	.init_early	= cm_t35_init_early,
 	.init_irq	= omap3_init_irq,
 	.init_machine	= cm_t35_init,
-	.timer		= &omap_timer,
+	.timer		= &omap3_timer,
 MACHINE_END

+ 1 - 1
arch/arm/mach-omap2/board-cm-t3517.c

@@ -306,5 +306,5 @@ MACHINE_START(CM_T3517, "Compulab CM-T3517")
 	.init_early	= cm_t3517_init_early,
 	.init_irq	= omap3_init_irq,
 	.init_machine	= cm_t3517_init,
-	.timer		= &omap_timer,
+	.timer		= &omap3_timer,
 MACHINE_END

+ 1 - 1
arch/arm/mach-omap2/board-devkit8000.c

@@ -707,5 +707,5 @@ MACHINE_START(DEVKIT8000, "OMAP3 Devkit8000")
 	.init_early	= devkit8000_init_early,
 	.init_irq	= devkit8000_init_irq,
 	.init_machine	= devkit8000_init,
-	.timer		= &omap_timer,
+	.timer		= &omap3_secure_timer,
 MACHINE_END

+ 1 - 1
arch/arm/mach-omap2/board-generic.c

@@ -72,5 +72,5 @@ MACHINE_START(OMAP_GENERIC, "Generic OMAP24xx")
 	.init_early	= omap_generic_init_early,
 	.init_irq	= omap2_init_irq,
 	.init_machine	= omap_generic_init,
-	.timer		= &omap_timer,
+	.timer		= &omap3_timer,
 MACHINE_END

+ 1 - 1
arch/arm/mach-omap2/board-h4.c

@@ -388,5 +388,5 @@ MACHINE_START(OMAP_H4, "OMAP2420 H4 board")
 	.init_early	= omap_h4_init_early,
 	.init_irq	= omap_h4_init_irq,
 	.init_machine	= omap_h4_init,
-	.timer		= &omap_timer,
+	.timer		= &omap2_timer,
 MACHINE_END

+ 2 - 2
arch/arm/mach-omap2/board-igep0020.c

@@ -705,7 +705,7 @@ MACHINE_START(IGEP0020, "IGEP v2 board")
 	.init_early	= igep_init_early,
 	.init_irq	= omap3_init_irq,
 	.init_machine	= igep_init,
-	.timer		= &omap_timer,
+	.timer		= &omap3_timer,
 MACHINE_END
 
 MACHINE_START(IGEP0030, "IGEP OMAP3 module")
@@ -715,5 +715,5 @@ MACHINE_START(IGEP0030, "IGEP OMAP3 module")
 	.init_early	= igep_init_early,
 	.init_irq	= omap3_init_irq,
 	.init_machine	= igep_init,
-	.timer		= &omap_timer,
+	.timer		= &omap3_timer,
 MACHINE_END

+ 1 - 1
arch/arm/mach-omap2/board-ldp.c

@@ -352,5 +352,5 @@ MACHINE_START(OMAP_LDP, "OMAP LDP board")
 	.init_early	= omap_ldp_init_early,
 	.init_irq	= omap3_init_irq,
 	.init_machine	= omap_ldp_init,
-	.timer		= &omap_timer,
+	.timer		= &omap3_timer,
 MACHINE_END

+ 3 - 3
arch/arm/mach-omap2/board-n8x0.c

@@ -701,7 +701,7 @@ MACHINE_START(NOKIA_N800, "Nokia N800")
 	.init_early	= n8x0_init_early,
 	.init_irq	= omap2_init_irq,
 	.init_machine	= n8x0_init_machine,
-	.timer		= &omap_timer,
+	.timer		= &omap2_timer,
 MACHINE_END
 
 MACHINE_START(NOKIA_N810, "Nokia N810")
@@ -711,7 +711,7 @@ MACHINE_START(NOKIA_N810, "Nokia N810")
 	.init_early	= n8x0_init_early,
 	.init_irq	= omap2_init_irq,
 	.init_machine	= n8x0_init_machine,
-	.timer		= &omap_timer,
+	.timer		= &omap2_timer,
 MACHINE_END
 
 MACHINE_START(NOKIA_N810_WIMAX, "Nokia N810 WiMAX")
@@ -721,5 +721,5 @@ MACHINE_START(NOKIA_N810_WIMAX, "Nokia N810 WiMAX")
 	.init_early	= n8x0_init_early,
 	.init_irq	= omap2_init_irq,
 	.init_machine	= n8x0_init_machine,
-	.timer		= &omap_timer,
+	.timer		= &omap2_timer,
 MACHINE_END

+ 1 - 1
arch/arm/mach-omap2/board-omap3beagle.c

@@ -599,5 +599,5 @@ MACHINE_START(OMAP3_BEAGLE, "OMAP3 Beagle Board")
 	.init_early	= omap3_beagle_init_early,
 	.init_irq	= omap3_beagle_init_irq,
 	.init_machine	= omap3_beagle_init,
-	.timer		= &omap_timer,
+	.timer		= &omap3_secure_timer,
 MACHINE_END

+ 1 - 1
arch/arm/mach-omap2/board-omap3evm.c

@@ -742,5 +742,5 @@ MACHINE_START(OMAP3EVM, "OMAP3 EVM")
 	.init_early	= omap3_evm_init_early,
 	.init_irq	= omap3_init_irq,
 	.init_machine	= omap3_evm_init,
-	.timer		= &omap_timer,
+	.timer		= &omap3_timer,
 MACHINE_END

+ 2 - 2
arch/arm/mach-omap2/board-omap3logic.c

@@ -217,7 +217,7 @@ MACHINE_START(OMAP3_TORPEDO, "Logic OMAP3 Torpedo board")
 	.init_early	= omap3logic_init_early,
 	.init_irq	= omap3_init_irq,
 	.init_machine	= omap3logic_init,
-	.timer		= &omap_timer,
+	.timer		= &omap3_timer,
 MACHINE_END
 
 MACHINE_START(OMAP3530_LV_SOM, "OMAP Logic 3530 LV SOM board")
@@ -226,5 +226,5 @@ MACHINE_START(OMAP3530_LV_SOM, "OMAP Logic 3530 LV SOM board")
 	.init_early	= omap3logic_init_early,
 	.init_irq	= omap3_init_irq,
 	.init_machine	= omap3logic_init,
-	.timer		= &omap_timer,
+	.timer		= &omap3_timer,
 MACHINE_END

+ 1 - 1
arch/arm/mach-omap2/board-omap3pandora.c

@@ -644,5 +644,5 @@ MACHINE_START(OMAP3_PANDORA, "Pandora Handheld Console")
 	.init_early	= omap3pandora_init_early,
 	.init_irq	= omap3_init_irq,
 	.init_machine	= omap3pandora_init,
-	.timer		= &omap_timer,
+	.timer		= &omap3_timer,
 MACHINE_END

+ 1 - 1
arch/arm/mach-omap2/board-omap3stalker.c

@@ -560,5 +560,5 @@ MACHINE_START(SBC3530, "OMAP3 STALKER")
 	.init_early		= omap3_stalker_init_early,
 	.init_irq		= omap3_stalker_init_irq,
 	.init_machine		= omap3_stalker_init,
-	.timer			= &omap_timer,
+	.timer			= &omap3_secure_timer,
 MACHINE_END

+ 1 - 1
arch/arm/mach-omap2/board-omap3touchbook.c

@@ -449,5 +449,5 @@ MACHINE_START(TOUCHBOOK, "OMAP3 touchbook Board")
 	.init_early	= omap3_touchbook_init_early,
 	.init_irq	= omap3_touchbook_init_irq,
 	.init_machine	= omap3_touchbook_init,
-	.timer		= &omap_timer,
+	.timer		= &omap3_secure_timer,
 MACHINE_END

+ 1 - 1
arch/arm/mach-omap2/board-omap4panda.c

@@ -716,5 +716,5 @@ MACHINE_START(OMAP4_PANDA, "OMAP4 Panda board")
 	.init_early	= omap4_panda_init_early,
 	.init_irq	= gic_init_irq,
 	.init_machine	= omap4_panda_init,
-	.timer		= &omap_timer,
+	.timer		= &omap4_timer,
 MACHINE_END

+ 1 - 1
arch/arm/mach-omap2/board-overo.c

@@ -617,5 +617,5 @@ MACHINE_START(OVERO, "Gumstix Overo")
 	.init_early	= overo_init_early,
 	.init_irq	= omap3_init_irq,
 	.init_machine	= overo_init,
-	.timer		= &omap_timer,
+	.timer		= &omap3_timer,
 MACHINE_END

+ 1 - 1
arch/arm/mach-omap2/board-rm680.c

@@ -165,5 +165,5 @@ MACHINE_START(NOKIA_RM680, "Nokia RM-680 board")
 	.init_early	= rm680_init_early,
 	.init_irq	= omap3_init_irq,
 	.init_machine	= rm680_init,
-	.timer		= &omap_timer,
+	.timer		= &omap3_timer,
 MACHINE_END

+ 1 - 1
arch/arm/mach-omap2/board-rx51.c

@@ -162,5 +162,5 @@ MACHINE_START(NOKIA_RX51, "Nokia RX-51 board")
 	.init_early	= rx51_init_early,
 	.init_irq	= omap3_init_irq,
 	.init_machine	= rx51_init,
-	.timer		= &omap_timer,
+	.timer		= &omap3_timer,
 MACHINE_END

+ 1 - 1
arch/arm/mach-omap2/board-ti8168evm.c

@@ -52,6 +52,6 @@ MACHINE_START(TI8168EVM, "ti8168evm")
 	.map_io		= ti8168_evm_map_io,
 	.init_early	= ti8168_init_early,
 	.init_irq	= ti816x_init_irq,
-	.timer		= &omap_timer,
+	.timer		= &omap3_timer,
 	.init_machine	= ti8168_evm_init,
 MACHINE_END

+ 2 - 2
arch/arm/mach-omap2/board-zoom.c

@@ -139,7 +139,7 @@ MACHINE_START(OMAP_ZOOM2, "OMAP Zoom2 board")
 	.init_early	= omap_zoom_init_early,
 	.init_irq	= omap3_init_irq,
 	.init_machine	= omap_zoom_init,
-	.timer		= &omap_timer,
+	.timer		= &omap3_timer,
 MACHINE_END
 
 MACHINE_START(OMAP_ZOOM3, "OMAP Zoom3 board")
@@ -149,5 +149,5 @@ MACHINE_START(OMAP_ZOOM3, "OMAP Zoom3 board")
 	.init_early	= omap_zoom_init_early,
 	.init_irq	= omap3_init_irq,
 	.init_machine	= omap_zoom_init,
-	.timer		= &omap_timer,
+	.timer		= &omap3_timer,
 MACHINE_END

+ 31 - 10
arch/arm/mach-omap2/timer-gp.c

@@ -247,20 +247,41 @@ static void __init omap2_gp_clocksource_init(void)
 }
 #endif
 
-static void __init omap2_gp_timer_init(void)
+#define OMAP_SYS_TIMER_INIT(name)					\
+static void __init omap##name##_timer_init(void)			\
+{									\
+	omap_dm_timer_init();						\
+	omap2_gp_clockevent_init();					\
+	omap2_gp_clocksource_init();					\
+}
+
+#define OMAP_SYS_TIMER(name)						\
+struct sys_timer omap##name##_timer = {					\
+	.init	= omap##name##_timer_init,				\
+};
+
+#ifdef CONFIG_ARCH_OMAP2
+OMAP_SYS_TIMER_INIT(2)
+OMAP_SYS_TIMER(2)
+#endif
+
+#ifdef CONFIG_ARCH_OMAP3
+OMAP_SYS_TIMER_INIT(3)
+OMAP_SYS_TIMER(3)
+OMAP_SYS_TIMER_INIT(3_secure)
+OMAP_SYS_TIMER(3_secure)
+#endif
+
+#ifdef CONFIG_ARCH_OMAP4
+static void __init omap4_timer_init(void)
 {
 #ifdef CONFIG_LOCAL_TIMERS
-	if (cpu_is_omap44xx()) {
-		twd_base = ioremap(OMAP44XX_LOCAL_TWD_BASE, SZ_256);
-		BUG_ON(!twd_base);
-	}
+	twd_base = ioremap(OMAP44XX_LOCAL_TWD_BASE, SZ_256);
+	BUG_ON(!twd_base);
 #endif
 	omap_dm_timer_init();
-
 	omap2_gp_clockevent_init();
 	omap2_gp_clocksource_init();
 }
-
-struct sys_timer omap_timer = {
-	.init	= omap2_gp_timer_init,
-};
+OMAP_SYS_TIMER(4)
+#endif

+ 5 - 1
arch/arm/plat-omap/include/plat/common.h

@@ -34,7 +34,11 @@
 struct sys_timer;
 
 extern void omap_map_common_io(void);
-extern struct sys_timer omap_timer;
+extern struct sys_timer omap1_timer;
+extern struct sys_timer omap2_timer;
+extern struct sys_timer omap3_timer;
+extern struct sys_timer omap3_secure_timer;
+extern struct sys_timer omap4_timer;
 extern bool omap_32k_timer_init(void);
 extern int __init omap_init_clocksource_32k(void);
 extern unsigned long long notrace omap_32k_sched_clock(void);

+ 0 - 1
arch/arm/plat-omap/include/plat/dmtimer.h

@@ -57,7 +57,6 @@
 #define OMAP_TIMER_IP_VERSION_1                        0x1
 struct omap_dm_timer;
 extern struct omap_dm_timer *gptimer_wakeup;
-extern struct sys_timer omap_timer;
 struct clk;
 
 int omap_dm_timer_init(void);