>From ddeed3c83d48e8ce33b36bd964572756354e7feb Mon Sep 17 00:00:00 2001 From: Stanislav Meduna Date: Fri, 2 Nov 2012 15:00:44 +0100 Subject: [PATCH] Setup scheduler clock for MXS --- arch/arm/mach-mxs/timer.c | 19 +++++++++++++++++++ 1 files changed, 19 insertions(+), 0 deletions(-) diff --git a/arch/arm/mach-mxs/timer.c b/arch/arm/mach-mxs/timer.c index 564a632..0ab86a2 100644 --- a/arch/arm/mach-mxs/timer.c +++ b/arch/arm/mach-mxs/timer.c @@ -26,6 +26,7 @@ #include #include +#include #include #include @@ -243,6 +244,16 @@ static int __init mxs_clocksource_init(struct clk *timer_clk) return 0; } +static u32 notrace mxs_read_sched_clock_v1(void) +{ + return timrotv1_get_cycles(&clocksource_mxs); +} + +static u32 notrace mxs_read_sched_clock_v2(void) +{ + return ~readl_relaxed(mxs_timrot_base + HW_TIMROT_RUNNING_COUNTn(1)); +} + void __init mxs_timer_init(struct clk *timer_clk, int irq) { clk_prepare_enable(timer_clk); @@ -285,6 +296,14 @@ void __init mxs_timer_init(struct clk *timer_clk, int irq) mxs_clocksource_init(timer_clk); mxs_clockevent_init(timer_clk); + /* Register scheduler clocksource */ + if (timrot_is_v1()) + setup_sched_clock(mxs_read_sched_clock_v1, + 16, clk_get_rate(timer_clk)); + else + setup_sched_clock(mxs_read_sched_clock_v2, + 32, clk_get_rate(timer_clk)); + /* Make irqs happen */ setup_irq(irq, &mxs_timer_irq); } -- 1.7.0.4