depends on INTERCONNECT || !INTERCONNECT
        select QCOM_MDT_LOADER if ARCH_QCOM
        select QCOM_SCM if ARCH_QCOM
-       select VIDEOBUF2_DMA_SG
+       select VIDEOBUF2_DMA_CONTIG
        select V4L2_MEM2MEM_DEV
        help
          This is a V4L2 driver for Qualcomm Venus video accelerator
 
 #include <linux/mutex.h>
 #include <linux/slab.h>
 #include <linux/kernel.h>
-#include <media/videobuf2-dma-sg.h>
+#include <media/videobuf2-dma-contig.h>
 #include <media/v4l2-mem2mem.h>
 #include <asm/div64.h>
 
        struct venus_inst *inst = vb2_get_drv_priv(vb->vb2_queue);
        struct vb2_v4l2_buffer *vbuf = to_vb2_v4l2_buffer(vb);
        struct venus_buffer *buf = to_venus_buffer(vbuf);
-       struct sg_table *sgt;
-
-       sgt = vb2_dma_sg_plane_desc(vb, 0);
-       if (!sgt)
-               return -EFAULT;
 
        buf->size = vb2_plane_size(vb, 0);
-       buf->dma_addr = sg_dma_address(sgt->sgl);
+       buf->dma_addr = vb2_dma_contig_plane_dma_addr(vb, 0);
 
        if (vb->type == V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE)
                list_add_tail(&buf->reg_list, &inst->registeredbufs);
 
 #include <media/v4l2-event.h>
 #include <media/v4l2-ctrls.h>
 #include <media/v4l2-mem2mem.h>
-#include <media/videobuf2-dma-sg.h>
+#include <media/videobuf2-dma-contig.h>
 
 #include "hfi_venus_io.h"
 #include "hfi_parser.h"
        src_vq->io_modes = VB2_MMAP | VB2_DMABUF;
        src_vq->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_COPY;
        src_vq->ops = &vdec_vb2_ops;
-       src_vq->mem_ops = &vb2_dma_sg_memops;
+       src_vq->mem_ops = &vb2_dma_contig_memops;
        src_vq->drv_priv = inst;
        src_vq->buf_struct_size = sizeof(struct venus_buffer);
        src_vq->allow_zero_bytesused = 1;
        dst_vq->io_modes = VB2_MMAP | VB2_DMABUF;
        dst_vq->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_COPY;
        dst_vq->ops = &vdec_vb2_ops;
-       dst_vq->mem_ops = &vb2_dma_sg_memops;
+       dst_vq->mem_ops = &vb2_dma_contig_memops;
        dst_vq->drv_priv = inst;
        dst_vq->buf_struct_size = sizeof(struct venus_buffer);
        dst_vq->allow_zero_bytesused = 1;
 
 #include <linux/pm_runtime.h>
 #include <linux/slab.h>
 #include <media/v4l2-mem2mem.h>
-#include <media/videobuf2-dma-sg.h>
+#include <media/videobuf2-dma-contig.h>
 #include <media/v4l2-ioctl.h>
 #include <media/v4l2-event.h>
 #include <media/v4l2-ctrls.h>
        src_vq->io_modes = VB2_MMAP | VB2_USERPTR | VB2_DMABUF;
        src_vq->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_COPY;
        src_vq->ops = &venc_vb2_ops;
-       src_vq->mem_ops = &vb2_dma_sg_memops;
+       src_vq->mem_ops = &vb2_dma_contig_memops;
        src_vq->drv_priv = inst;
        src_vq->buf_struct_size = sizeof(struct venus_buffer);
        src_vq->allow_zero_bytesused = 1;
        dst_vq->io_modes = VB2_MMAP | VB2_USERPTR | VB2_DMABUF;
        dst_vq->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_COPY;
        dst_vq->ops = &venc_vb2_ops;
-       dst_vq->mem_ops = &vb2_dma_sg_memops;
+       dst_vq->mem_ops = &vb2_dma_contig_memops;
        dst_vq->drv_priv = inst;
        dst_vq->buf_struct_size = sizeof(struct venus_buffer);
        dst_vq->allow_zero_bytesused = 1;