aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPrabhakar Lad <prabhakar.csengg@gmail.com>2014-11-26 17:42:26 -0500
committerMauro Carvalho Chehab <mchehab@osg.samsung.com>2014-12-22 11:34:35 -0500
commit0637f054cef5b734b0b1dc5de7ee21aad6e0f441 (patch)
tree618aaa037817d386c5bc7360d950ebfe9583acc7
parent3d0aed38342b42bc532cc16cf4bf57a863f32df3 (diff)
[media] media: exynos-gsc: use vb2_ops_wait_prepare/finish helper
This patch drops driver specific wait_prepare() and wait_finish() callbacks from vb2_ops and instead uses the the helpers vb2_ops_wait_prepare/finish() provided by the vb2 core, the lock member of the queue needs to be initalized to a mutex so that vb2 helpers vb2_ops_wait_prepare/finish() can make use of it. Signed-off-by: Lad, Prabhakar <prabhakar.csengg@gmail.com> Cc: Kukjin Kim <kgene.kim@samsung.com> Signed-off-by: Kamil Debski <k.debski@samsung.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
-rw-r--r--drivers/media/platform/exynos-gsc/gsc-core.h12
-rw-r--r--drivers/media/platform/exynos-gsc/gsc-m2m.c6
2 files changed, 4 insertions, 14 deletions
diff --git a/drivers/media/platform/exynos-gsc/gsc-core.h b/drivers/media/platform/exynos-gsc/gsc-core.h
index 0abdb17fb19c..fa572aacdb3f 100644
--- a/drivers/media/platform/exynos-gsc/gsc-core.h
+++ b/drivers/media/platform/exynos-gsc/gsc-core.h
@@ -466,18 +466,6 @@ static inline void gsc_hw_clear_irq(struct gsc_dev *dev, int irq)
466 writel(cfg, dev->regs + GSC_IRQ); 466 writel(cfg, dev->regs + GSC_IRQ);
467} 467}
468 468
469static inline void gsc_lock(struct vb2_queue *vq)
470{
471 struct gsc_ctx *ctx = vb2_get_drv_priv(vq);
472 mutex_lock(&ctx->gsc_dev->lock);
473}
474
475static inline void gsc_unlock(struct vb2_queue *vq)
476{
477 struct gsc_ctx *ctx = vb2_get_drv_priv(vq);
478 mutex_unlock(&ctx->gsc_dev->lock);
479}
480
481static inline bool gsc_ctx_state_is_set(u32 mask, struct gsc_ctx *ctx) 469static inline bool gsc_ctx_state_is_set(u32 mask, struct gsc_ctx *ctx)
482{ 470{
483 unsigned long flags; 471 unsigned long flags;
diff --git a/drivers/media/platform/exynos-gsc/gsc-m2m.c b/drivers/media/platform/exynos-gsc/gsc-m2m.c
index 74e1de637e8f..d5cffef2e227 100644
--- a/drivers/media/platform/exynos-gsc/gsc-m2m.c
+++ b/drivers/media/platform/exynos-gsc/gsc-m2m.c
@@ -267,8 +267,8 @@ static struct vb2_ops gsc_m2m_qops = {
267 .queue_setup = gsc_m2m_queue_setup, 267 .queue_setup = gsc_m2m_queue_setup,
268 .buf_prepare = gsc_m2m_buf_prepare, 268 .buf_prepare = gsc_m2m_buf_prepare,
269 .buf_queue = gsc_m2m_buf_queue, 269 .buf_queue = gsc_m2m_buf_queue,
270 .wait_prepare = gsc_unlock, 270 .wait_prepare = vb2_ops_wait_prepare,
271 .wait_finish = gsc_lock, 271 .wait_finish = vb2_ops_wait_finish,
272 .stop_streaming = gsc_m2m_stop_streaming, 272 .stop_streaming = gsc_m2m_stop_streaming,
273 .start_streaming = gsc_m2m_start_streaming, 273 .start_streaming = gsc_m2m_start_streaming,
274}; 274};
@@ -590,6 +590,7 @@ static int queue_init(void *priv, struct vb2_queue *src_vq,
590 src_vq->mem_ops = &vb2_dma_contig_memops; 590 src_vq->mem_ops = &vb2_dma_contig_memops;
591 src_vq->buf_struct_size = sizeof(struct v4l2_m2m_buffer); 591 src_vq->buf_struct_size = sizeof(struct v4l2_m2m_buffer);
592 src_vq->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_COPY; 592 src_vq->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_COPY;
593 src_vq->lock = &ctx->gsc_dev->lock;
593 594
594 ret = vb2_queue_init(src_vq); 595 ret = vb2_queue_init(src_vq);
595 if (ret) 596 if (ret)
@@ -603,6 +604,7 @@ static int queue_init(void *priv, struct vb2_queue *src_vq,
603 dst_vq->mem_ops = &vb2_dma_contig_memops; 604 dst_vq->mem_ops = &vb2_dma_contig_memops;
604 dst_vq->buf_struct_size = sizeof(struct v4l2_m2m_buffer); 605 dst_vq->buf_struct_size = sizeof(struct v4l2_m2m_buffer);
605 dst_vq->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_COPY; 606 dst_vq->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_COPY;
607 dst_vq->lock = &ctx->gsc_dev->lock;
606 608
607 return vb2_queue_init(dst_vq); 609 return vb2_queue_init(dst_vq);
608} 610}