ARM: footbridge: add sched_clock implementation

Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
This commit is contained in:
Russell King 2013-11-29 01:03:35 +00:00
parent e68f31f452
commit 6cefe92f29
3 changed files with 20 additions and 0 deletions

View file

@ -10,3 +10,5 @@ extern void footbridge_init_irq(void);
extern void isa_init_irq(unsigned int irq); extern void isa_init_irq(unsigned int irq);
extern void footbridge_restart(enum reboot_mode, const char *); extern void footbridge_restart(enum reboot_mode, const char *);
extern void footbridge_sched_clock(void);

View file

@ -9,6 +9,7 @@
#include <linux/init.h> #include <linux/init.h>
#include <linux/interrupt.h> #include <linux/interrupt.h>
#include <linux/irq.h> #include <linux/irq.h>
#include <linux/sched_clock.h>
#include <asm/irq.h> #include <asm/irq.h>
@ -104,3 +105,19 @@ void __init footbridge_timer_init(void)
ce->cpumask = cpumask_of(smp_processor_id()); ce->cpumask = cpumask_of(smp_processor_id());
clockevents_config_and_register(ce, mem_fclk_21285, 0x4, 0xffffff); 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);
}

View file

@ -104,6 +104,7 @@ MACHINE_START(EBSA285, "EBSA285")
.video_start = 0x000a0000, .video_start = 0x000a0000,
.video_end = 0x000bffff, .video_end = 0x000bffff,
.map_io = footbridge_map_io, .map_io = footbridge_map_io,
.init_early = footbridge_sched_clock,
.init_irq = footbridge_init_irq, .init_irq = footbridge_init_irq,
.init_time = footbridge_timer_init, .init_time = footbridge_timer_init,
.restart = footbridge_restart, .restart = footbridge_restart,