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

media: coda: add coda_wake_up_capture_queue

Combine setting the last_buffer_dequeued flag on the capture video
queue and waking up its done workqueue into a helper function.
Signed-off-by: default avatarPhilipp Zabel <p.zabel@pengutronix.de>
Signed-off-by: default avatarHans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+samsung@kernel.org>
parent f3775f89
...@@ -1004,11 +1004,21 @@ static int coda_try_encoder_cmd(struct file *file, void *fh, ...@@ -1004,11 +1004,21 @@ static int coda_try_encoder_cmd(struct file *file, void *fh,
return v4l2_m2m_ioctl_try_encoder_cmd(file, fh, ec); return v4l2_m2m_ioctl_try_encoder_cmd(file, fh, ec);
} }
static void coda_wake_up_capture_queue(struct coda_ctx *ctx)
{
struct vb2_queue *dst_vq;
coda_dbg(1, ctx, "waking up capture queue\n");
dst_vq = v4l2_m2m_get_vq(ctx->fh.m2m_ctx, V4L2_BUF_TYPE_VIDEO_CAPTURE);
dst_vq->last_buffer_dequeued = true;
wake_up(&dst_vq->done_wq);
}
static int coda_encoder_cmd(struct file *file, void *fh, static int coda_encoder_cmd(struct file *file, void *fh,
struct v4l2_encoder_cmd *ec) struct v4l2_encoder_cmd *ec)
{ {
struct coda_ctx *ctx = fh_to_ctx(fh); struct coda_ctx *ctx = fh_to_ctx(fh);
struct vb2_queue *dst_vq;
int ret; int ret;
ret = coda_try_encoder_cmd(file, fh, ec); ret = coda_try_encoder_cmd(file, fh, ec);
...@@ -1021,12 +1031,8 @@ static int coda_encoder_cmd(struct file *file, void *fh, ...@@ -1021,12 +1031,8 @@ static int coda_encoder_cmd(struct file *file, void *fh,
flush_work(&ctx->pic_run_work); flush_work(&ctx->pic_run_work);
/* If there is no buffer in flight, wake up */ /* If there is no buffer in flight, wake up */
if (!ctx->streamon_out || ctx->qsequence == ctx->osequence) { if (!ctx->streamon_out || ctx->qsequence == ctx->osequence)
dst_vq = v4l2_m2m_get_vq(ctx->fh.m2m_ctx, coda_wake_up_capture_queue(ctx);
V4L2_BUF_TYPE_VIDEO_CAPTURE);
dst_vq->last_buffer_dequeued = true;
wake_up(&dst_vq->done_wq);
}
return 0; return 0;
} }
......
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