| .. | .. |
|---|
| 600 | 600 | { |
|---|
| 601 | 601 | struct usbtv *dev = video_drvdata(file); |
|---|
| 602 | 602 | |
|---|
| 603 | | - strlcpy(cap->driver, "usbtv", sizeof(cap->driver)); |
|---|
| 604 | | - strlcpy(cap->card, "usbtv", sizeof(cap->card)); |
|---|
| 603 | + strscpy(cap->driver, "usbtv", sizeof(cap->driver)); |
|---|
| 604 | + strscpy(cap->card, "usbtv", sizeof(cap->card)); |
|---|
| 605 | 605 | usb_make_path(dev->udev, cap->bus_info, sizeof(cap->bus_info)); |
|---|
| 606 | | - cap->device_caps = V4L2_CAP_VIDEO_CAPTURE; |
|---|
| 607 | | - cap->device_caps |= V4L2_CAP_READWRITE | V4L2_CAP_STREAMING; |
|---|
| 608 | | - cap->capabilities = cap->device_caps | V4L2_CAP_DEVICE_CAPS; |
|---|
| 609 | 606 | return 0; |
|---|
| 610 | 607 | } |
|---|
| 611 | 608 | |
|---|
| .. | .. |
|---|
| 616 | 613 | |
|---|
| 617 | 614 | switch (i->index) { |
|---|
| 618 | 615 | case USBTV_COMPOSITE_INPUT: |
|---|
| 619 | | - strlcpy(i->name, "Composite", sizeof(i->name)); |
|---|
| 616 | + strscpy(i->name, "Composite", sizeof(i->name)); |
|---|
| 620 | 617 | break; |
|---|
| 621 | 618 | case USBTV_SVIDEO_INPUT: |
|---|
| 622 | | - strlcpy(i->name, "S-Video", sizeof(i->name)); |
|---|
| 619 | + strscpy(i->name, "S-Video", sizeof(i->name)); |
|---|
| 623 | 620 | break; |
|---|
| 624 | 621 | default: |
|---|
| 625 | 622 | return -EINVAL; |
|---|
| .. | .. |
|---|
| 636 | 633 | if (f->index > 0) |
|---|
| 637 | 634 | return -EINVAL; |
|---|
| 638 | 635 | |
|---|
| 639 | | - strlcpy(f->description, "16 bpp YUY2, 4:2:2, packed", |
|---|
| 640 | | - sizeof(f->description)); |
|---|
| 641 | 636 | f->pixelformat = V4L2_PIX_FMT_YUYV; |
|---|
| 642 | 637 | return 0; |
|---|
| 643 | 638 | } |
|---|
| .. | .. |
|---|
| 877 | 872 | |
|---|
| 878 | 873 | v4l2_device_unregister(&usbtv->v4l2_dev); |
|---|
| 879 | 874 | v4l2_ctrl_handler_free(&usbtv->ctrl); |
|---|
| 880 | | - vb2_queue_release(&usbtv->vb2q); |
|---|
| 881 | 875 | kfree(usbtv); |
|---|
| 882 | 876 | } |
|---|
| 883 | 877 | |
|---|
| .. | .. |
|---|
| 935 | 929 | } |
|---|
| 936 | 930 | |
|---|
| 937 | 931 | /* Video structure */ |
|---|
| 938 | | - strlcpy(usbtv->vdev.name, "usbtv", sizeof(usbtv->vdev.name)); |
|---|
| 932 | + strscpy(usbtv->vdev.name, "usbtv", sizeof(usbtv->vdev.name)); |
|---|
| 939 | 933 | usbtv->vdev.v4l2_dev = &usbtv->v4l2_dev; |
|---|
| 940 | 934 | usbtv->vdev.release = video_device_release_empty; |
|---|
| 941 | 935 | usbtv->vdev.fops = &usbtv_fops; |
|---|
| .. | .. |
|---|
| 943 | 937 | usbtv->vdev.tvnorms = USBTV_TV_STD; |
|---|
| 944 | 938 | usbtv->vdev.queue = &usbtv->vb2q; |
|---|
| 945 | 939 | usbtv->vdev.lock = &usbtv->v4l2_lock; |
|---|
| 940 | + usbtv->vdev.device_caps = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_READWRITE | |
|---|
| 941 | + V4L2_CAP_STREAMING; |
|---|
| 946 | 942 | video_set_drvdata(&usbtv->vdev, usbtv); |
|---|
| 947 | | - ret = video_register_device(&usbtv->vdev, VFL_TYPE_GRABBER, -1); |
|---|
| 943 | + ret = video_register_device(&usbtv->vdev, VFL_TYPE_VIDEO, -1); |
|---|
| 948 | 944 | if (ret < 0) { |
|---|
| 949 | 945 | dev_warn(usbtv->dev, "Could not register video device\n"); |
|---|
| 950 | 946 | goto vdev_fail; |
|---|
| .. | .. |
|---|
| 957 | 953 | v4l2_fail: |
|---|
| 958 | 954 | ctrl_fail: |
|---|
| 959 | 955 | v4l2_ctrl_handler_free(&usbtv->ctrl); |
|---|
| 960 | | - vb2_queue_release(&usbtv->vb2q); |
|---|
| 961 | 956 | |
|---|
| 962 | 957 | return ret; |
|---|
| 963 | 958 | } |
|---|
| .. | .. |
|---|
| 968 | 963 | mutex_lock(&usbtv->v4l2_lock); |
|---|
| 969 | 964 | |
|---|
| 970 | 965 | usbtv_stop(usbtv); |
|---|
| 971 | | - video_unregister_device(&usbtv->vdev); |
|---|
| 966 | + vb2_video_unregister_device(&usbtv->vdev); |
|---|
| 972 | 967 | v4l2_device_disconnect(&usbtv->v4l2_dev); |
|---|
| 973 | 968 | |
|---|
| 974 | 969 | mutex_unlock(&usbtv->v4l2_lock); |
|---|