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; }
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; }