[media] coda: issue seq_end_work during stop_streaming
authorPhilipp Zabel <p.zabel@pengutronix.de>
Fri, 23 Jan 2015 16:51:27 +0000 (13:51 -0300)
committerMauro Carvalho Chehab <mchehab@osg.samsung.com>
Mon, 2 Feb 2015 12:25:36 +0000 (10:25 -0200)
This patch queues seq_end_work and flushes the queue during stop_streaming
and clears the ctx->initialized flag. This allows to start streaming again
after stopping streaming without releasing the context.

Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
Signed-off-by: Kamil Debski <k.debski@samsung.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
drivers/media/platform/coda/coda-common.c

index de8ad49..490b933 100644 (file)
@@ -1323,6 +1323,10 @@ static void coda_stop_streaming(struct vb2_queue *q)
        if (!ctx->streamon_out && !ctx->streamon_cap) {
                struct coda_buffer_meta *meta;
 
+               if (ctx->ops->seq_end_work) {
+                       queue_work(dev->workqueue, &ctx->seq_end_work);
+                       flush_work(&ctx->seq_end_work);
+               }
                mutex_lock(&ctx->bitstream_mutex);
                while (!list_empty(&ctx->buffer_meta_list)) {
                        meta = list_first_entry(&ctx->buffer_meta_list,
@@ -1333,6 +1337,7 @@ static void coda_stop_streaming(struct vb2_queue *q)
                mutex_unlock(&ctx->bitstream_mutex);
                kfifo_init(&ctx->bitstream_fifo,
                        ctx->bitstream.vaddr, ctx->bitstream.size);
+               ctx->initialized = 0;
                ctx->runcounter = 0;
                ctx->aborting = 0;
        }