Ejemplo n.º 1
0
/** 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;
}