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 */
for (i=0;i<priv->timer_cnt; i++) {
if (gptimer_tlib_int_pend((void *)&priv->timers[i], 1)) {
/* IRQ Was generated by Timer and Pending flag has been
* cleared. Call ISR registered
if (gptimer_tlib_int_pend((void *)&priv->timers[i], 0)) {
/* IRQ Was generated by Timer and Pending flag has *not*
* 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) {
priv->timers[i].tdev.isr_func(
priv->timers[i].tdev.isr_data);
}
gptimer_tlib_int_pend((void *)&priv->timers[i], 1);
}
}
}