From 108267ef7901db993e3a11f8043a3b4ba796c0e5 Mon Sep 17 00:00:00 2001 From: Laurent Pinchart Date: Sat, 13 Aug 2011 13:13:32 -0300 Subject: [PATCH] --- yaml --- r: 271862 b: refs/heads/master c: 5b6c3ef0e43fe80b517735697e4d0fb5729b2ab4 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/media/video/omap3isp/ispvideo.c | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 4e9ed3da984b..1da3fc2cffa4 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: c62e2a19d2b8c884c6f3ab3bb29d6fde2e13d8ac +refs/heads/master: 5b6c3ef0e43fe80b517735697e4d0fb5729b2ab4 diff --git a/trunk/drivers/media/video/omap3isp/ispvideo.c b/trunk/drivers/media/video/omap3isp/ispvideo.c index fd94cdf471bc..ba86f119ebbc 100644 --- a/trunk/drivers/media/video/omap3isp/ispvideo.c +++ b/trunk/drivers/media/video/omap3isp/ispvideo.c @@ -1056,6 +1056,14 @@ isp_video_streamon(struct file *file, void *fh, enum v4l2_buf_type type) if (video->isp->pdata->set_constraints) video->isp->pdata->set_constraints(video->isp, false); media_entity_pipeline_stop(&video->video.entity); + /* The DMA queue must be emptied here, otherwise CCDC interrupts + * that will get triggered the next time the CCDC is powered up + * will try to access buffers that might have been freed but + * still present in the DMA queue. This can easily get triggered + * if the above omap3isp_pipeline_set_stream() call fails on a + * system with a free-running sensor. + */ + INIT_LIST_HEAD(&video->dmaqueue); video->queue = NULL; }