Пример #1
0
static inline void fimc_irq_out(struct fimc_control *ctrl)
{
	u32 wakeup = 1;
#ifdef VIEW_FUNCTION_CALL
	printk("[FIMC_DEV] %s(%d)\n", __func__, __LINE__);
#endif

	/* Interrupt pendding clear */
	fimc_hwset_clear_irq(ctrl);

	if (ctrl->out->fbuf.base)
		wakeup = fimc_irq_out_dma(ctrl);
	else if (ctrl->status != FIMC_READY_OFF)
		wakeup = fimc_irq_out_fimd(ctrl);

	if (wakeup == 1)
		wake_up_interruptible(&ctrl->wq);
}
Пример #2
0
static inline void fimc_irq_out(struct fimc_control *ctrl)
{
	u32 wakeup = 1;

	/* Interrupt pendding clear */
	fimc_hwset_clear_irq(ctrl);

	switch (ctrl->out->overlay.mode) {
	case FIMC_OVERLAY_NONE:
		wakeup = fimc_irq_out_none(ctrl);
		break;
	case FIMC_OVERLAY_DMA_AUTO:
	case FIMC_OVERLAY_DMA_MANUAL:
		wakeup = fimc_irq_out_dma(ctrl);
		break;
	case FIMC_OVERLAY_FIFO:
		if (ctrl->status != FIMC_READY_OFF)
			wakeup = fimc_irq_out_fimd(ctrl);
		break;
	}

	if (wakeup == 1)
		wake_up(&ctrl->wq);
}