ARM: footbridge: add sched_clock implementation
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
This commit is contained in:
parent
e68f31f452
commit
6cefe92f29
3 changed files with 20 additions and 0 deletions
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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,
|
||||
|
|
Loading…
Reference in a new issue