hc
2023-12-11 d2ccde1c8e90d38cee87a1b0309ad2827f3fd30d
kernel/drivers/media/pci/ivtv/ivtv-streams.c
....@@ -51,6 +51,9 @@
5151 .write = ivtv_v4l2_write,
5252 .open = ivtv_v4l2_open,
5353 .unlocked_ioctl = video_ioctl2,
54
+#ifdef CONFIG_COMPAT
55
+ .compat_ioctl32 = video_ioctl2, /* for ivtv_default() */
56
+#endif
5457 .release = ivtv_v4l2_close,
5558 .poll = ivtv_v4l2_enc_poll,
5659 };
....@@ -61,6 +64,9 @@
6164 .write = ivtv_v4l2_write,
6265 .open = ivtv_v4l2_open,
6366 .unlocked_ioctl = video_ioctl2,
67
+#ifdef CONFIG_COMPAT
68
+ .compat_ioctl32 = video_ioctl2, /* for ivtv_default() */
69
+#endif
6470 .release = ivtv_v4l2_close,
6571 .poll = ivtv_v4l2_dec_poll,
6672 };
....@@ -69,6 +75,9 @@
6975 .owner = THIS_MODULE,
7076 .open = ivtv_v4l2_open,
7177 .unlocked_ioctl = video_ioctl2,
78
+#ifdef CONFIG_COMPAT
79
+ .compat_ioctl32 = video_ioctl2, /* for ivtv_default() */
80
+#endif
7281 .release = ivtv_v4l2_close,
7382 .poll = ivtv_v4l2_enc_poll,
7483 };
....@@ -90,7 +99,7 @@
9099 } ivtv_stream_info[] = {
91100 { /* IVTV_ENC_STREAM_TYPE_MPG */
92101 "encoder MPG",
93
- VFL_TYPE_GRABBER, 0,
102
+ VFL_TYPE_VIDEO, 0,
94103 PCI_DMA_FROMDEVICE, 0,
95104 V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_TUNER |
96105 V4L2_CAP_AUDIO | V4L2_CAP_READWRITE,
....@@ -98,7 +107,7 @@
98107 },
99108 { /* IVTV_ENC_STREAM_TYPE_YUV */
100109 "encoder YUV",
101
- VFL_TYPE_GRABBER, IVTV_V4L2_ENC_YUV_OFFSET,
110
+ VFL_TYPE_VIDEO, IVTV_V4L2_ENC_YUV_OFFSET,
102111 PCI_DMA_FROMDEVICE, 0,
103112 V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_TUNER |
104113 V4L2_CAP_AUDIO | V4L2_CAP_READWRITE,
....@@ -114,7 +123,7 @@
114123 },
115124 { /* IVTV_ENC_STREAM_TYPE_PCM */
116125 "encoder PCM",
117
- VFL_TYPE_GRABBER, IVTV_V4L2_ENC_PCM_OFFSET,
126
+ VFL_TYPE_VIDEO, IVTV_V4L2_ENC_PCM_OFFSET,
118127 PCI_DMA_FROMDEVICE, 0,
119128 V4L2_CAP_TUNER | V4L2_CAP_AUDIO | V4L2_CAP_READWRITE,
120129 &ivtv_v4l2_enc_fops
....@@ -128,10 +137,9 @@
128137 },
129138 { /* IVTV_DEC_STREAM_TYPE_MPG */
130139 "decoder MPG",
131
- VFL_TYPE_GRABBER, IVTV_V4L2_DEC_MPG_OFFSET,
140
+ VFL_TYPE_VIDEO, IVTV_V4L2_DEC_MPG_OFFSET,
132141 PCI_DMA_TODEVICE, 0,
133
- V4L2_CAP_VIDEO_OUTPUT | V4L2_CAP_AUDIO | V4L2_CAP_READWRITE |
134
- V4L2_CAP_VIDEO_OUTPUT_OVERLAY,
142
+ V4L2_CAP_VIDEO_OUTPUT | V4L2_CAP_AUDIO | V4L2_CAP_READWRITE,
135143 &ivtv_v4l2_dec_fops
136144 },
137145 { /* IVTV_DEC_STREAM_TYPE_VBI */
....@@ -150,10 +158,9 @@
150158 },
151159 { /* IVTV_DEC_STREAM_TYPE_YUV */
152160 "decoder YUV",
153
- VFL_TYPE_GRABBER, IVTV_V4L2_DEC_YUV_OFFSET,
161
+ VFL_TYPE_VIDEO, IVTV_V4L2_DEC_YUV_OFFSET,
154162 PCI_DMA_TODEVICE, 0,
155
- V4L2_CAP_VIDEO_OUTPUT | V4L2_CAP_AUDIO | V4L2_CAP_READWRITE |
156
- V4L2_CAP_VIDEO_OUTPUT_OVERLAY,
163
+ V4L2_CAP_VIDEO_OUTPUT | V4L2_CAP_AUDIO | V4L2_CAP_READWRITE,
157164 &ivtv_v4l2_dec_fops
158165 }
159166 };
....@@ -169,7 +176,7 @@
169176 s->itv = itv;
170177 s->type = type;
171178 s->name = ivtv_stream_info[type].name;
172
- s->caps = ivtv_stream_info[type].v4l2_caps;
179
+ s->vdev.device_caps = ivtv_stream_info[type].v4l2_caps;
173180
174181 if (ivtv_stream_info[type].pio)
175182 s->dma = PCI_DMA_NONE;
....@@ -292,6 +299,11 @@
292299 if (s_mpg->vdev.v4l2_dev)
293300 num = s_mpg->vdev.num + ivtv_stream_info[type].num_offset;
294301 }
302
+ if (itv->osd_video_pbase && (type == IVTV_DEC_STREAM_TYPE_YUV ||
303
+ type == IVTV_DEC_STREAM_TYPE_MPG)) {
304
+ s->vdev.device_caps |= V4L2_CAP_VIDEO_OUTPUT_OVERLAY;
305
+ itv->v4l2_cap |= V4L2_CAP_VIDEO_OUTPUT_OVERLAY;
306
+ }
295307 video_set_drvdata(&s->vdev, s);
296308
297309 /* Register device. First try the desired minor, then any free one. */
....@@ -303,7 +315,7 @@
303315 name = video_device_node_name(&s->vdev);
304316
305317 switch (vfl_type) {
306
- case VFL_TYPE_GRABBER:
318
+ case VFL_TYPE_VIDEO:
307319 IVTV_INFO("Registered device %s for %s (%d kB)\n",
308320 name, s->name, itv->options.kilobytes[type]);
309321 break;