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); }
static inline void fimc_irq_cap(struct fimc_control *ctrl) { struct fimc_capinfo *cap = ctrl->cap; int pp; fimc_hwset_clear_irq(ctrl); fimc_hwget_overflow_state(ctrl); pp = ((fimc_hwget_frame_count(ctrl) + 2) % 4); if (cap->fmt.field == V4L2_FIELD_INTERLACED_TB) { /* odd value of pp means one frame is made with top/bottom */ if (pp & 0x1) { cap->irq = 1; wake_up(&ctrl->wq); } } else { cap->irq = 1; wake_up(&ctrl->wq); } }
static inline void fimc_irq_cap(struct fimc_control *ctrl) { struct fimc_capinfo *cap = ctrl->cap; int pp; #ifdef VIEW_FUNCTION_CALL printk("[FIMC_DEV] %s(%d)\n", __func__, __LINE__); #endif fimc_hwset_clear_irq(ctrl); fimc_hwget_overflow_state(ctrl); pp = ((fimc_hwget_frame_count(ctrl) + 2) % 4); if (cap->fmt.field == V4L2_FIELD_INTERLACED_TB) { /* odd value of pp means one frame is made with top/bottom */ if (pp & 0x1) { cap->irq = 1; wake_up_interruptible(&ctrl->wq); } } else { #ifdef S5K4CA_SKIP_FRAMES if (unlikely(s5k4ca_skip_green_frame < FRAMES_TO_SKIP)) { s5k4ca_skip_green_frame++; if(s5k4ca_skip_green_frame == 7) { printk("s5k4ca_skip_green_frame = %d\n", s5k4ca_skip_green_frame); } } else { cap->irq = 1; wake_up_interruptible(&ctrl->wq); } #else cap->irq = 1; wake_up_interruptible(&ctrl->wq); #endif } }
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); }