--- c/src/lib/libbsp/sparc/shared/timer/gptimer.c | 22 ++++++++++++---------- 1 files changed, 12 insertions(+), 10 deletions(-)
diff --git a/c/src/lib/libbsp/sparc/shared/timer/gptimer.c b/c/src/lib/libbsp/sparc/shared/timer/gptimer.c index d093ca1..2314a3b 100644 --- a/c/src/lib/libbsp/sparc/shared/timer/gptimer.c +++ b/c/src/lib/libbsp/sparc/shared/timer/gptimer.c @@ -177,6 +177,7 @@ int gptimer_init1(struct drvmgr_dev *dev) int i, size; struct gptimer_timer *timer; union drvmgr_key_value *value; + unsigned char irq_ack_mask; #if defined(LEON3) && defined(RTEMS_DRVMGR_STARTUP) char timer_index[7]; #endif @@ -267,6 +268,16 @@ int gptimer_init1(struct drvmgr_dev *dev) /* Get Frequency that the timers are operating in (after prescaler) */ priv->base_freq = priv->base_clk / (priv->regs->scaler_reload + 1); + /* Stop Timer and probe Pending bit. In newer hardware the + * timer has pending bit is cleared by writing a one to it, + * whereas older versions it is cleared with a zero. + */ + priv->regs->timer[0].ctrl = GPTIMER_CTRL_IP; + if ((priv->regs->timer[0].ctrl & GPTIMER_CTRL_IP) != 0) + irq_ack_mask = ~GPTIMER_CTRL_IP; + else + irq_ack_mask = ~0; + priv->timer_cnt = timer_cnt; for (i=0; i<timer_cnt; i++) { timer = &priv->timers[i]; @@ -274,16 +285,7 @@ int gptimer_init1(struct drvmgr_dev *dev) timer->tindex = i + timer_start; timer->tregs = ®s->timer[(int)timer->tindex]; timer->tdev.drv = &gptimer_tlib_drv; - - /* Stop Timer and probe Pending bit. In newer hardware the - * timer has pending bit is cleared by writing a one to it, - * whereas older versions it is cleared with a zero. - */ - timer->tregs->ctrl = GPTIMER_CTRL_IP; - if ((timer->tregs->ctrl & GPTIMER_CTRL_IP) != 0) - timer->irq_ack_mask = ~GPTIMER_CTRL_IP; - else - timer->irq_ack_mask = ~0; + timer->irq_ack_mask = irq_ack_mask; /* Register Timer at Timer Library */ #if defined(LEON3) && defined(RTEMS_DRVMGR_STARTUP) -- 1.7.0.4 _______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel