Thread (9 messages) 9 messages, 3 authors, 2014-02-28
STALE4483d

[PATCH V2 4/4] ARM: OMAP2+: AM43x: Use gptimer as clocksource

From: Lokesh Vutla <hidden>
Date: 2014-02-24 13:05:21
Also in: linux-omap

Hi Tony,
On Friday 14 February 2014 02:16 PM, Rajendra Nayak wrote:
On Friday 14 February 2014 04:49 AM, Tony Lindgren wrote:
quoted
* Lokesh Vutla [off-list ref] [140207 02:24]:
quoted
From: Rajendra Nayak <redacted>

The SyncTimer in AM43x is clocked using the following two sources:
1) An inaccuarte 32k clock (CLK_32KHZ) derived from PER DPLL, causing system
   time to go slowly (~10% deviation).
2) external 32KHz RTC clock, which may not always be available on board like
   in the case of ePOS EVM

Use gptimer as clocksource instead, as is done in the case of AM335x
(which does not have a SyncTimer). With this, system time keeping works
accurately.
Hmm doesn't this also mean that PM for any deeper idle states won't
work properly?
Thats true. This would mean we cannot put the peripheral/core domain down
in idle. Suspend however can still work if suspend/resume callbacks are added
to the clockevent and clocksource code to shut the non-wakeup domain timer.
This is a platform level limitation that only MPU domain can be put down in idle, just like AM335x.

Thanks and regards,
Lokesh
regards,
Rajendra
quoted
Regards,

Tony
 
quoted
Signed-off-by: Rajendra Nayak <redacted>
Signed-off-by: Lokesh Vutla <redacted>
---
 arch/arm/mach-omap2/board-generic.c |    2 +-
 arch/arm/mach-omap2/timer.c         |    3 ++-
 2 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/arch/arm/mach-omap2/board-generic.c b/arch/arm/mach-omap2/board-generic.c
index 8e3daa1..5679464a 100644
--- a/arch/arm/mach-omap2/board-generic.c
+++ b/arch/arm/mach-omap2/board-generic.c
@@ -229,7 +229,7 @@ DT_MACHINE_START(AM43_DT, "Generic AM43 (Flattened Device Tree)")
 	.init_late	= am43xx_init_late,
 	.init_irq	= omap_gic_of_init,
 	.init_machine	= omap_generic_init,
-	.init_time	= omap3_sync32k_timer_init,
+	.init_time	= omap3_gptimer_timer_init,
 	.dt_compat	= am43_boards_compat,
 MACHINE_END
 #endif
diff --git a/arch/arm/mach-omap2/timer.c b/arch/arm/mach-omap2/timer.c
index 74044aa..b62de9f 100644
--- a/arch/arm/mach-omap2/timer.c
+++ b/arch/arm/mach-omap2/timer.c
@@ -604,7 +604,8 @@ OMAP_SYS_32K_TIMER_INIT(3_secure, 12, "secure_32k_fck", "ti,timer-secure",
 			2, "timer_sys_ck", NULL);
 #endif /* CONFIG_ARCH_OMAP3 */
 
-#if defined(CONFIG_ARCH_OMAP3) || defined(CONFIG_SOC_AM33XX)
+#if defined(CONFIG_ARCH_OMAP3) || defined(CONFIG_SOC_AM33XX) || \
+	defined(CONFIG_SOC_AM43XX)
 OMAP_SYS_GP_TIMER_INIT(3, 2, "timer_sys_ck", NULL,
 		       1, "timer_sys_ck", "ti,timer-alwon");
 #endif
-- 
1.7.9.5
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help