diff options
author | Daniel Hellstrom <daniel@gaisler.com> | 2016-03-21 15:02:58 +0100 |
---|---|---|
committer | Daniel Hellstrom <daniel@gaisler.com> | 2017-03-06 07:54:55 +0100 |
commit | 61cc024aca55960225e5d2f2f4f90128dc39267a (patch) | |
tree | aee7cbf279e5c1ca0f328f092b4ae5a7916b75b5 | |
parent | leon: Fix ambapp_bus OCCAN device registeration order (diff) | |
download | rtems-61cc024aca55960225e5d2f2f4f90128dc39267a.tar.bz2 |
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 0553f5d7cc..f8c6da20f3 100644 --- a/c/src/lib/libbsp/sparc/shared/timer/gptimer.c +++ b/c/src/lib/libbsp/sparc/shared/timer/gptimer.c @@ -377,7 +377,8 @@ static 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; } @@ -464,7 +465,8 @@ static 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); } static void gptimer_tlib_stop(struct tlib_dev *hand) |