ARM: footbridge: add sched_clock implementation
authorRussell King <rmk+kernel@arm.linux.org.uk>
Fri, 29 Nov 2013 01:03:35 +0000 (01:03 +0000)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Sun, 29 Dec 2013 12:35:55 +0000 (12:35 +0000)
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
arch/arm/mach-footbridge/common.h
arch/arm/mach-footbridge/dc21285-timer.c
arch/arm/mach-footbridge/ebsa285.c

index 56607b3a773e074eb82d8d88cb9b505e416a8da8..b911e5587ecf2116c57736aad32ef339bd08771a 100644 (file)
@@ -10,3 +10,5 @@ extern void footbridge_init_irq(void);
 
 extern void isa_init_irq(unsigned int irq);
 extern void footbridge_restart(enum reboot_mode, const char *);
+
+extern void footbridge_sched_clock(void);
index 9ee78f7b4990751386cf7f29337ec075297349dd..785e4199f9cd1f1a358edb9e78de30d639166d77 100644 (file)
@@ -9,6 +9,7 @@
 #include <linux/init.h>
 #include <linux/interrupt.h>
 #include <linux/irq.h>
+#include <linux/sched_clock.h>
 
 #include <asm/irq.h>
 
@@ -104,3 +105,19 @@ void __init footbridge_timer_init(void)
        ce->cpumask = cpumask_of(smp_processor_id());
        clockevents_config_and_register(ce, mem_fclk_21285, 0x4, 0xffffff);
 }
+
+static u32 notrace footbridge_read_sched_clock(void)
+{
+       return ~*CSR_TIMER3_VALUE;
+}
+
+void __init footbridge_sched_clock(void)
+{
+       unsigned rate = DIV_ROUND_CLOSEST(mem_fclk_21285, 16);
+
+       *CSR_TIMER3_LOAD = 0;
+       *CSR_TIMER3_CLR = 0;
+       *CSR_TIMER3_CNTL = TIMER_CNTL_ENABLE | TIMER_CNTL_DIV16;
+
+       setup_sched_clock(footbridge_read_sched_clock, 24, rate);
+}
index 1a7235fb52acb3cb8ae784dbeeda4fb3c940594a..3ff7a0c30a0f962801f84a5cd58194f7622ca1d2 100644 (file)
@@ -104,6 +104,7 @@ MACHINE_START(EBSA285, "EBSA285")
        .video_start    = 0x000a0000,
        .video_end      = 0x000bffff,
        .map_io         = footbridge_map_io,
+       .init_early     = footbridge_sched_clock,
        .init_irq       = footbridge_init_irq,
        .init_time      = footbridge_timer_init,
        .restart        = footbridge_restart,