.. | .. |
---|
| 1 | +// SPDX-License-Identifier: GPL-2.0-or-later |
---|
1 | 2 | /* |
---|
2 | | - * Copyright (C) 2010-2013 Bluecherry, LLC <http://www.bluecherrydvr.com> |
---|
| 3 | + * Copyright (C) 2010-2013 Bluecherry, LLC <https://www.bluecherrydvr.com> |
---|
3 | 4 | * |
---|
4 | 5 | * Original author: |
---|
5 | 6 | * Ben Collins <bcollins@ubuntu.com> |
---|
6 | 7 | * |
---|
7 | 8 | * Additional work by: |
---|
8 | 9 | * John Brooks <john.brooks@bluecherry.net> |
---|
9 | | - * |
---|
10 | | - * This program is free software; you can redistribute it and/or modify |
---|
11 | | - * it under the terms of the GNU General Public License as published by |
---|
12 | | - * the Free Software Foundation; either version 2 of the License, or |
---|
13 | | - * (at your option) any later version. |
---|
14 | | - * |
---|
15 | | - * This program is distributed in the hope that it will be useful, |
---|
16 | | - * but WITHOUT ANY WARRANTY; without even the implied warranty of |
---|
17 | | - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
---|
18 | | - * GNU General Public License for more details. |
---|
19 | 10 | */ |
---|
20 | 11 | |
---|
21 | 12 | #include <linux/kernel.h> |
---|
.. | .. |
---|
775 | 766 | struct solo_enc_dev *solo_enc = video_drvdata(file); |
---|
776 | 767 | struct solo_dev *solo_dev = solo_enc->solo_dev; |
---|
777 | 768 | |
---|
778 | | - strcpy(cap->driver, SOLO6X10_NAME); |
---|
| 769 | + strscpy(cap->driver, SOLO6X10_NAME, sizeof(cap->driver)); |
---|
779 | 770 | snprintf(cap->card, sizeof(cap->card), "Softlogic 6x10 Enc %d", |
---|
780 | 771 | solo_enc->ch); |
---|
781 | 772 | snprintf(cap->bus_info, sizeof(cap->bus_info), "PCI:%s", |
---|
782 | 773 | pci_name(solo_dev->pdev)); |
---|
783 | | - cap->device_caps = V4L2_CAP_VIDEO_CAPTURE | |
---|
784 | | - V4L2_CAP_READWRITE | V4L2_CAP_STREAMING; |
---|
785 | | - cap->capabilities = cap->device_caps | V4L2_CAP_DEVICE_CAPS; |
---|
786 | 774 | return 0; |
---|
787 | 775 | } |
---|
788 | 776 | |
---|
.. | .. |
---|
834 | 822 | switch (dev_type) { |
---|
835 | 823 | case SOLO_DEV_6010: |
---|
836 | 824 | f->pixelformat = V4L2_PIX_FMT_MPEG4; |
---|
837 | | - strcpy(f->description, "MPEG-4 part 2"); |
---|
838 | 825 | break; |
---|
839 | 826 | case SOLO_DEV_6110: |
---|
840 | 827 | f->pixelformat = V4L2_PIX_FMT_H264; |
---|
841 | | - strcpy(f->description, "H.264"); |
---|
842 | 828 | break; |
---|
843 | 829 | } |
---|
844 | 830 | break; |
---|
845 | 831 | case 1: |
---|
846 | 832 | f->pixelformat = V4L2_PIX_FMT_MJPEG; |
---|
847 | | - strcpy(f->description, "MJPEG"); |
---|
848 | 833 | break; |
---|
849 | 834 | default: |
---|
850 | 835 | return -EINVAL; |
---|
851 | 836 | } |
---|
852 | | - |
---|
853 | | - f->flags = V4L2_FMT_FLAG_COMPRESSED; |
---|
854 | | - |
---|
855 | 837 | return 0; |
---|
856 | 838 | } |
---|
857 | 839 | |
---|
.. | .. |
---|
897 | 879 | pix->colorspace = V4L2_COLORSPACE_SMPTE170M; |
---|
898 | 880 | pix->sizeimage = FRAME_BUF_SIZE; |
---|
899 | 881 | pix->bytesperline = 0; |
---|
900 | | - pix->priv = 0; |
---|
901 | 882 | |
---|
902 | 883 | return 0; |
---|
903 | 884 | } |
---|
.. | .. |
---|
952 | 933 | V4L2_FIELD_NONE; |
---|
953 | 934 | pix->sizeimage = FRAME_BUF_SIZE; |
---|
954 | 935 | pix->colorspace = V4L2_COLORSPACE_SMPTE170M; |
---|
955 | | - pix->priv = 0; |
---|
956 | 936 | |
---|
957 | 937 | return 0; |
---|
958 | 938 | } |
---|
.. | .. |
---|
1126 | 1106 | solo_enc->md_thresholds->p_new.p_u16); |
---|
1127 | 1107 | break; |
---|
1128 | 1108 | case V4L2_CID_OSD_TEXT: |
---|
1129 | | - strcpy(solo_enc->osd_text, ctrl->p_new.p_char); |
---|
| 1109 | + strscpy(solo_enc->osd_text, ctrl->p_new.p_char, |
---|
| 1110 | + sizeof(solo_enc->osd_text)); |
---|
1130 | 1111 | return solo_osd_print(solo_enc); |
---|
1131 | 1112 | default: |
---|
1132 | 1113 | return -EINVAL; |
---|
.. | .. |
---|
1198 | 1179 | .minor = -1, |
---|
1199 | 1180 | .release = video_device_release, |
---|
1200 | 1181 | .tvnorms = V4L2_STD_NTSC_M | V4L2_STD_PAL, |
---|
| 1182 | + .device_caps = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_READWRITE | |
---|
| 1183 | + V4L2_CAP_STREAMING, |
---|
1201 | 1184 | }; |
---|
1202 | 1185 | |
---|
1203 | 1186 | static const struct v4l2_ctrl_ops solo_ctrl_ops = { |
---|
.. | .. |
---|
1321 | 1304 | solo_enc->vfd->queue = &solo_enc->vidq; |
---|
1322 | 1305 | solo_enc->vfd->lock = &solo_enc->lock; |
---|
1323 | 1306 | video_set_drvdata(solo_enc->vfd, solo_enc); |
---|
1324 | | - ret = video_register_device(solo_enc->vfd, VFL_TYPE_GRABBER, nr); |
---|
| 1307 | + ret = video_register_device(solo_enc->vfd, VFL_TYPE_VIDEO, nr); |
---|
1325 | 1308 | if (ret < 0) |
---|
1326 | 1309 | goto vdev_release; |
---|
1327 | 1310 | |
---|