Example #1
0
static irqreturn_t kw_timer_interrupt(int irq, void *dev_id)
{
	/*
	 * Clear cause bit and do event
	 */
	MV_REG_WRITE(BRIDGE_INT_CAUSE_REG, ~BRIDGE_INT_TIMER(CLOCKEVENT));
	kw_clkevt.event_handler(&kw_clkevt);
	mv_leds_hearbeat();
	return IRQ_HANDLED;
}
Example #2
0
static irqreturn_t kw_timer_interrupt(int irq, void *dev_id)
{
	unsigned long irq_cause = MV_REG_READ(BRIDGE_INT_CAUSE_REG);

	/* Handle FC events if any */
	if (irq_cause & BRIDGE_INT_TIMER(FCTRLEVENT)) {
		MV_REG_WRITE(BRIDGE_INT_CAUSE_REG, ~BRIDGE_INT_TIMER(FCTRLEVENT));
		if (mv_fc_event_handler)
			mv_fc_event_handler();
	}

	/*
	 * Clear clock event cause bit and do event
	 */
	if (irq_cause & BRIDGE_INT_TIMER(CLOCKEVENT)) {
		MV_REG_WRITE(BRIDGE_INT_CAUSE_REG, ~BRIDGE_INT_TIMER(CLOCKEVENT));
		kw_clkevt.event_handler(&kw_clkevt);
		mv_leds_hearbeat();
	}

	return IRQ_HANDLED;
}