|
@@ -39,7 +39,7 @@
|
|
|
|
|
|
#include <asm/mach/time.h>
|
|
|
#include <plat/dmtimer.h>
|
|
|
-#include <asm/localtimer.h>
|
|
|
+#include <asm/smp_twd.h>
|
|
|
#include <asm/sched_clock.h>
|
|
|
#include "common.h"
|
|
|
#include <plat/omap_hwmod.h>
|
|
@@ -324,14 +324,26 @@ OMAP_SYS_TIMER(3_secure)
|
|
|
#endif
|
|
|
|
|
|
#ifdef CONFIG_ARCH_OMAP4
|
|
|
-static void __init omap4_timer_init(void)
|
|
|
-{
|
|
|
#ifdef CONFIG_LOCAL_TIMERS
|
|
|
- twd_base = ioremap(OMAP44XX_LOCAL_TWD_BASE, SZ_256);
|
|
|
- BUG_ON(!twd_base);
|
|
|
+static DEFINE_TWD_LOCAL_TIMER(twd_local_timer,
|
|
|
+ OMAP44XX_LOCAL_TWD_BASE,
|
|
|
+ OMAP44XX_IRQ_LOCALTIMER);
|
|
|
#endif
|
|
|
+
|
|
|
+static void __init omap4_timer_init(void)
|
|
|
+{
|
|
|
omap2_gp_clockevent_init(1, OMAP4_CLKEV_SOURCE);
|
|
|
omap2_gp_clocksource_init(2, OMAP4_MPU_SOURCE);
|
|
|
+#ifdef CONFIG_LOCAL_TIMERS
|
|
|
+ /* Local timers are not supprted on OMAP4430 ES1.0 */
|
|
|
+ if (omap_rev() != OMAP4430_REV_ES1_0) {
|
|
|
+ int err;
|
|
|
+
|
|
|
+ err = twd_local_timer_register(&twd_local_timer);
|
|
|
+ if (err)
|
|
|
+ pr_err("twd_local_timer_register failed %d\n", err);
|
|
|
+ }
|
|
|
+#endif
|
|
|
}
|
|
|
OMAP_SYS_TIMER(4)
|
|
|
#endif
|