aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/platform/coda/coda-common.c
diff options
context:
space:
mode:
authorPhilipp Zabel <p.zabel@pengutronix.de>2015-07-09 07:10:16 -0300
committerMauro Carvalho Chehab <mchehab@osg.samsung.com>2015-07-17 11:14:54 -0300
commit5c718bb323aef02ea580073a3640b072fb2f6838 (patch)
tree5f86dd06a5f58b36ef8cf5020a8b840b5dfa0cba /drivers/media/platform/coda/coda-common.c
parent30a09579b2e238646bca4e7cc443db24d91436d6 (diff)
downloadlinux-5c718bb323aef02ea580073a3640b072fb2f6838.tar.gz
[media] coda: avoid calling SEQ_END twice
Allow coda_seq_end_work to be called multiple times, move the setting of ctx->initialized from coda_start/stop_streaming() into coda_start_encoding/decoding and coda_seq_end_work, respectively, and skip the SEQ_END command in coda_seq_end_work if the context is already deinitialized before. Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de> Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
Diffstat (limited to 'drivers/media/platform/coda/coda-common.c')
-rw-r--r--drivers/media/platform/coda/coda-common.c4
1 files changed, 1 insertions, 3 deletions
diff --git a/drivers/media/platform/coda/coda-common.c b/drivers/media/platform/coda/coda-common.c
index 3259ea61cd9b..de0e24533727 100644
--- a/drivers/media/platform/coda/coda-common.c
+++ b/drivers/media/platform/coda/coda-common.c
@@ -1313,7 +1313,6 @@ static int coda_start_streaming(struct vb2_queue *q, unsigned int count)
goto err;
}
- ctx->initialized = 1;
return ret;
err:
@@ -1376,7 +1375,6 @@ 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;
}
@@ -1767,7 +1765,7 @@ static int coda_release(struct file *file)
v4l2_m2m_ctx_release(ctx->fh.m2m_ctx);
/* In case the instance was not running, we still need to call SEQ_END */
- if (ctx->initialized && ctx->ops->seq_end_work) {
+ if (ctx->ops->seq_end_work) {
queue_work(dev->workqueue, &ctx->seq_end_work);
flush_work(&ctx->seq_end_work);
}