forked from ~ljy/RK356X_SDK_RELEASE

hc
2024-10-22 8ac6c7a54ed1b98d142dce24b11c6de6a1e239a5
kernel/drivers/media/usb/msi2500/msi2500.c
....@@ -1,18 +1,9 @@
1
+// SPDX-License-Identifier: GPL-2.0-or-later
12 /*
23 * Mirics MSi2500 driver
34 * Mirics MSi3101 SDR Dongle driver
45 *
56 * Copyright (C) 2013 Antti Palosaari <crope@iki.fi>
6
- *
7
- * This program is free software; you can redistribute it and/or modify
8
- * it under the terms of the GNU General Public License as published by
9
- * the Free Software Foundation; either version 2 of the License, or
10
- * (at your option) any later version.
11
- *
12
- * This program is distributed in the hope that it will be useful,
13
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
14
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
- * GNU General Public License for more details.
167 *
178 * That driver is somehow based of pwc driver:
189 * (C) 1999-2004 Nemosoft Unv.
....@@ -75,7 +66,6 @@
7566
7667 /* stream formats */
7768 struct msi2500_format {
78
- char *name;
7969 u32 pixelformat;
8070 u32 buffersize;
8171 };
....@@ -83,27 +73,21 @@
8373 /* format descriptions for capture and preview */
8474 static struct msi2500_format formats[] = {
8575 {
86
- .name = "Complex S8",
8776 .pixelformat = V4L2_SDR_FMT_CS8,
8877 .buffersize = 3 * 1008,
8978 #if 0
9079 }, {
91
- .name = "10+2-bit signed",
9280 .pixelformat = MSI2500_PIX_FMT_SDR_MSI2500_384,
9381 }, {
94
- .name = "12-bit signed",
9582 .pixelformat = MSI2500_PIX_FMT_SDR_S12,
9683 #endif
9784 }, {
98
- .name = "Complex S14LE",
9985 .pixelformat = V4L2_SDR_FMT_CS14LE,
10086 .buffersize = 3 * 1008,
10187 }, {
102
- .name = "Complex U8 (emulated)",
10388 .pixelformat = V4L2_SDR_FMT_CU8,
10489 .buffersize = 3 * 1008,
10590 }, {
106
- .name = "Complex U16LE (emulated)",
10791 .pixelformat = V4L2_SDR_FMT_CU16LE,
10892 .buffersize = 3 * 1008,
10993 },
....@@ -604,12 +588,9 @@
604588
605589 dev_dbg(dev->dev, "\n");
606590
607
- strlcpy(cap->driver, KBUILD_MODNAME, sizeof(cap->driver));
608
- strlcpy(cap->card, dev->vdev.name, sizeof(cap->card));
591
+ strscpy(cap->driver, KBUILD_MODNAME, sizeof(cap->driver));
592
+ strscpy(cap->card, dev->vdev.name, sizeof(cap->card));
609593 usb_make_path(dev->udev, cap->bus_info, sizeof(cap->bus_info));
610
- cap->device_caps = V4L2_CAP_SDR_CAPTURE | V4L2_CAP_STREAMING |
611
- V4L2_CAP_READWRITE | V4L2_CAP_TUNER;
612
- cap->capabilities = cap->device_caps | V4L2_CAP_DEVICE_CAPS;
613594 return 0;
614595 }
615596
....@@ -916,7 +897,6 @@
916897 if (f->index >= dev->num_formats)
917898 return -EINVAL;
918899
919
- strlcpy(f->description, formats[f->index].name, sizeof(f->description));
920900 f->pixelformat = formats[f->index].pixelformat;
921901
922902 return 0;
....@@ -1017,7 +997,7 @@
1017997 dev_dbg(dev->dev, "index=%d\n", v->index);
1018998
1019999 if (v->index == 0) {
1020
- strlcpy(v->name, "Mirics MSi2500", sizeof(v->name));
1000
+ strscpy(v->name, "Mirics MSi2500", sizeof(v->name));
10211001 v->type = V4L2_TUNER_ADC;
10221002 v->capability = V4L2_TUNER_CAP_1HZ | V4L2_TUNER_CAP_FREQ_BANDS;
10231003 v->rangelow = 1200000;
....@@ -1278,11 +1258,13 @@
12781258 }
12791259
12801260 /* currently all controls are from subdev */
1281
- v4l2_ctrl_add_handler(&dev->hdl, sd->ctrl_handler, NULL);
1261
+ v4l2_ctrl_add_handler(&dev->hdl, sd->ctrl_handler, NULL, true);
12821262
12831263 dev->v4l2_dev.ctrl_handler = &dev->hdl;
12841264 dev->vdev.v4l2_dev = &dev->v4l2_dev;
12851265 dev->vdev.lock = &dev->v4l2_lock;
1266
+ dev->vdev.device_caps = V4L2_CAP_SDR_CAPTURE | V4L2_CAP_STREAMING |
1267
+ V4L2_CAP_READWRITE | V4L2_CAP_TUNER;
12861268
12871269 ret = video_register_device(&dev->vdev, VFL_TYPE_SDR, -1);
12881270 if (ret) {