strscpy(cap->card, GSC_MODULE_NAME " gscaler", sizeof(cap->card));
        snprintf(cap->bus_info, sizeof(cap->bus_info), "platform:%s",
                 dev_name(&gsc->pdev->dev));
-       cap->device_caps = V4L2_CAP_STREAMING | V4L2_CAP_VIDEO_M2M_MPLANE;
-       cap->capabilities = cap->device_caps | V4L2_CAP_DEVICE_CAPS;
        return 0;
 }
 
        gsc->vdev.lock          = &gsc->lock;
        gsc->vdev.vfl_dir       = VFL_DIR_M2M;
        gsc->vdev.v4l2_dev      = &gsc->v4l2_dev;
+       gsc->vdev.device_caps   = V4L2_CAP_STREAMING |
+                                 V4L2_CAP_VIDEO_M2M_MPLANE;
        snprintf(gsc->vdev.name, sizeof(gsc->vdev.name), "%s.%d:m2m",
                                        GSC_MODULE_NAME, gsc->id);
 
 
 }
 EXPORT_SYMBOL(fimc_find_remote_sensor);
 
-void __fimc_vidioc_querycap(struct device *dev, struct v4l2_capability *cap,
-                                               unsigned int caps)
+void __fimc_vidioc_querycap(struct device *dev, struct v4l2_capability *cap)
 {
        strscpy(cap->driver, dev->driver->name, sizeof(cap->driver));
        strscpy(cap->card, dev->driver->name, sizeof(cap->card));
        snprintf(cap->bus_info, sizeof(cap->bus_info),
                                "platform:%s", dev_name(dev));
-       cap->device_caps = caps;
-       cap->capabilities = cap->device_caps | V4L2_CAP_DEVICE_CAPS;
 }
 EXPORT_SYMBOL(__fimc_vidioc_querycap);
 
 
 #include <media/v4l2-subdev.h>
 
 struct v4l2_subdev *fimc_find_remote_sensor(struct media_entity *entity);
-void __fimc_vidioc_querycap(struct device *dev, struct v4l2_capability *cap,
-                           unsigned int caps);
+void __fimc_vidioc_querycap(struct device *dev, struct v4l2_capability *cap);
 
 {
        struct fimc_dev *fimc = video_drvdata(file);
 
-       __fimc_vidioc_querycap(&fimc->pdev->dev, cap, V4L2_CAP_STREAMING |
-                                       V4L2_CAP_VIDEO_CAPTURE_MPLANE);
+       __fimc_vidioc_querycap(&fimc->pdev->dev, cap);
        return 0;
 }
 
        vfd->release    = video_device_release_empty;
        vfd->queue      = q;
        vfd->lock       = &fimc->lock;
+       vfd->device_caps = V4L2_CAP_STREAMING | V4L2_CAP_VIDEO_CAPTURE_MPLANE;
 
        video_set_drvdata(vfd, fimc);
        vid_cap = &fimc->vid_cap;
 
 {
        struct fimc_isp *isp = video_drvdata(file);
 
-       __fimc_vidioc_querycap(&isp->pdev->dev, cap, V4L2_CAP_STREAMING);
+       __fimc_vidioc_querycap(&isp->pdev->dev, cap);
        return 0;
 }
 
        vdev->minor = -1;
        vdev->release = video_device_release_empty;
        vdev->lock = &isp->video_lock;
+       vdev->device_caps = V4L2_CAP_STREAMING | V4L2_CAP_VIDEO_CAPTURE_MPLANE;
 
        iv->pad.flags = MEDIA_PAD_FL_SINK;
        ret = media_entity_pads_init(&vdev->entity, 1, &iv->pad);
 
        strscpy(cap->card, FIMC_LITE_DRV_NAME, sizeof(cap->card));
        snprintf(cap->bus_info, sizeof(cap->bus_info), "platform:%s",
                                        dev_name(&fimc->pdev->dev));
-
-       cap->device_caps = V4L2_CAP_STREAMING;
-       cap->capabilities = cap->device_caps | V4L2_CAP_DEVICE_CAPS;
        return 0;
 }
 
        vfd->minor = -1;
        vfd->release = video_device_release_empty;
        vfd->queue = q;
+       vfd->device_caps = V4L2_CAP_VIDEO_CAPTURE_MPLANE | V4L2_CAP_STREAMING;
        fimc->reqbufs_count = 0;
 
        INIT_LIST_HEAD(&fimc->pending_buf_q);
 
                                     struct v4l2_capability *cap)
 {
        struct fimc_dev *fimc = video_drvdata(file);
-       unsigned int caps = V4L2_CAP_STREAMING | V4L2_CAP_VIDEO_M2M_MPLANE;
 
-       __fimc_vidioc_querycap(&fimc->pdev->dev, cap, caps);
+       __fimc_vidioc_querycap(&fimc->pdev->dev, cap);
        return 0;
 }
 
        vfd->release = video_device_release_empty;
        vfd->lock = &fimc->lock;
        vfd->vfl_dir = VFL_DIR_M2M;
