From: 黄涛 Date: Tue, 7 Dec 2010 10:45:49 +0000 (+0800) Subject: rk29: timer: enable oneshot features X-Git-Tag: firefly_0821_release~10981^2~1 X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=6a812210666bf38d1954280a1cc958eb8590f344;p=firefly-linux-kernel-4.4.55.git rk29: timer: enable oneshot features --- diff --git a/arch/arm/mach-rk29/timer.c b/arch/arm/mach-rk29/timer.c index e1396f27bd3d..8debd38050f9 100644 --- a/arch/arm/mach-rk29/timer.c +++ b/arch/arm/mach-rk29/timer.c @@ -56,9 +56,11 @@ static int rk29_timer_set_next_event(unsigned long cycles, struct clock_event_device *evt) { - RK_TIMER_DISABLE(TIMER_CLKEVT); - RK_TIMER_SETCOUNT(TIMER_CLKEVT, cycles); - RK_TIMER_ENABLE(TIMER_CLKEVT); + do { + RK_TIMER_DISABLE(TIMER_CLKEVT); + RK_TIMER_SETCOUNT(TIMER_CLKEVT, cycles); + RK_TIMER_ENABLE(TIMER_CLKEVT); + } while (RK_TIMER_READVALUE(TIMER_CLKEVT) > cycles); return 0; } @@ -81,7 +83,7 @@ static void rk29_timer_set_mode(enum clock_event_mode mode, struct clock_event_d static struct clock_event_device rk29_timer_clockevent = { .name = TIMER_CLKEVT_NAME, - .features = CLOCK_EVT_FEAT_PERIODIC /*| CLOCK_EVT_FEAT_ONESHOT*/, + .features = CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT, .shift = 32, .rating = 200, .set_next_event = rk29_timer_set_next_event,