diff options
author | Daniel Hellstrom <daniel@gaisler.com> | 2016-03-21 15:02:58 +0100 |
---|---|---|
committer | Daniel Hellstrom <daniel@gaisler.com> | 2016-03-21 15:06:47 +0100 |
commit | bb195c31cac8cf9767b4848ce41cfde3d49219ca (patch) | |
tree | fe1b3551e3eed7977ec42533a57b1638ad099236 | |
parent | 9b4457dae716842143403c9fe790e78cb90aabba (diff) |
leon: GPTIMER start/reset must take RS and IP into account
-rw-r--r-- | c/src/lib/libbsp/sparc/shared/timer/gptimer.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/c/src/lib/libbsp/sparc/shared/timer/gptimer.c b/c/src/lib/libbsp/sparc/shared/timer/gptimer.c index 9b09e26645..dd4a7695c5 100644 --- a/c/src/lib/libbsp/sparc/shared/timer/gptimer.c +++ b/c/src/lib/libbsp/sparc/shared/timer/gptimer.c @@ -422,7 +422,8 @@ void gptimer_tlib_reset(struct tlib_dev *hand) { struct gptimer_timer *timer = (struct gptimer_timer *)hand; - timer->tregs->ctrl = 0; + timer->tregs->ctrl = (timer->tregs->ctrl & timer->irq_ack_mask) & + GPTIMER_CTRL_IP; timer->tregs->reload = 0xffffffff; timer->tregs->ctrl = GPTIMER_CTRL_LD; } @@ -493,7 +494,8 @@ void gptimer_tlib_start(struct tlib_dev *hand, int once) ctrl = GPTIMER_CTRL_LD | GPTIMER_CTRL_EN; if ( once == 0 ) ctrl |= GPTIMER_CTRL_RS; /* Restart Timer */ - timer->tregs->ctrl |= ctrl; + timer->tregs->ctrl = ctrl | (timer->tregs->ctrl & timer->irq_ack_mask & + ~GPTIMER_CTRL_RS); } void gptimer_tlib_stop(struct tlib_dev *hand) |