+       vfd->device_caps = V4L2_CAP_STREAMING | V4L2_CAP_VIDEO_M2M_MPLANE;
        set_bit(V4L2_FL_QUIRK_INVERTED_CROP, &vfd->flags);
 
        snprintf(vfd->name, sizeof(vfd->name), "fimc.%d.m2m", fimc->id);
 
        strscpy(cap->driver, DRV_NAME, sizeof(cap->driver));
        snprintf(cap->bus_info, sizeof(cap->bus_info), "platform:%s",
                 dev_name(ctx->jpu->dev));
-       cap->device_caps |= V4L2_CAP_STREAMING | V4L2_CAP_VIDEO_M2M_MPLANE;
-       cap->capabilities = V4L2_CAP_DEVICE_CAPS | cap->device_caps;
        memset(cap->reserved, 0, sizeof(cap->reserved));
 
        return 0;
        jpu->vfd_encoder.lock           = &jpu->mutex;
        jpu->vfd_encoder.v4l2_dev       = &jpu->v4l2_dev;
        jpu->vfd_encoder.vfl_dir        = VFL_DIR_M2M;
+       jpu->vfd_encoder.device_caps    = V4L2_CAP_STREAMING |
+                                         V4L2_CAP_VIDEO_M2M_MPLANE;
 
        ret = video_register_device(&jpu->vfd_encoder, VFL_TYPE_GRABBER, -1);
        if (ret) {
        jpu->vfd_decoder.lock           = &jpu->mutex;
        jpu->vfd_decoder.v4l2_dev       = &jpu->v4l2_dev;
        jpu->vfd_decoder.vfl_dir        = VFL_DIR_M2M;
+       jpu->vfd_decoder.device_caps    = V4L2_CAP_STREAMING |
+                                         V4L2_CAP_VIDEO_M2M_MPLANE;
 
        ret = video_register_device(&jpu->vfd_decoder, VFL_TYPE_GRABBER, -1);
        if (ret) {
 
        vfd->lock       = &dev->mfc_mutex;
        vfd->v4l2_dev   = &dev->v4l2_dev;
        vfd->vfl_dir    = VFL_DIR_M2M;
+       vfd->device_caps = V4L2_CAP_VIDEO_M2M_MPLANE | V4L2_CAP_STREAMING;
        set_bit(V4L2_FL_QUIRK_INVERTED_CROP, &vfd->flags);
        snprintf(vfd->name, sizeof(vfd->name), "%s", S5P_MFC_DEC_NAME);
        dev->vfd_dec    = vfd;
        vfd->lock       = &dev->mfc_mutex;
        vfd->v4l2_dev   = &dev->v4l2_dev;
        vfd->vfl_dir    = VFL_DIR_M2M;
+       vfd->device_caps = V4L2_CAP_VIDEO_M2M_MPLANE | V4L2_CAP_STREAMING;
        snprintf(vfd->name, sizeof(vfd->name), "%s", S5P_MFC_ENC_NAME);
        dev->vfd_enc    = vfd;
        video_set_drvdata(vfd, dev);
 
        strscpy(cap->card, dev->vfd_dec->name, sizeof(cap->card));
        snprintf(cap->bus_info, sizeof(cap->bus_info), "platform:%s",
                 dev_name(&dev->plat_dev->dev));
-       /*
-        * This is only a mem-to-mem video device. The capture and output
-        * device capability flags are left only for backward compatibility
-        * and are scheduled for removal.
-        */
-       cap->device_caps = V4L2_CAP_VIDEO_M2M_MPLANE | V4L2_CAP_STREAMING;
-       cap->capabilities = cap->device_caps | V4L2_CAP_DEVICE_CAPS;
        return 0;
 }
 
 
        strscpy(cap->card, dev->vfd_enc->name, sizeof(cap->card));
        snprintf(cap->bus_info, sizeof(cap->bus_info), "platform:%s",
                 dev_name(&dev->plat_dev->dev));
-       /*
-        * This is only a mem-to-mem video device. The capture and output
-        * device capability flags are left only for backward compatibility
-        * and are scheduled for removal.
-        */
-       cap->device_caps = V4L2_CAP_VIDEO_M2M_MPLANE | V4L2_CAP_STREAMING;
-       cap->capabilities = cap->device_caps | V4L2_CAP_DEVICE_CAPS;
        return 0;
 }
 
 
        strscpy(cap->card, VPE_MODULE_NAME, sizeof(cap->card));
        snprintf(cap->bus_info, sizeof(cap->bus_info), "platform:%s",
                VPE_MODULE_NAME);
-       cap->device_caps  = V4L2_CAP_VIDEO_M2M_MPLANE | V4L2_CAP_STREAMING;
-       cap->capabilities = cap->device_caps | V4L2_CAP_DEVICE_CAPS;
        return 0;
 }
 
        .minor          = -1,
        .release        = video_device_release_empty,
        .vfl_dir        = VFL_DIR_M2M,
+       .device_caps    = V4L2_CAP_VIDEO_M2M_MPLANE | V4L2_CAP_STREAMING,
 };
 
 static const struct v4l2_m2m_ops m2m_ops = {