提交 f1db5d97 编写于 作者: E Ezequiel Garcia 提交者: Mauro Carvalho Chehab

media: mtk-mdp: Add locks for capture and output vb2_queues

Use the mutex in struct mtk_mdp_ctx to protect the
capture and output  vb2_queues. This allows to replace
the ad-hoc wait_{prepare, finish} with
vb2_ops_wait_{prepare, finish}.
Signed-off-by: NEzequiel Garcia <ezequiel@collabora.com>
Signed-off-by: NHans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: NMauro Carvalho Chehab <mchehab+samsung@kernel.org>
上级 cd63c028
...@@ -394,20 +394,6 @@ static bool mtk_mdp_ctx_state_is_set(struct mtk_mdp_ctx *ctx, u32 mask) ...@@ -394,20 +394,6 @@ static bool mtk_mdp_ctx_state_is_set(struct mtk_mdp_ctx *ctx, u32 mask)
return ret; return ret;
} }
static void mtk_mdp_ctx_lock(struct vb2_queue *vq)
{
struct mtk_mdp_ctx *ctx = vb2_get_drv_priv(vq);
mutex_lock(&ctx->mdp_dev->lock);
}
static void mtk_mdp_ctx_unlock(struct vb2_queue *vq)
{
struct mtk_mdp_ctx *ctx = vb2_get_drv_priv(vq);
mutex_unlock(&ctx->mdp_dev->lock);
}
static void mtk_mdp_set_frame_size(struct mtk_mdp_frame *frame, int width, static void mtk_mdp_set_frame_size(struct mtk_mdp_frame *frame, int width,
int height) int height)
{ {
...@@ -625,10 +611,10 @@ static const struct vb2_ops mtk_mdp_m2m_qops = { ...@@ -625,10 +611,10 @@ static const struct vb2_ops mtk_mdp_m2m_qops = {
.queue_setup = mtk_mdp_m2m_queue_setup, .queue_setup = mtk_mdp_m2m_queue_setup,
.buf_prepare = mtk_mdp_m2m_buf_prepare, .buf_prepare = mtk_mdp_m2m_buf_prepare,
.buf_queue = mtk_mdp_m2m_buf_queue, .buf_queue = mtk_mdp_m2m_buf_queue,
.wait_prepare = mtk_mdp_ctx_unlock,
.wait_finish = mtk_mdp_ctx_lock,
.stop_streaming = mtk_mdp_m2m_stop_streaming, .stop_streaming = mtk_mdp_m2m_stop_streaming,
.start_streaming = mtk_mdp_m2m_start_streaming, .start_streaming = mtk_mdp_m2m_start_streaming,
.wait_prepare = vb2_ops_wait_prepare,
.wait_finish = vb2_ops_wait_finish,
}; };
static int mtk_mdp_m2m_querycap(struct file *file, void *fh, static int mtk_mdp_m2m_querycap(struct file *file, void *fh,
...@@ -996,6 +982,7 @@ static int mtk_mdp_m2m_queue_init(void *priv, struct vb2_queue *src_vq, ...@@ -996,6 +982,7 @@ static int mtk_mdp_m2m_queue_init(void *priv, struct vb2_queue *src_vq,
src_vq->buf_struct_size = sizeof(struct v4l2_m2m_buffer); src_vq->buf_struct_size = sizeof(struct v4l2_m2m_buffer);
src_vq->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_COPY; src_vq->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_COPY;
src_vq->dev = &ctx->mdp_dev->pdev->dev; src_vq->dev = &ctx->mdp_dev->pdev->dev;
src_vq->lock = &ctx->mdp_dev->lock;
ret = vb2_queue_init(src_vq); ret = vb2_queue_init(src_vq);
if (ret) if (ret)
...@@ -1010,6 +997,7 @@ static int mtk_mdp_m2m_queue_init(void *priv, struct vb2_queue *src_vq, ...@@ -1010,6 +997,7 @@ static int mtk_mdp_m2m_queue_init(void *priv, struct vb2_queue *src_vq,
dst_vq->buf_struct_size = sizeof(struct v4l2_m2m_buffer); dst_vq->buf_struct_size = sizeof(struct v4l2_m2m_buffer);
dst_vq->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_COPY; dst_vq->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_COPY;
dst_vq->dev = &ctx->mdp_dev->pdev->dev; dst_vq->dev = &ctx->mdp_dev->pdev->dev;
dst_vq->lock = &ctx->mdp_dev->lock;
return vb2_queue_init(dst_vq); return vb2_queue_init(dst_vq);
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册