/** 20140920 * twd interrupt handler. * clock_event_device에 지정한 event_handler를 호출한다. **/ static irqreturn_t twd_handler(int irq, void *dev_id) { /** 20140920 * clock event device를 받아온다. **/ struct clock_event_device *evt = *(struct clock_event_device **)dev_id; /** 20140920 * twd interrupt 발생시 응답하고, event_handler를 호출해 interrupt를 처리한다. * * tick_handle_periodic는 tick_handle_periodic. **/ if (twd_timer_ack()) { evt->event_handler(evt); return IRQ_HANDLED; } return IRQ_NONE; }
static irqreturn_t twd_handler(int irq, void *dev_id) { struct clock_event_device *evt = *(struct clock_event_device **)dev_id; #ifdef CONFIG_CS75XX_WFO unsigned int cpu = smp_processor_id(); GLOBAL_GLOBAL_CONFIG_t *p_glb_config = (GLOBAL_GLOBAL_CONFIG_t *)GLOBAL_GLOBAL_CONFIG; unsigned int *p_jiffie_for_pe=(unsigned int *)RECIRC_TOP_RECIR_R_DMA_DMA_SPARE_0; if(cpu == 0){ if(likely(p_glb_config->bf.recirc_pd == 0)){ *p_jiffie_for_pe = (*p_jiffie_for_pe + 1)&0xffff; } } #endif if (twd_timer_ack()) { evt->event_handler(evt); return IRQ_HANDLED; } return IRQ_NONE; }