static irqreturn_t tcpal_irq_handler(s32 _irq, void *_param)
{
	struct tcbd_irq_data *irq_data = (struct tcbd_irq_data *)_param;
	struct tcbd_device *device = irq_data->device;

	disable_irq_nosync(irq_data->tcbd_irq);
	if (device->is_pal_irq_en) {
		irq_data->start_tick = tcpal_get_time();
		queue_work(irq_data->work_queue, &irq_data->work);
		tcbd_debug(DEBUG_INTRRUPT, "\n");
	}
	return IRQ_HANDLED;
}
예제 #2
0
static irqreturn_t tcpal_irq_handler(s32 _irq, void *_param)
{
	struct tcbd_irq_data *irq_data = (struct tcbd_irq_data *)_param;
	struct tcbd_device *device = irq_data->device;
	disable_irq_nosync(irq_data->tcbd_irq);

	if (device->is_pal_irq_en) {
#if defined(__WORKQUEUE__)
		irq_data->start_tick = tcpal_get_time();
		queue_work(irq_data->work_queue, &irq_data->work);
#else  /*__WORKQUEUE__*/
		tcpal_split_stream(irq_data);
#endif /*!__WORKQUEUE__*/
		tcbd_debug(DEBUG_INTRRUPT, "\n");
	}
	return IRQ_HANDLED;
}