GPTIMER: support separate & shared irq by clearing pending bit after ISR

This commit is contained in:
Daniel Hellstrom
2012-11-19 17:41:15 +01:00
parent 7ebc28cd1a
commit 4d249b9fed

View File

@@ -400,14 +400,16 @@ void gptimer_isr(void *data)
/* Check all timers for IRQ */ /* Check all timers for IRQ */
for (i=0;i<priv->timer_cnt; i++) { for (i=0;i<priv->timer_cnt; i++) {
if (gptimer_tlib_int_pend((void *)&priv->timers[i], 1)) { if (gptimer_tlib_int_pend((void *)&priv->timers[i], 0)) {
/* IRQ Was generated by Timer and Pending flag has been /* IRQ Was generated by Timer and Pending flag has *not*
* cleared. Call ISR registered * yet been cleared, this is to allow ISR to look at
* pending bit. Call ISR registered. Clear pending bit.
*/ */
if (priv->timers[i].tdev.isr_func) { if (priv->timers[i].tdev.isr_func) {
priv->timers[i].tdev.isr_func( priv->timers[i].tdev.isr_func(
priv->timers[i].tdev.isr_data); priv->timers[i].tdev.isr_data);
} }
gptimer_tlib_int_pend((void *)&priv->timers[i], 1);
} }
} }
} }