summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorarmani <armani@openbsd.org>2014-10-18 08:01:34 +0000
committerarmani <armani@openbsd.org>2014-10-18 08:01:34 +0000
commit9c924229fab972fd0ec107bc8e02a33e25c08840 (patch)
tree0dd418c1bea7aa5d59f43fd6381ace18cc771896
parentenable the sinclude/-include feature support I wrote long ago. (diff)
downloadwireguard-openbsd-9c924229fab972fd0ec107bc8e02a33e25c08840.tar.xz
wireguard-openbsd-9c924229fab972fd0ec107bc8e02a33e25c08840.zip
Add VIDIOC_G_INPUT ioctl, some ports need it (at least ffmpeg)
ok ratchov@, sthen@, mpi@
-rw-r--r--share/man/man4/video.46
-rw-r--r--sys/dev/usb/uvideo.c13
-rw-r--r--sys/dev/video.c7
-rw-r--r--sys/dev/video_if.h3
4 files changed, 24 insertions, 5 deletions
diff --git a/share/man/man4/video.4 b/share/man/man4/video.4
index 5635a96ad9f..ba89756044f 100644
--- a/share/man/man4/video.4
+++ b/share/man/man4/video.4
@@ -1,4 +1,4 @@
-.\" $OpenBSD: video.4,v 1.11 2014/06/28 06:27:31 matthew Exp $
+.\" $OpenBSD: video.4,v 1.12 2014/10/18 08:01:34 armani Exp $
.\"
.\" Copyright (c) 2008 Marcus Glocker <mglocker@openbsd.org>
.\"
@@ -14,7 +14,7 @@
.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
.\"
-.Dd $Mdocdate: June 28 2014 $
+.Dd $Mdocdate: October 18 2014 $
.Dt VIDEO 4
.Os
.Sh NAME
@@ -102,6 +102,8 @@ struct v4l2_input {
u_int32_t reserved[32];
};
.Ed
+.It Dv VIDIOC_G_INPUT Fa "int *"
+Get the current video input.
.It Dv VIDIOC_S_INPUT Fa "int *"
Select the current video input.
.It Dv VIDIOC_REQBUFS Fa "struct v4l2_requestbuffers *"
diff --git a/sys/dev/usb/uvideo.c b/sys/dev/usb/uvideo.c
index 492cd0c1f81..faab4e15cc2 100644
--- a/sys/dev/usb/uvideo.c
+++ b/sys/dev/usb/uvideo.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: uvideo.c,v 1.175 2014/07/12 18:48:53 tedu Exp $ */
+/* $OpenBSD: uvideo.c,v 1.176 2014/10/18 08:01:34 armani Exp $ */
/*
* Copyright (c) 2008 Robert Nagy <robert@openbsd.org>
@@ -179,6 +179,7 @@ int uvideo_s_parm(void *, struct v4l2_streamparm *);
int uvideo_g_parm(void *, struct v4l2_streamparm *);
int uvideo_enum_input(void *, struct v4l2_input *);
int uvideo_s_input(void *, int);
+int uvideo_g_input(void *, int *);
int uvideo_reqbufs(void *, struct v4l2_requestbuffers *);
int uvideo_querybuf(void *, struct v4l2_buffer *);
int uvideo_qbuf(void *, struct v4l2_buffer *);
@@ -228,6 +229,7 @@ struct video_hw_if uvideo_hw_if = {
uvideo_g_parm, /* VIDIOC_G_PARM */
uvideo_enum_input, /* VIDIOC_ENUMINPUT */
uvideo_s_input, /* VIDIOC_S_INPUT */
+ uvideo_g_input, /* VIDIOC_G_INPUT */
uvideo_reqbufs, /* VIDIOC_REQBUFS */
uvideo_querybuf, /* VIDIOC_QUERYBUF */
uvideo_qbuf, /* VIDIOC_QBUF */
@@ -3074,6 +3076,15 @@ uvideo_s_input(void *v, int input)
}
int
+uvideo_g_input(void *v, int *input)
+{
+ /* XXX we just support one input for now */
+ *input = 0;
+
+ return (0);
+}
+
+int
uvideo_reqbufs(void *v, struct v4l2_requestbuffers *rb)
{
struct uvideo_softc *sc = v;
diff --git a/sys/dev/video.c b/sys/dev/video.c
index 8e3a291f186..11dc2b0e6bf 100644
--- a/sys/dev/video.c
+++ b/sys/dev/video.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: video.c,v 1.32 2014/09/14 14:17:24 jsg Exp $ */
+/* $OpenBSD: video.c,v 1.33 2014/10/18 08:01:34 armani Exp $ */
/*
* Copyright (c) 2008 Robert Nagy <robert@openbsd.org>
@@ -249,6 +249,11 @@ videoioctl(dev_t dev, u_long cmd, caddr_t data, int flags, struct proc *p)
error = (sc->hw_if->s_input)(sc->hw_hdl,
(int)*data);
break;
+ case VIDIOC_G_INPUT:
+ if (sc->hw_if->g_input)
+ error = (sc->hw_if->g_input)(sc->hw_hdl,
+ (int *)data);
+ break;
case VIDIOC_REQBUFS:
if (sc->hw_if->reqbufs)
error = (sc->hw_if->reqbufs)(sc->hw_hdl,
diff --git a/sys/dev/video_if.h b/sys/dev/video_if.h
index f8bf2480974..3f0cbd20352 100644
--- a/sys/dev/video_if.h
+++ b/sys/dev/video_if.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: video_if.h,v 1.17 2011/03/26 08:13:05 jakemsr Exp $ */
+/* $OpenBSD: video_if.h,v 1.18 2014/10/18 08:01:34 armani Exp $ */
/*
* Copyright (c) 2008 Robert Nagy <robert@openbsd.org>
* Copyright (c) 2008 Marcus Glocker <mglocker@openbsd.org>
@@ -44,6 +44,7 @@ struct video_hw_if {
int (*g_parm)(void *, struct v4l2_streamparm *);
int (*enum_input)(void *, struct v4l2_input *);
int (*s_input)(void *, int);
+ int (*g_input)(void *, int *);
int (*reqbufs)(void *, struct v4l2_requestbuffers *);
int (*querybuf)(void *, struct v4l2_buffer *);
int (*qbuf)(void *, struct v4l2_buffer *);