hc
2023-12-11 d2ccde1c8e90d38cee87a1b0309ad2827f3fd30d
kernel/drivers/media/pci/meye/meye.c
....@@ -1,3 +1,4 @@
1
+// SPDX-License-Identifier: GPL-2.0-or-later
12 /*
23 * Motion Eye video4linux driver for Sony Vaio PictureBook
34 *
....@@ -11,16 +12,6 @@
1112 *
1213 * Some parts borrowed from various video4linux drivers, especially
1314 * bttv-driver.c and zoran.c, see original files for credits.
14
- *
15
- * This program is free software; you can redistribute it and/or modify
16
- * it under the terms of the GNU General Public License as published by
17
- * the Free Software Foundation; either version 2 of the License, or
18
- * (at your option) any later version.
19
- *
20
- * This program is distributed in the hope that it will be useful,
21
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
22
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
23
- * GNU General Public License for more details.
2415 */
2516 #include <linux/module.h>
2617 #include <linux/pci.h>
....@@ -805,7 +796,7 @@
805796 mchip_hsize() * mchip_vsize() * 2);
806797 meye.grab_buffer[reqnr].size = mchip_hsize() * mchip_vsize() * 2;
807798 meye.grab_buffer[reqnr].state = MEYE_BUF_DONE;
808
- v4l2_get_timestamp(&meye.grab_buffer[reqnr].timestamp);
799
+ meye.grab_buffer[reqnr].ts = ktime_get_ns();
809800 meye.grab_buffer[reqnr].sequence = sequence++;
810801 kfifo_in_locked(&meye.doneq, (unsigned char *)&reqnr,
811802 sizeof(int), &meye.doneq_lock);
....@@ -826,7 +817,7 @@
826817 size);
827818 meye.grab_buffer[reqnr].size = size;
828819 meye.grab_buffer[reqnr].state = MEYE_BUF_DONE;
829
- v4l2_get_timestamp(&meye.grab_buffer[reqnr].timestamp);
820
+ meye.grab_buffer[reqnr].ts = ktime_get_ns();
830821 meye.grab_buffer[reqnr].sequence = sequence++;
831822 kfifo_in_locked(&meye.doneq, (unsigned char *)&reqnr,
832823 sizeof(int), &meye.doneq_lock);
....@@ -961,7 +952,7 @@
961952 mutex_unlock(&meye.lock);
962953 return -EINTR;
963954 }
964
- /* fall through */
955
+ fallthrough;
965956 case MEYE_BUF_DONE:
966957 meye.grab_buffer[*i].state = MEYE_BUF_UNUSED;
967958 if (kfifo_out_locked(&meye.doneq, (unsigned char *)&unused,
....@@ -1019,14 +1010,9 @@
10191010 static int vidioc_querycap(struct file *file, void *fh,
10201011 struct v4l2_capability *cap)
10211012 {
1022
- strcpy(cap->driver, "meye");
1023
- strcpy(cap->card, "meye");
1013
+ strscpy(cap->driver, "meye", sizeof(cap->driver));
1014
+ strscpy(cap->card, "meye", sizeof(cap->card));
10241015 sprintf(cap->bus_info, "PCI:%s", pci_name(meye.mchip_dev));
1025
-
1026
- cap->device_caps = V4L2_CAP_VIDEO_CAPTURE |
1027
- V4L2_CAP_STREAMING;
1028
- cap->capabilities = cap->device_caps | V4L2_CAP_DEVICE_CAPS;
1029
-
10301016 return 0;
10311017 }
10321018
....@@ -1035,7 +1021,7 @@
10351021 if (i->index != 0)
10361022 return -EINVAL;
10371023
1038
- strcpy(i->name, "Camera");
1024
+ strscpy(i->name, "Camera", sizeof(i->name));
10391025 i->type = V4L2_INPUT_TYPE_CAMERA;
10401026
10411027 return 0;
....@@ -1118,12 +1104,9 @@
11181104 if (f->index == 0) {
11191105 /* standard YUV 422 capture */
11201106 f->flags = 0;
1121
- strcpy(f->description, "YUV422");
11221107 f->pixelformat = V4L2_PIX_FMT_YUYV;
11231108 } else {
11241109 /* compressed MJPEG capture */
1125
- f->flags = V4L2_FMT_FLAG_COMPRESSED;
1126
- strcpy(f->description, "MJPEG");
11271110 f->pixelformat = V4L2_PIX_FMT_MJPEG;
11281111 }
11291112
....@@ -1283,7 +1266,7 @@
12831266 buf->flags |= V4L2_BUF_FLAG_DONE;
12841267
12851268 buf->field = V4L2_FIELD_NONE;
1286
- buf->timestamp = meye.grab_buffer[index].timestamp;
1269
+ v4l2_buffer_set_timestamp(buf, meye.grab_buffer[index].ts);
12871270 buf->sequence = meye.grab_buffer[index].sequence;
12881271 buf->memory = V4L2_MEMORY_MMAP;
12891272 buf->m.offset = index * gbufsize;
....@@ -1349,7 +1332,7 @@
13491332 buf->bytesused = meye.grab_buffer[reqnr].size;
13501333 buf->flags = V4L2_BUF_FLAG_MAPPED | V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC;
13511334 buf->field = V4L2_FIELD_NONE;
1352
- buf->timestamp = meye.grab_buffer[reqnr].timestamp;
1335
+ v4l2_buffer_set_timestamp(buf, meye.grab_buffer[reqnr].ts);
13531336 buf->sequence = meye.grab_buffer[reqnr].sequence;
13541337 buf->memory = V4L2_MEMORY_MMAP;
13551338 buf->m.offset = reqnr * gbufsize;
....@@ -1538,25 +1521,23 @@
15381521 .fops = &meye_fops,
15391522 .ioctl_ops = &meye_ioctl_ops,
15401523 .release = video_device_release_empty,
1524
+ .device_caps = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_STREAMING,
15411525 };
15421526
15431527 static const struct v4l2_ctrl_ops meye_ctrl_ops = {
15441528 .s_ctrl = meye_s_ctrl,
15451529 };
15461530
1547
-#ifdef CONFIG_PM
1548
-static int meye_suspend(struct pci_dev *pdev, pm_message_t state)
1531
+static int __maybe_unused meye_suspend(struct device *dev)
15491532 {
1550
- pci_save_state(pdev);
15511533 meye.pm_mchip_mode = meye.mchip_mode;
15521534 mchip_hic_stop();
15531535 mchip_set(MCHIP_MM_INTA, 0x0);
15541536 return 0;
15551537 }
15561538
1557
-static int meye_resume(struct pci_dev *pdev)
1539
+static int __maybe_unused meye_resume(struct device *dev)
15581540 {
1559
- pci_restore_state(pdev);
15601541 pci_write_config_word(meye.mchip_dev, MCHIP_PCI_SOFTRESET_SET, 1);
15611542
15621543 mchip_delay(MCHIP_HIC_CMD, 0);
....@@ -1578,7 +1559,6 @@
15781559 }
15791560 return 0;
15801561 }
1581
-#endif
15821562
15831563 static int meye_probe(struct pci_dev *pcidev, const struct pci_device_id *ent)
15841564 {
....@@ -1727,7 +1707,7 @@
17271707 v4l2_ctrl_handler_setup(&meye.hdl);
17281708 meye.vdev.ctrl_handler = &meye.hdl;
17291709
1730
- if (video_register_device(&meye.vdev, VFL_TYPE_GRABBER,
1710
+ if (video_register_device(&meye.vdev, VFL_TYPE_VIDEO,
17311711 video_nr) < 0) {
17321712 v4l2_err(v4l2_dev, "video_register_device failed\n");
17331713 goto outvideoreg;
....@@ -1804,15 +1784,14 @@
18041784
18051785 MODULE_DEVICE_TABLE(pci, meye_pci_tbl);
18061786
1787
+static SIMPLE_DEV_PM_OPS(meye_pm_ops, meye_suspend, meye_resume);
1788
+
18071789 static struct pci_driver meye_driver = {
18081790 .name = "meye",
18091791 .id_table = meye_pci_tbl,
18101792 .probe = meye_probe,
18111793 .remove = meye_remove,
1812
-#ifdef CONFIG_PM
1813
- .suspend = meye_suspend,
1814
- .resume = meye_resume,
1815
-#endif
1794
+ .driver.pm = &meye_pm_ops,
18161795 };
18171796
18181797 static int __init meye_init(void)