Exemplo n.º 1
0
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;
}
Exemplo n.º 2
0
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;
}
Exemplo n.º 3
0
/*
 * 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;
}
Exemplo n.º 4
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;
}
Exemplo n.º 5
0
/*
 * 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;
}