aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/clocksource/time-armada-370-xp.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/drivers/clocksource/time-armada-370-xp.c b/drivers/clocksource/time-armada-370-xp.c
index 2162796fd504..d93ec3c4f139 100644
--- a/drivers/clocksource/time-armada-370-xp.c
+++ b/drivers/clocksource/time-armada-370-xp.c
@@ -45,6 +45,8 @@
45#include <linux/percpu.h> 45#include <linux/percpu.h>
46#include <linux/syscore_ops.h> 46#include <linux/syscore_ops.h>
47 47
48#include <asm/delay.h>
49
48/* 50/*
49 * Timer block registers. 51 * Timer block registers.
50 */ 52 */
@@ -249,6 +251,15 @@ struct syscore_ops armada_370_xp_timer_syscore_ops = {
249 .resume = armada_370_xp_timer_resume, 251 .resume = armada_370_xp_timer_resume,
250}; 252};
251 253
254static unsigned long armada_370_delay_timer_read(void)
255{
256 return ~readl(timer_base + TIMER0_VAL_OFF);
257}
258
259static struct delay_timer armada_370_delay_timer = {
260 .read_current_timer = armada_370_delay_timer_read,
261};
262
252static void __init armada_370_xp_timer_common_init(struct device_node *np) 263static void __init armada_370_xp_timer_common_init(struct device_node *np)
253{ 264{
254 u32 clr = 0, set = 0; 265 u32 clr = 0, set = 0;
@@ -287,6 +298,9 @@ static void __init armada_370_xp_timer_common_init(struct device_node *np)
287 TIMER0_RELOAD_EN | enable_mask, 298 TIMER0_RELOAD_EN | enable_mask,
288 TIMER0_RELOAD_EN | enable_mask); 299 TIMER0_RELOAD_EN | enable_mask);
289 300
301 armada_370_delay_timer.freq = timer_clk;
302 register_current_timer_delay(&armada_370_delay_timer);
303
290 /* 304 /*
291 * Set scale and timer for sched_clock. 305 * Set scale and timer for sched_clock.
292 */ 306 */