[media] mtk-vcodec: convert driver to use the new vb2_queue dev field
authorHans Verkuil <hans.verkuil@cisco.com>
Fri, 8 Jul 2016 19:11:18 +0000 (16:11 -0300)
committerMauro Carvalho Chehab <mchehab@s-opensource.com>
Fri, 8 Jul 2016 19:16:51 +0000 (16:16 -0300)
The patch dropping the vb2_dma_contig_init_ctx() and _cleanup_ctx()
functions was already applied before this driver was added. So convert
this driver as well.

Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
drivers/media/platform/mtk-vcodec/mtk_vcodec_drv.h
drivers/media/platform/mtk-vcodec/mtk_vcodec_enc.c
drivers/media/platform/mtk-vcodec/mtk_vcodec_enc_drv.c

index 78eee50..94f0a42 100644 (file)
@@ -265,8 +265,6 @@ struct mtk_vcodec_ctx {
  * @m2m_dev_enc: m2m device for encoder.
  * @plat_dev: platform device
  * @vpu_plat_dev: mtk vpu platform device
- * @alloc_ctx: VB2 allocator context
- *            (for allocations without kernel mapping).
  * @ctx_list: list of struct mtk_vcodec_ctx
  * @irqlock: protect data access by irq handler and work thread
  * @curr_ctx: The context that is waiting for codec hardware
@@ -299,7 +297,6 @@ struct mtk_vcodec_dev {
        struct v4l2_m2m_dev *m2m_dev_enc;
        struct platform_device *plat_dev;
        struct platform_device *vpu_plat_dev;
-       struct vb2_alloc_ctx *alloc_ctx;
        struct list_head ctx_list;
        spinlock_t irqlock;
        struct mtk_vcodec_ctx *curr_ctx;
index 6e72d73..6dcae0a 100644 (file)
@@ -693,7 +693,8 @@ const struct v4l2_ioctl_ops mtk_venc_ioctl_ops = {
 static int vb2ops_venc_queue_setup(struct vb2_queue *vq,
                                   unsigned int *nbuffers,
                                   unsigned int *nplanes,
-                                  unsigned int sizes[], void *alloc_ctxs[])
+                                  unsigned int sizes[],
+                                  struct device *alloc_devs[])
 {
        struct mtk_vcodec_ctx *ctx = vb2_get_drv_priv(vq);
        struct mtk_q_data *q_data;
@@ -705,17 +706,13 @@ static int vb2ops_venc_queue_setup(struct vb2_queue *vq,
                return -EINVAL;
 
        if (*nplanes) {
-               for (i = 0; i < *nplanes; i++) {
+               for (i = 0; i < *nplanes; i++)
                        if (sizes[i] < q_data->sizeimage[i])
                                return -EINVAL;
-                       alloc_ctxs[i] = ctx->dev->alloc_ctx;
-               }
        } else {
                *nplanes = q_data->fmt->num_planes;
-               for (i = 0; i < *nplanes; i++) {
+               for (i = 0; i < *nplanes; i++)
                        sizes[i] = q_data->sizeimage[i];
-                       alloc_ctxs[i] = ctx->dev->alloc_ctx;
-               }
        }
 
        return 0;
@@ -1249,6 +1246,7 @@ int mtk_vcodec_enc_queue_init(void *priv, struct vb2_queue *src_vq,
        src_vq->mem_ops         = &vb2_dma_contig_memops;
        src_vq->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_COPY;
        src_vq->lock            = &ctx->dev->dev_mutex;
+       src_vq->dev             = &ctx->dev->plat_dev->dev;
 
        ret = vb2_queue_init(src_vq);
        if (ret)
@@ -1262,6 +1260,7 @@ int mtk_vcodec_enc_queue_init(void *priv, struct vb2_queue *src_vq,
        dst_vq->mem_ops         = &vb2_dma_contig_memops;
        dst_vq->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_COPY;
        dst_vq->lock            = &ctx->dev->dev_mutex;
+       dst_vq->dev             = &ctx->dev->plat_dev->dev;
 
        return vb2_queue_init(dst_vq);
 }
index 06105e9..9c10cc2 100644 (file)
@@ -357,14 +357,6 @@ static int mtk_vcodec_probe(struct platform_device *pdev)
        dev->vfd_enc = vfd_enc;
        platform_set_drvdata(pdev, dev);
 
-       dev->alloc_ctx = vb2_dma_contig_init_ctx(&pdev->dev);
-       if (IS_ERR((__force void *)dev->alloc_ctx)) {
-               mtk_v4l2_err("Failed to alloc vb2 dma context 0");
-               ret = PTR_ERR((__force void *)dev->alloc_ctx);
-               dev->alloc_ctx = NULL;
-               goto err_vb2_ctx_init;
-       }
-
        dev->m2m_dev_enc = v4l2_m2m_init(&mtk_venc_m2m_ops);
        if (IS_ERR((__force void *)dev->m2m_dev_enc)) {
                mtk_v4l2_err("Failed to init mem2mem enc device");
@@ -401,8 +393,6 @@ err_enc_reg:
 err_event_workq:
        v4l2_m2m_release(dev->m2m_dev_enc);
 err_enc_mem_init:
-       vb2_dma_contig_cleanup_ctx(dev->alloc_ctx);
-err_vb2_ctx_init:
        video_unregister_device(vfd_enc);
 err_enc_alloc:
        v4l2_device_unregister(&dev->v4l2_dev);
@@ -426,8 +416,6 @@ static int mtk_vcodec_enc_remove(struct platform_device *pdev)
        destroy_workqueue(dev->encode_workqueue);
        if (dev->m2m_dev_enc)
                v4l2_m2m_release(dev->m2m_dev_enc);
-       if (dev->alloc_ctx)
-               vb2_dma_contig_cleanup_ctx(dev->alloc_ctx);
 
        if (dev->vfd_enc)
                video_unregister_device(dev->vfd_enc);