diff options
Diffstat (limited to 'extras/recipes-kernel/linux/linux-omap/media/0006-v4l-subdev-Control-ioctls-support.patch')
-rw-r--r-- | extras/recipes-kernel/linux/linux-omap/media/0006-v4l-subdev-Control-ioctls-support.patch | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/extras/recipes-kernel/linux/linux-omap/media/0006-v4l-subdev-Control-ioctls-support.patch b/extras/recipes-kernel/linux/linux-omap/media/0006-v4l-subdev-Control-ioctls-support.patch new file mode 100644 index 00000000..218f3469 --- /dev/null +++ b/extras/recipes-kernel/linux/linux-omap/media/0006-v4l-subdev-Control-ioctls-support.patch | |||
@@ -0,0 +1,88 @@ | |||
1 | From dd0b366441249eb10daa2275e968431507f8d0d5 Mon Sep 17 00:00:00 2001 | ||
2 | From: Laurent Pinchart <laurent.pinchart@ideasonboard.com> | ||
3 | Date: Wed, 9 Dec 2009 12:39:54 +0100 | ||
4 | Subject: [PATCH 06/43] v4l: subdev: Control ioctls support | ||
5 | |||
6 | Pass the control-related ioctls to the subdev driver through the control | ||
7 | framework. | ||
8 | |||
9 | Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> | ||
10 | --- | ||
11 | Documentation/video4linux/v4l2-framework.txt | 16 ++++++++++++++++ | ||
12 | drivers/media/video/v4l2-subdev.c | 25 +++++++++++++++++++++++++ | ||
13 | 2 files changed, 41 insertions(+), 0 deletions(-) | ||
14 | |||
15 | diff --git a/Documentation/video4linux/v4l2-framework.txt b/Documentation/video4linux/v4l2-framework.txt | ||
16 | index 4c9185a..f683f63 100644 | ||
17 | --- a/Documentation/video4linux/v4l2-framework.txt | ||
18 | +++ b/Documentation/video4linux/v4l2-framework.txt | ||
19 | @@ -336,6 +336,22 @@ argument to 0. Setting the argument to 1 will only enable device node | ||
20 | registration if the sub-device driver has set the V4L2_SUBDEV_FL_HAS_DEVNODE | ||
21 | flag. | ||
22 | |||
23 | +The device node handles a subset of the V4L2 API. | ||
24 | + | ||
25 | +VIDIOC_QUERYCTRL | ||
26 | +VIDIOC_QUERYMENU | ||
27 | +VIDIOC_G_CTRL | ||
28 | +VIDIOC_S_CTRL | ||
29 | +VIDIOC_G_EXT_CTRLS | ||
30 | +VIDIOC_S_EXT_CTRLS | ||
31 | +VIDIOC_TRY_EXT_CTRLS | ||
32 | + | ||
33 | + The controls ioctls are identical to the ones defined in V4L2. They | ||
34 | + behave identically, with the only exception that they deal only with | ||
35 | + controls implemented in the sub-device. Depending on the driver, those | ||
36 | + controls can be also be accessed through one (or several) V4L2 device | ||
37 | + nodes. | ||
38 | + | ||
39 | |||
40 | I2C sub-device drivers | ||
41 | ---------------------- | ||
42 | diff --git a/drivers/media/video/v4l2-subdev.c b/drivers/media/video/v4l2-subdev.c | ||
43 | index 0deff78..fc57ce7 100644 | ||
44 | --- a/drivers/media/video/v4l2-subdev.c | ||
45 | +++ b/drivers/media/video/v4l2-subdev.c | ||
46 | @@ -24,6 +24,7 @@ | ||
47 | #include <linux/ioctl.h> | ||
48 | #include <linux/videodev2.h> | ||
49 | |||
50 | +#include <media/v4l2-ctrls.h> | ||
51 | #include <media/v4l2-device.h> | ||
52 | #include <media/v4l2-ioctl.h> | ||
53 | |||
54 | @@ -45,7 +46,31 @@ static int subdev_close(struct file *file) | ||
55 | |||
56 | static long subdev_do_ioctl(struct file *file, unsigned int cmd, void *arg) | ||
57 | { | ||
58 | + struct video_device *vdev = video_devdata(file); | ||
59 | + struct v4l2_subdev *sd = vdev_to_v4l2_subdev(vdev); | ||
60 | + | ||
61 | switch (cmd) { | ||
62 | + case VIDIOC_QUERYCTRL: | ||
63 | + return v4l2_subdev_queryctrl(sd, arg); | ||
64 | + | ||
65 | + case VIDIOC_QUERYMENU: | ||
66 | + return v4l2_subdev_querymenu(sd, arg); | ||
67 | + | ||
68 | + case VIDIOC_G_CTRL: | ||
69 | + return v4l2_subdev_g_ctrl(sd, arg); | ||
70 | + | ||
71 | + case VIDIOC_S_CTRL: | ||
72 | + return v4l2_subdev_s_ctrl(sd, arg); | ||
73 | + | ||
74 | + case VIDIOC_G_EXT_CTRLS: | ||
75 | + return v4l2_subdev_g_ext_ctrls(sd, arg); | ||
76 | + | ||
77 | + case VIDIOC_S_EXT_CTRLS: | ||
78 | + return v4l2_subdev_s_ext_ctrls(sd, arg); | ||
79 | + | ||
80 | + case VIDIOC_TRY_EXT_CTRLS: | ||
81 | + return v4l2_subdev_try_ext_ctrls(sd, arg); | ||
82 | + | ||
83 | default: | ||
84 | return -ENOIOCTLCMD; | ||
85 | } | ||
86 | -- | ||
87 | 1.6.6.1 | ||
88 | |||