diff options
Diffstat (limited to 'arch/arm/common/timer-sp.c')
-rw-r--r-- | arch/arm/common/timer-sp.c | 30 |
1 files changed, 6 insertions, 24 deletions
diff --git a/arch/arm/common/timer-sp.c b/arch/arm/common/timer-sp.c index 6ef3342153b9..445b05ee8511 100644 --- a/arch/arm/common/timer-sp.c +++ b/arch/arm/common/timer-sp.c | |||
@@ -32,35 +32,17 @@ | |||
32 | #define TIMER_FREQ_KHZ (1000) | 32 | #define TIMER_FREQ_KHZ (1000) |
33 | #define TIMER_RELOAD (TIMER_FREQ_KHZ * 1000 / HZ) | 33 | #define TIMER_RELOAD (TIMER_FREQ_KHZ * 1000 / HZ) |
34 | 34 | ||
35 | static void __iomem *clksrc_base; | ||
36 | |||
37 | static cycle_t sp804_read(struct clocksource *cs) | ||
38 | { | ||
39 | return ~readl(clksrc_base + TIMER_VALUE); | ||
40 | } | ||
41 | |||
42 | static struct clocksource clocksource_sp804 = { | ||
43 | .name = "timer3", | ||
44 | .rating = 200, | ||
45 | .read = sp804_read, | ||
46 | .mask = CLOCKSOURCE_MASK(32), | ||
47 | .flags = CLOCK_SOURCE_IS_CONTINUOUS, | ||
48 | }; | ||
49 | |||
50 | void __init sp804_clocksource_init(void __iomem *base) | 35 | void __init sp804_clocksource_init(void __iomem *base) |
51 | { | 36 | { |
52 | struct clocksource *cs = &clocksource_sp804; | ||
53 | |||
54 | clksrc_base = base; | ||
55 | |||
56 | /* setup timer 0 as free-running clocksource */ | 37 | /* setup timer 0 as free-running clocksource */ |
57 | writel(0, clksrc_base + TIMER_CTRL); | 38 | writel(0, base + TIMER_CTRL); |
58 | writel(0xffffffff, clksrc_base + TIMER_LOAD); | 39 | writel(0xffffffff, base + TIMER_LOAD); |
59 | writel(0xffffffff, clksrc_base + TIMER_VALUE); | 40 | writel(0xffffffff, base + TIMER_VALUE); |
60 | writel(TIMER_CTRL_32BIT | TIMER_CTRL_ENABLE | TIMER_CTRL_PERIODIC, | 41 | writel(TIMER_CTRL_32BIT | TIMER_CTRL_ENABLE | TIMER_CTRL_PERIODIC, |
61 | clksrc_base + TIMER_CTRL); | 42 | base + TIMER_CTRL); |
62 | 43 | ||
63 | clocksource_register_khz(cs, TIMER_FREQ_KHZ); | 44 | clocksource_mmio_init(base + TIMER_VALUE, "timer3", |
45 | TIMER_FREQ_KHZ * 1000, 200, 32, clocksource_mmio_readl_down); | ||
64 | } | 46 | } |
65 | 47 | ||
66 | 48 | ||