Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
v4l2-subdev.h
Go to the documentation of this file.
1 /*
2  * V4L2 subdev userspace API
3  *
4  * Copyright (C) 2010 Nokia Corporation
5  *
6  * Contacts: Laurent Pinchart <[email protected]>
7  * Sakari Ailus <[email protected]>
8  *
9  * This program is free software; you can redistribute it and/or modify
10  * it under the terms of the GNU General Public License version 2 as
11  * published by the Free Software Foundation.
12  *
13  * This program is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16  * GNU General Public License for more details.
17  *
18  * You should have received a copy of the GNU General Public License
19  * along with this program; if not, write to the Free Software
20  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
21  */
22 
23 #ifndef __LINUX_V4L2_SUBDEV_H
24 #define __LINUX_V4L2_SUBDEV_H
25 
26 #include <linux/ioctl.h>
27 #include <linux/types.h>
28 #include <linux/v4l2-common.h>
29 #include <linux/v4l2-mediabus.h>
30 
39 };
40 
50  struct v4l2_mbus_framefmt format;
52 };
53 
63  struct v4l2_rect rect;
65 };
66 
73 struct v4l2_subdev_mbus_code_enum {
74  __u32 pad;
75  __u32 index;
76  __u32 code;
77  __u32 reserved[9];
78 };
79 
86 struct v4l2_subdev_frame_size_enum {
87  __u32 index;
88  __u32 pad;
89  __u32 code;
94  __u32 reserved[9];
95 };
96 
102 struct v4l2_subdev_frame_interval {
103  __u32 pad;
104  struct v4l2_fract interval;
105  __u32 reserved[9];
106 };
107 
117 struct v4l2_subdev_frame_interval_enum {
118  __u32 index;
119  __u32 pad;
120  __u32 code;
121  __u32 width;
122  __u32 height;
123  struct v4l2_fract interval;
124  __u32 reserved[9];
125 };
126 
142 struct v4l2_subdev_selection {
143  __u32 which;
144  __u32 pad;
145  __u32 target;
146  __u32 flags;
147  struct v4l2_rect r;
148  __u32 reserved[8];
149 };
150 
151 struct v4l2_subdev_edid {
152  __u32 pad;
154  __u32 blocks;
155  __u32 reserved[5];
156  __u8 __user *edid;
157 };
158 
159 #define VIDIOC_SUBDEV_G_FMT _IOWR('V', 4, struct v4l2_subdev_format)
160 #define VIDIOC_SUBDEV_S_FMT _IOWR('V', 5, struct v4l2_subdev_format)
161 #define VIDIOC_SUBDEV_G_FRAME_INTERVAL \
162  _IOWR('V', 21, struct v4l2_subdev_frame_interval)
163 #define VIDIOC_SUBDEV_S_FRAME_INTERVAL \
164  _IOWR('V', 22, struct v4l2_subdev_frame_interval)
165 #define VIDIOC_SUBDEV_ENUM_MBUS_CODE \
166  _IOWR('V', 2, struct v4l2_subdev_mbus_code_enum)
167 #define VIDIOC_SUBDEV_ENUM_FRAME_SIZE \
168  _IOWR('V', 74, struct v4l2_subdev_frame_size_enum)
169 #define VIDIOC_SUBDEV_ENUM_FRAME_INTERVAL \
170  _IOWR('V', 75, struct v4l2_subdev_frame_interval_enum)
171 #define VIDIOC_SUBDEV_G_CROP _IOWR('V', 59, struct v4l2_subdev_crop)
172 #define VIDIOC_SUBDEV_S_CROP _IOWR('V', 60, struct v4l2_subdev_crop)
173 #define VIDIOC_SUBDEV_G_SELECTION \
174  _IOWR('V', 61, struct v4l2_subdev_selection)
175 #define VIDIOC_SUBDEV_S_SELECTION \
176  _IOWR('V', 62, struct v4l2_subdev_selection)
177 #define VIDIOC_SUBDEV_G_EDID _IOWR('V', 40, struct v4l2_subdev_edid)
178 #define VIDIOC_SUBDEV_S_EDID _IOWR('V', 41, struct v4l2_subdev_edid)
179 
180 #endif