Commit 747d7646 authored by Philipp Zabel's avatar Philipp Zabel Committed by Mauro Carvalho Chehab

[media] coda: make seq_end_work optional

In preparation for CODA9 JPEG support, which doesn't have to call
SEQ_END on the BIT processor.
Signed-off-by: default avatarPhilipp Zabel <p.zabel@pengutronix.de>
Signed-off-by: default avatarKamil Debski <k.debski@samsung.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@osg.samsung.com>
parent bb04aa6f
...@@ -921,7 +921,8 @@ static void coda_pic_run_work(struct work_struct *work) ...@@ -921,7 +921,8 @@ static void coda_pic_run_work(struct work_struct *work)
ctx->ops->finish_run(ctx); ctx->ops->finish_run(ctx);
} }
if (ctx->aborting || (!ctx->streamon_cap && !ctx->streamon_out)) if ((ctx->aborting || (!ctx->streamon_cap && !ctx->streamon_out)) &&
ctx->ops->seq_end_work)
queue_work(dev->workqueue, &ctx->seq_end_work); queue_work(dev->workqueue, &ctx->seq_end_work);
mutex_unlock(&dev->coda_mutex); mutex_unlock(&dev->coda_mutex);
...@@ -1627,6 +1628,7 @@ static int coda_open(struct file *file) ...@@ -1627,6 +1628,7 @@ static int coda_open(struct file *file)
ctx->ops = ctx->cvd->ops; ctx->ops = ctx->cvd->ops;
init_completion(&ctx->completion); init_completion(&ctx->completion);
INIT_WORK(&ctx->pic_run_work, coda_pic_run_work); INIT_WORK(&ctx->pic_run_work, coda_pic_run_work);
if (ctx->ops->seq_end_work)
INIT_WORK(&ctx->seq_end_work, ctx->ops->seq_end_work); INIT_WORK(&ctx->seq_end_work, ctx->ops->seq_end_work);
v4l2_fh_init(&ctx->fh, video_devdata(file)); v4l2_fh_init(&ctx->fh, video_devdata(file));
file->private_data = &ctx->fh; file->private_data = &ctx->fh;
...@@ -1748,7 +1750,7 @@ static int coda_release(struct file *file) ...@@ -1748,7 +1750,7 @@ static int coda_release(struct file *file)
v4l2_m2m_ctx_release(ctx->fh.m2m_ctx); v4l2_m2m_ctx_release(ctx->fh.m2m_ctx);
/* In case the instance was not running, we still need to call SEQ_END */ /* In case the instance was not running, we still need to call SEQ_END */
if (ctx->initialized) { if (ctx->initialized && ctx->ops->seq_end_work) {
queue_work(dev->workqueue, &ctx->seq_end_work); queue_work(dev->workqueue, &ctx->seq_end_work);
flush_work(&ctx->seq_end_work); flush_work(&ctx->seq_end_work);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment