static irqreturn_t at91x40_timer_interrupt(int irq, void *dev_id) { __ipipe_tsc_update(); at91_sys_read(AT91_TC + AT91_TC_CLK1BASE + AT91_TC_SR); timer_tick(); return IRQ_HANDLED; }
static irqreturn_t pxa_ost0_interrupt(int irq, void *dev_id) { struct clock_event_device *c = dev_id; if (!clockevent_ipipe_stolen(c)) pxa_ost0_ack(); __ipipe_tsc_update(); c->event_handler(c); return IRQ_HANDLED; }
/* * Reprogram the timer */ static int at91_tc_set(unsigned long evt, void *timer) { unsigned short next_tick; if (evt > max_delta_ticks) evt = max_delta_ticks; __ipipe_tsc_update(); next_tick = read_CV() + evt; write_RC(next_tick); if (evt < AT91_TC_REG_MASK / 2) return (short)(next_tick - read_CV()) <= 0 ? -ETIME : 0; else return 0; }
static irqreturn_t twd_handler(int irq, void *dev_id) { struct clock_event_device *evt = *(struct clock_event_device **)dev_id; if (clockevent_ipipe_stolen(evt)) goto handle; if (twd_timer_ack()) { handle: __ipipe_tsc_update(); evt->event_handler(evt); return IRQ_HANDLED; } return IRQ_NONE; }
/* * IRQ handler for the timer */ static irqreturn_t mxc_timer_interrupt(int irq, void *dev_id) { struct clock_event_device *evt = &clockevent_mxc; uint32_t tstat; if (timer_is_v2()) tstat = __raw_readl(timer_base + V2_TSTAT); else tstat = __raw_readl(timer_base + MX1_2_TSTAT); #ifndef CONFIG_IPIPE gpt_irq_acknowledge(); #else /* !CONFIG_IPIPE */ __ipipe_tsc_update(); #endif /* !CONFIG_IPIPE */ evt->event_handler(evt); return IRQ_HANDLED; }