.. | .. |
---|
| 1 | +// SPDX-License-Identifier: GPL-2.0-only |
---|
1 | 2 | #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt |
---|
2 | 3 | |
---|
3 | 4 | #include <media/drv-intf/saa7146_vv.h> |
---|
.. | .. |
---|
96 | 97 | DEB_EE("dev:%p, dmaq:%p, state:%d\n", dev, q, state); |
---|
97 | 98 | DEB_EE("q->curr:%p\n", q->curr); |
---|
98 | 99 | |
---|
99 | | - BUG_ON(!q->curr); |
---|
100 | | - |
---|
101 | 100 | /* finish current buffer */ |
---|
102 | 101 | if (NULL == q->curr) { |
---|
103 | 102 | DEB_D("aiii. no current buffer\n"); |
---|
.. | .. |
---|
105 | 104 | } |
---|
106 | 105 | |
---|
107 | 106 | q->curr->vb.state = state; |
---|
108 | | - v4l2_get_timestamp(&q->curr->vb.ts); |
---|
| 107 | + q->curr->vb.ts = ktime_get_ns(); |
---|
109 | 108 | wake_up(&q->curr->vb.done); |
---|
110 | 109 | |
---|
111 | 110 | q->curr = NULL; |
---|
.. | .. |
---|
295 | 294 | int res; |
---|
296 | 295 | |
---|
297 | 296 | switch (vdev->vfl_type) { |
---|
298 | | - case VFL_TYPE_GRABBER: { |
---|
| 297 | + case VFL_TYPE_VIDEO: { |
---|
299 | 298 | DEB_EE("V4L2_BUF_TYPE_VIDEO_CAPTURE: file:%p, vma:%p\n", |
---|
300 | 299 | file, vma); |
---|
301 | 300 | q = &fh->video_q; |
---|
.. | .. |
---|
377 | 376 | int ret; |
---|
378 | 377 | |
---|
379 | 378 | switch (vdev->vfl_type) { |
---|
380 | | - case VFL_TYPE_GRABBER: |
---|
| 379 | + case VFL_TYPE_VIDEO: |
---|
381 | 380 | /* |
---|
382 | 381 | DEB_EE("V4L2_BUF_TYPE_VIDEO_CAPTURE: file:%p, data:%p, count:%lun", |
---|
383 | 382 | file, data, (unsigned long)count); |
---|
.. | .. |
---|
408 | 407 | int ret; |
---|
409 | 408 | |
---|
410 | 409 | switch (vdev->vfl_type) { |
---|
411 | | - case VFL_TYPE_GRABBER: |
---|
| 410 | + case VFL_TYPE_VIDEO: |
---|
412 | 411 | return -EINVAL; |
---|
413 | 412 | case VFL_TYPE_VBI: |
---|
414 | 413 | if (fh->dev->ext_vv_data->vbi_fops.write) { |
---|
.. | .. |
---|
596 | 595 | DEB_EE("dev:%p, name:'%s', type:%d\n", dev, name, type); |
---|
597 | 596 | |
---|
598 | 597 | vfd->fops = &video_fops; |
---|
599 | | - if (type == VFL_TYPE_GRABBER) |
---|
| 598 | + if (type == VFL_TYPE_VIDEO) |
---|
600 | 599 | vfd->ioctl_ops = &dev->ext_vv_data->vid_ops; |
---|
601 | 600 | else |
---|
602 | 601 | vfd->ioctl_ops = &dev->ext_vv_data->vbi_ops; |
---|
.. | .. |
---|
606 | 605 | vfd->tvnorms = 0; |
---|
607 | 606 | for (i = 0; i < dev->ext_vv_data->num_stds; i++) |
---|
608 | 607 | vfd->tvnorms |= dev->ext_vv_data->stds[i].id; |
---|
609 | | - strlcpy(vfd->name, name, sizeof(vfd->name)); |
---|
| 608 | + strscpy(vfd->name, name, sizeof(vfd->name)); |
---|
| 609 | + vfd->device_caps = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_VIDEO_OVERLAY | |
---|
| 610 | + V4L2_CAP_READWRITE | V4L2_CAP_STREAMING; |
---|
| 611 | + vfd->device_caps |= dev->ext_vv_data->capabilities; |
---|
| 612 | + if (type == VFL_TYPE_VIDEO) |
---|
| 613 | + vfd->device_caps &= |
---|
| 614 | + ~(V4L2_CAP_VBI_CAPTURE | V4L2_CAP_SLICED_VBI_OUTPUT); |
---|
| 615 | + else |
---|
| 616 | + vfd->device_caps &= |
---|
| 617 | + ~(V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_VIDEO_OVERLAY | V4L2_CAP_AUDIO); |
---|
610 | 618 | video_set_drvdata(vfd, dev); |
---|
611 | 619 | |
---|
612 | 620 | err = video_register_device(vfd, type, -1); |
---|