Merge tag 'media/v4.20-2' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab...
[platform/kernel/linux-starfive.git] / drivers / staging / media / davinci_vpfe / vpfe_video.c
index 390fc98..5e9769e 100644 (file)
@@ -618,9 +618,9 @@ static int vpfe_querycap(struct file *file, void  *priv,
                cap->device_caps = V4L2_CAP_VIDEO_OUTPUT | V4L2_CAP_STREAMING;
        cap->capabilities = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_VIDEO_OUTPUT |
                            V4L2_CAP_STREAMING | V4L2_CAP_DEVICE_CAPS;
-       strlcpy(cap->driver, CAPTURE_DRV_NAME, sizeof(cap->driver));
-       strlcpy(cap->bus_info, "VPFE", sizeof(cap->bus_info));
-       strlcpy(cap->card, vpfe_dev->cfg->card_name, sizeof(cap->card));
+       strscpy(cap->driver, CAPTURE_DRV_NAME, sizeof(cap->driver));
+       strscpy(cap->bus_info, "VPFE", sizeof(cap->bus_info));
+       strscpy(cap->card, vpfe_dev->cfg->card_name, sizeof(cap->card));
 
        return 0;
 }
@@ -1135,10 +1135,6 @@ static int vpfe_buffer_prepare(struct vb2_buffer *vb)
 
        v4l2_dbg(1, debug, &vpfe_dev->v4l2_dev, "vpfe_buffer_prepare\n");
 
-       if (vb->state != VB2_BUF_STATE_ACTIVE &&
-           vb->state != VB2_BUF_STATE_PREPARED)
-               return 0;
-
        /* Initialize buffer */
        vb2_set_plane_payload(vb, 0, video->fmt.fmt.pix.sizeimage);
        if (vb2_plane_vaddr(vb, 0) &&
@@ -1312,6 +1308,8 @@ static const struct vb2_ops video_qops = {
        .stop_streaming         = vpfe_stop_streaming,
        .buf_cleanup            = vpfe_buf_cleanup,
        .buf_queue              = vpfe_buffer_queue,
+       .wait_prepare           = vb2_ops_wait_prepare,
+       .wait_finish            = vb2_ops_wait_finish,
 };
 
 /*
@@ -1357,6 +1355,7 @@ static int vpfe_reqbufs(struct file *file, void *priv,
        q->buf_struct_size = sizeof(struct vpfe_cap_buffer);
        q->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC;
        q->dev = vpfe_dev->pdev;
+       q->lock = &video->lock;
 
        ret = vb2_queue_init(q);
        if (ret) {
@@ -1426,7 +1425,8 @@ static int vpfe_qbuf(struct file *file, void *priv,
                return -EACCES;
        }
 
-       return vb2_qbuf(&video->buffer_queue, p);
+       return vb2_qbuf(&video->buffer_queue,
+                       video->video_dev.v4l2_dev->mdev, p);
 }
 
 /*
@@ -1598,17 +1598,18 @@ int vpfe_video_init(struct vpfe_video_device *video, const char *name)
                return -EINVAL;
        }
        /* Initialize field of video device */
+       mutex_init(&video->lock);
        video->video_dev.release = video_device_release;
        video->video_dev.fops = &vpfe_fops;
        video->video_dev.ioctl_ops = &vpfe_ioctl_ops;
        video->video_dev.minor = -1;
        video->video_dev.tvnorms = 0;
+       video->video_dev.lock = &video->lock;
        snprintf(video->video_dev.name, sizeof(video->video_dev.name),
                 "DAVINCI VIDEO %s %s", name, direction);
 
        spin_lock_init(&video->irqlock);
        spin_lock_init(&video->dma_queue_lock);
-       mutex_init(&video->lock);
        ret = media_entity_pads_init(&video->video_dev.entity,
                                1, &video->pad);
        if (ret < 0)