The ISP driver release the last buffer (waking up the pending process) before returning the next buffer to the caller. This is done on the VD0 interrupt handler. But, by the time the CCDC is executing the VD0 interrupt handler some ISP registers like CCDC_SDR_ADDR are shadowed which means that the values written to it will not take effect until the next frame starts.
We have to configure the CCDC during the processing of the current frame in the VD1 interrupt handler. This means the next buffer obtaining and the last buffer releasing occur at different moments. So we have to decouple these two actions. Signed-off-by: Javier Martinez Canillas <martinez.jav...@gmail.com> --- drivers/media/video/omap3isp/ispvideo.c | 4 ---- 1 files changed, 0 insertions(+), 4 deletions(-) diff --git a/drivers/media/video/omap3isp/ispvideo.c b/drivers/media/video/omap3isp/ispvideo.c index cc73375..c2d4cd9 100644 --- a/drivers/media/video/omap3isp/ispvideo.c +++ b/drivers/media/video/omap3isp/ispvideo.c @@ -635,10 +635,6 @@ struct isp_buffer *omap3isp_video_buffer_next(struct isp_video *video, else buf->vbuf.sequence = atomic_read(&pipe->frame_number); - buf->state = error ? ISP_BUF_STATE_ERROR : ISP_BUF_STATE_DONE; - - wake_up(&buf->wait); - if (list_empty(&video->dmaqueue)) { if (queue->type == V4L2_BUF_TYPE_VIDEO_CAPTURE) state = ISP_PIPELINE_QUEUE_OUTPUT -- 1.7.4.1 -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html