Messages in this thread Patch in this message | | | From | <> | Subject | [PATCHv4] clocksource: dw_apb_timer_of: Fix read_sched_clock | Date | Tue, 10 Dec 2013 09:46:35 -0600 |
| |
From: Dinh Nguyen <dinguyen@altera.com>
The read_sched_clock should return the ~value because the clock is a countdown implementation. read_sched_clock() should be the same as __apbt_read_clocksource().
Maintain backwards compatibility for "dw-apb-timer-sp" and "dw-apb-timer-osc".
Signed-off-by: Dinh Nguyen <dinguyen@altera.com> --- v4: Simplify the fix by simply returning ~__raw_readl(sched_io_base) v3: Use APBTMR_N_CURRENT_VALUE define in read_sched_clock() v2: Maintain backwards compatibility for "dw-apb-timer-sp" and "dw-apb-timer-osc". --- drivers/clocksource/dw_apb_timer_of.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/drivers/clocksource/dw_apb_timer_of.c b/drivers/clocksource/dw_apb_timer_of.c index 45ba8ae..8d6e5f6 100644 --- a/drivers/clocksource/dw_apb_timer_of.c +++ b/drivers/clocksource/dw_apb_timer_of.c @@ -108,12 +108,11 @@ static void __init add_clocksource(struct device_node *source_timer) static u64 read_sched_clock(void) { - return __raw_readl(sched_io_base); + return ~__raw_readl(sched_io_base); } static const struct of_device_id sptimer_ids[] __initconst = { { .compatible = "picochip,pc3x2-rtc" }, - { .compatible = "snps,dw-apb-timer-sp" }, { /* Sentinel */ }, }; @@ -151,4 +150,7 @@ static void __init dw_apb_timer_init(struct device_node *timer) num_called++; } CLOCKSOURCE_OF_DECLARE(pc3x2_timer, "picochip,pc3x2-timer", dw_apb_timer_init); -CLOCKSOURCE_OF_DECLARE(apb_timer, "snps,dw-apb-timer-osc", dw_apb_timer_init); +CLOCKSOURCE_OF_DECLARE(apb_timer_osc, "snps,dw-apb-timer-osc", dw_apb_timer_init); +CLOCKSOURCE_OF_DECLARE(apb_timer_sp, "snps,dw-apb-timer-sp", dw_apb_timer_init); +CLOCKSOURCE_OF_DECLARE(apb_timer, "snps,dw-apb-timer", dw_apb_timer_init); + -- 1.7.9.5
| |