forked from ~ljy/RK356X_SDK_RELEASE

hc
2024-10-22 8ac6c7a54ed1b98d142dce24b11c6de6a1e239a5
kernel/drivers/media/usb/stkwebcam/stk-webcam.c
....@@ -1,3 +1,4 @@
1
+// SPDX-License-Identifier: GPL-2.0-or-later
12 /*
23 * stk-webcam.c : Driver for Syntek 1125 USB webcam controller
34 *
....@@ -6,16 +7,6 @@
67 *
78 * Some parts are inspired from cafe_ccic.c
89 * Copyright 2006-2007 Jonathan Corbet
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
- * 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.
1910 */
2011
2112 #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
....@@ -114,6 +105,13 @@
114105 .matches = {
115106 DMI_MATCH(DMI_SYS_VENDOR, "HCL Infosystems Limited"),
116107 DMI_MATCH(DMI_PRODUCT_NAME, "T12Rg-H")
108
+ }
109
+ },
110
+ {
111
+ .ident = "ASUS A6VM",
112
+ .matches = {
113
+ DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK Computer Inc."),
114
+ DMI_MATCH(DMI_PRODUCT_NAME, "A6VM")
117115 }
118116 },
119117 {}
....@@ -796,13 +794,9 @@
796794 {
797795 struct stk_camera *dev = video_drvdata(filp);
798796
799
- strcpy(cap->driver, "stk");
800
- strcpy(cap->card, "stk");
797
+ strscpy(cap->driver, "stk", sizeof(cap->driver));
798
+ strscpy(cap->card, "stk", sizeof(cap->card));
801799 usb_make_path(dev->udev, cap->bus_info, sizeof(cap->bus_info));
802
-
803
- cap->device_caps = V4L2_CAP_VIDEO_CAPTURE
804
- | V4L2_CAP_READWRITE | V4L2_CAP_STREAMING;
805
- cap->capabilities = cap->device_caps | V4L2_CAP_DEVICE_CAPS;
806800 return 0;
807801 }
808802
....@@ -812,7 +806,7 @@
812806 if (input->index != 0)
813807 return -EINVAL;
814808
815
- strcpy(input->name, "Syntek USB Camera");
809
+ strscpy(input->name, "Syntek USB Camera", sizeof(input->name));
816810 input->type = V4L2_INPUT_TYPE_CAMERA;
817811 return 0;
818812 }
....@@ -862,23 +856,18 @@
862856 switch (fmtd->index) {
863857 case 0:
864858 fmtd->pixelformat = V4L2_PIX_FMT_RGB565;
865
- strcpy(fmtd->description, "r5g6b5");
866859 break;
867860 case 1:
868861 fmtd->pixelformat = V4L2_PIX_FMT_RGB565X;
869
- strcpy(fmtd->description, "r5g6b5BE");
870862 break;
871863 case 2:
872864 fmtd->pixelformat = V4L2_PIX_FMT_UYVY;
873
- strcpy(fmtd->description, "yuv4:2:2");
874865 break;
875866 case 3:
876867 fmtd->pixelformat = V4L2_PIX_FMT_SBGGR8;
877
- strcpy(fmtd->description, "Raw bayer");
878868 break;
879869 case 4:
880870 fmtd->pixelformat = V4L2_PIX_FMT_YUYV;
881
- strcpy(fmtd->description, "yuv4:2:2");
882871 break;
883872 default:
884873 return -EINVAL;
....@@ -998,7 +987,7 @@
998987 stk_camera_write_reg(dev, 0x001c, 0x46);
999988 /*
1000989 * Registers 0x0115 0x0114 are the size of each line (bytes),
1001
- * regs 0x0117 0x0116 are the heigth of the image.
990
+ * regs 0x0117 0x0116 are the height of the image.
1002991 */
1003992 stk_camera_write_reg(dev, 0x0115,
1004993 ((stk_sizes[i].w * depth) >> 8) & 0xff);
....@@ -1136,7 +1125,7 @@
11361125 sbuf->v4lbuf.flags &= ~V4L2_BUF_FLAG_QUEUED;
11371126 sbuf->v4lbuf.flags |= V4L2_BUF_FLAG_DONE;
11381127 sbuf->v4lbuf.sequence = ++dev->sequence;
1139
- v4l2_get_timestamp(&sbuf->v4lbuf.timestamp);
1128
+ v4l2_buffer_set_timestamp(&sbuf->v4lbuf, ktime_get_ns());
11401129
11411130 *buf = sbuf->v4lbuf;
11421131 return 0;
....@@ -1262,8 +1251,10 @@
12621251 dev->vdev = stk_v4l_data;
12631252 dev->vdev.lock = &dev->lock;
12641253 dev->vdev.v4l2_dev = &dev->v4l2_dev;
1254
+ dev->vdev.device_caps = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_READWRITE |
1255
+ V4L2_CAP_STREAMING;
12651256 video_set_drvdata(&dev->vdev, dev);
1266
- err = video_register_device(&dev->vdev, VFL_TYPE_GRABBER, -1);
1257
+ err = video_register_device(&dev->vdev, VFL_TYPE_VIDEO, -1);
12671258 if (err)
12681259 pr_err("v4l registration failed\n");
12691260 else