diff options
author | Hans Verkuil <hverkuil@xs4all.nl> | 2008-07-21 01:57:38 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@infradead.org> | 2008-07-26 11:54:58 -0400 |
commit | a399810ca69d9d4bd30ab8c1678c7439e567f90b (patch) | |
tree | 32939ef77bc75c3a224d37cf4e885d7f808741bf /include/media/v4l2-ioctl.h | |
parent | b654fcdc0ea3b6e5724c9873ae062bdfe7f28efe (diff) |
V4L/DVB (8482): videodev: move all ioctl callbacks to a new v4l2_ioctl_ops struct
All ioctl callbacks are now stored in a new v4l2_ioctl_ops struct. Drivers fill in
a const struct v4l2_ioctl_ops and video_device just contains a const pointer to it.
This ensures a clean separation between the const ops struct and the non-const
video_device struct.
Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
Diffstat (limited to 'include/media/v4l2-ioctl.h')
-rw-r--r-- | include/media/v4l2-ioctl.h | 223 |
1 files changed, 223 insertions, 0 deletions
diff --git a/include/media/v4l2-ioctl.h b/include/media/v4l2-ioctl.h index e319d1fffb82..dc6404618555 100644 --- a/include/media/v4l2-ioctl.h +++ b/include/media/v4l2-ioctl.h | |||
@@ -20,6 +20,229 @@ | |||
20 | #include <linux/videodev2.h> | 20 | #include <linux/videodev2.h> |
21 | #endif | 21 | #endif |
22 | 22 | ||
23 | struct v4l2_ioctl_ops { | ||
24 | /* ioctl callbacks */ | ||
25 | |||
26 | /* VIDIOC_QUERYCAP handler */ | ||
27 | int (*vidioc_querycap)(struct file *file, void *fh, struct v4l2_capability *cap); | ||
28 | |||
29 | /* Priority handling */ | ||
30 | int (*vidioc_g_priority) (struct file *file, void *fh, | ||
31 | enum v4l2_priority *p); | ||
32 | int (*vidioc_s_priority) (struct file *file, void *fh, | ||
33 | enum v4l2_priority p); | ||
34 | |||
35 | /* VIDIOC_ENUM_FMT handlers */ | ||
36 | int (*vidioc_enum_fmt_vid_cap) (struct file *file, void *fh, | ||
37 | struct v4l2_fmtdesc *f); | ||
38 | int (*vidioc_enum_fmt_vid_overlay) (struct file *file, void *fh, | ||
39 | struct v4l2_fmtdesc *f); | ||
40 | int (*vidioc_enum_fmt_vid_out) (struct file *file, void *fh, | ||
41 | struct v4l2_fmtdesc *f); | ||
42 | #if 1 | ||
43 | /* deprecated, will be removed in 2.6.28 */ | ||
44 | int (*vidioc_enum_fmt_vbi_cap) (struct file *file, void *fh, | ||
45 | struct v4l2_fmtdesc *f); | ||
46 | #endif | ||
47 | int (*vidioc_enum_fmt_type_private)(struct file *file, void *fh, | ||
48 | struct v4l2_fmtdesc *f); | ||
49 | |||
50 | /* VIDIOC_G_FMT handlers */ | ||
51 | int (*vidioc_g_fmt_vid_cap) (struct file *file, void *fh, | ||
52 | struct v4l2_format *f); | ||
53 | int (*vidioc_g_fmt_vid_overlay)(struct file *file, void *fh, | ||
54 | struct v4l2_format *f); | ||
55 | int (*vidioc_g_fmt_vid_out) (struct file *file, void *fh, | ||
56 | struct v4l2_format *f); | ||
57 | int (*vidioc_g_fmt_vid_out_overlay)(struct file *file, void *fh, | ||
58 | struct v4l2_format *f); | ||
59 | int (*vidioc_g_fmt_vbi_cap) (struct file *file, void *fh, | ||
60 | struct v4l2_format *f); | ||
61 | int (*vidioc_g_fmt_vbi_out) (struct file *file, void *fh, | ||
62 | struct v4l2_format *f); | ||
63 | int (*vidioc_g_fmt_sliced_vbi_cap)(struct file *file, void *fh, | ||
64 | struct v4l2_format *f); | ||
65 | int (*vidioc_g_fmt_sliced_vbi_out)(struct file *file, void *fh, | ||
66 | struct v4l2_format *f); | ||
67 | int (*vidioc_g_fmt_type_private)(struct file *file, void *fh, | ||
68 | struct v4l2_format *f); | ||
69 | |||
70 | /* VIDIOC_S_FMT handlers */ | ||
71 | int (*vidioc_s_fmt_vid_cap) (struct file *file, void *fh, | ||
72 | struct v4l2_format *f); | ||
73 | int (*vidioc_s_fmt_vid_overlay)(struct file *file, void *fh, | ||
74 | struct v4l2_format *f); | ||
75 | int (*vidioc_s_fmt_vid_out) (struct file *file, void *fh, | ||
76 | struct v4l2_format *f); | ||
77 | int (*vidioc_s_fmt_vid_out_overlay)(struct file *file, void *fh, | ||
78 | struct v4l2_format *f); | ||
79 | int (*vidioc_s_fmt_vbi_cap) (struct file *file, void *fh, | ||
80 | struct v4l2_format *f); | ||
81 | int (*vidioc_s_fmt_vbi_out) (struct file *file, void *fh, | ||
82 | struct v4l2_format *f); | ||
83 | int (*vidioc_s_fmt_sliced_vbi_cap)(struct file *file, void *fh, | ||
84 | struct v4l2_format *f); | ||
85 | int (*vidioc_s_fmt_sliced_vbi_out)(struct file *file, void *fh, | ||
86 | struct v4l2_format *f); | ||
87 | int (*vidioc_s_fmt_type_private)(struct file *file, void *fh, | ||
88 | struct v4l2_format *f); | ||
89 | |||
90 | /* VIDIOC_TRY_FMT handlers */ | ||
91 | int (*vidioc_try_fmt_vid_cap) (struct file *file, void *fh, | ||
92 | struct v4l2_format *f); | ||
93 | int (*vidioc_try_fmt_vid_overlay)(struct file *file, void *fh, | ||
94 | struct v4l2_format *f); | ||
95 | int (*vidioc_try_fmt_vid_out) (struct file *file, void *fh, | ||
96 | struct v4l2_format *f); | ||
97 | int (*vidioc_try_fmt_vid_out_overlay)(struct file *file, void *fh, | ||
98 | struct v4l2_format *f); | ||
99 | int (*vidioc_try_fmt_vbi_cap) (struct file *file, void *fh, | ||
100 | struct v4l2_format *f); | ||
101 | int (*vidioc_try_fmt_vbi_out) (struct file *file, void *fh, | ||
102 | struct v4l2_format *f); | ||
103 | int (*vidioc_try_fmt_sliced_vbi_cap)(struct file *file, void *fh, | ||
104 | struct v4l2_format *f); | ||
105 | int (*vidioc_try_fmt_sliced_vbi_out)(struct file *file, void *fh, | ||
106 | struct v4l2_format *f); | ||
107 | int (*vidioc_try_fmt_type_private)(struct file *file, void *fh, | ||
108 | struct v4l2_format *f); | ||
109 | |||
110 | /* Buffer handlers */ | ||
111 | int (*vidioc_reqbufs) (struct file *file, void *fh, struct v4l2_requestbuffers *b); | ||
112 | int (*vidioc_querybuf)(struct file *file, void *fh, struct v4l2_buffer *b); | ||
113 | int (*vidioc_qbuf) (struct file *file, void *fh, struct v4l2_buffer *b); | ||
114 | int (*vidioc_dqbuf) (struct file *file, void *fh, struct v4l2_buffer *b); | ||
115 | |||
116 | |||
117 | int (*vidioc_overlay) (struct file *file, void *fh, unsigned int i); | ||
118 | #ifdef CONFIG_VIDEO_V4L1_COMPAT | ||
119 | /* buffer type is struct vidio_mbuf * */ | ||
120 | int (*vidiocgmbuf) (struct file *file, void *fh, struct video_mbuf *p); | ||
121 | #endif | ||
122 | int (*vidioc_g_fbuf) (struct file *file, void *fh, | ||
123 | struct v4l2_framebuffer *a); | ||
124 | int (*vidioc_s_fbuf) (struct file *file, void *fh, | ||
125 | struct v4l2_framebuffer *a); | ||
126 | |||
127 | /* Stream on/off */ | ||
128 | int (*vidioc_streamon) (struct file *file, void *fh, enum v4l2_buf_type i); | ||
129 | int (*vidioc_streamoff)(struct file *file, void *fh, enum v4l2_buf_type i); | ||
130 | |||
131 | /* Standard handling | ||
132 | ENUMSTD is handled by videodev.c | ||
133 | */ | ||
134 | int (*vidioc_g_std) (struct file *file, void *fh, v4l2_std_id *norm); | ||
135 | int (*vidioc_s_std) (struct file *file, void *fh, v4l2_std_id *norm); | ||
136 | int (*vidioc_querystd) (struct file *file, void *fh, v4l2_std_id *a); | ||
137 | |||
138 | /* Input handling */ | ||
139 | int (*vidioc_enum_input)(struct file *file, void *fh, | ||
140 | struct v4l2_input *inp); | ||
141 | int (*vidioc_g_input) (struct file *file, void *fh, unsigned int *i); | ||
142 | int (*vidioc_s_input) (struct file *file, void *fh, unsigned int i); | ||
143 | |||
144 | /* Output handling */ | ||
145 | int (*vidioc_enum_output) (struct file *file, void *fh, | ||
146 | struct v4l2_output *a); | ||
147 | int (*vidioc_g_output) (struct file *file, void *fh, unsigned int *i); | ||
148 | int (*vidioc_s_output) (struct file *file, void *fh, unsigned int i); | ||
149 | |||
150 | /* Control handling */ | ||
151 | int (*vidioc_queryctrl) (struct file *file, void *fh, | ||
152 | struct v4l2_queryctrl *a); | ||
153 | int (*vidioc_g_ctrl) (struct file *file, void *fh, | ||
154 | struct v4l2_control *a); | ||
155 | int (*vidioc_s_ctrl) (struct file *file, void *fh, | ||
156 | struct v4l2_control *a); | ||
157 | int (*vidioc_g_ext_ctrls) (struct file *file, void *fh, | ||
158 | struct v4l2_ext_controls *a); | ||
159 | int (*vidioc_s_ext_ctrls) (struct file *file, void *fh, | ||
160 | struct v4l2_ext_controls *a); | ||
161 | int (*vidioc_try_ext_ctrls) (struct file *file, void *fh, | ||
162 | struct v4l2_ext_controls *a); | ||
163 | int (*vidioc_querymenu) (struct file *file, void *fh, | ||
164 | struct v4l2_querymenu *a); | ||
165 | |||
166 | /* Audio ioctls */ | ||
167 | int (*vidioc_enumaudio) (struct file *file, void *fh, | ||
168 | struct v4l2_audio *a); | ||
169 | int (*vidioc_g_audio) (struct file *file, void *fh, | ||
170 | struct v4l2_audio *a); | ||
171 | int (*vidioc_s_audio) (struct file *file, void *fh, | ||
172 | struct v4l2_audio *a); | ||
173 | |||
174 | /* Audio out ioctls */ | ||
175 | int (*vidioc_enumaudout) (struct file *file, void *fh, | ||
176 | struct v4l2_audioout *a); | ||
177 | int (*vidioc_g_audout) (struct file *file, void *fh, | ||
178 | struct v4l2_audioout *a); | ||
179 | int (*vidioc_s_audout) (struct file *file, void *fh, | ||
180 | struct v4l2_audioout *a); | ||
181 | int (*vidioc_g_modulator) (struct file *file, void *fh, | ||
182 | struct v4l2_modulator *a); | ||
183 | int (*vidioc_s_modulator) (struct file *file, void *fh, | ||
184 | struct v4l2_modulator *a); | ||
185 | /* Crop ioctls */ | ||
186 | int (*vidioc_cropcap) (struct file *file, void *fh, | ||
187 | struct v4l2_cropcap *a); | ||
188 | int (*vidioc_g_crop) (struct file *file, void *fh, | ||
189 | struct v4l2_crop *a); | ||
190 | int (*vidioc_s_crop) (struct file *file, void *fh, | ||
191 | struct v4l2_crop *a); | ||
192 | /* Compression ioctls */ | ||
193 | int (*vidioc_g_jpegcomp) (struct file *file, void *fh, | ||
194 | struct v4l2_jpegcompression *a); | ||
195 | int (*vidioc_s_jpegcomp) (struct file *file, void *fh, | ||
196 | struct v4l2_jpegcompression *a); | ||
197 | int (*vidioc_g_enc_index) (struct file *file, void *fh, | ||
198 | struct v4l2_enc_idx *a); | ||
199 | int (*vidioc_encoder_cmd) (struct file *file, void *fh, | ||
200 | struct v4l2_encoder_cmd *a); | ||
201 | int (*vidioc_try_encoder_cmd) (struct file *file, void *fh, | ||
202 | struct v4l2_encoder_cmd *a); | ||
203 | |||
204 | /* Stream type-dependent parameter ioctls */ | ||
205 | int (*vidioc_g_parm) (struct file *file, void *fh, | ||
206 | struct v4l2_streamparm *a); | ||
207 | int (*vidioc_s_parm) (struct file *file, void *fh, | ||
208 | struct v4l2_streamparm *a); | ||
209 | |||
210 | /* Tuner ioctls */ | ||
211 | int (*vidioc_g_tuner) (struct file *file, void *fh, | ||
212 | struct v4l2_tuner *a); | ||
213 | int (*vidioc_s_tuner) (struct file *file, void *fh, | ||
214 | struct v4l2_tuner *a); | ||
215 | int (*vidioc_g_frequency) (struct file *file, void *fh, | ||
216 | struct v4l2_frequency *a); | ||
217 | int (*vidioc_s_frequency) (struct file *file, void *fh, | ||
218 | struct v4l2_frequency *a); | ||
219 | |||
220 | /* Sliced VBI cap */ | ||
221 | int (*vidioc_g_sliced_vbi_cap) (struct file *file, void *fh, | ||
222 | struct v4l2_sliced_vbi_cap *a); | ||
223 | |||
224 | /* Log status ioctl */ | ||
225 | int (*vidioc_log_status) (struct file *file, void *fh); | ||
226 | |||
227 | int (*vidioc_s_hw_freq_seek) (struct file *file, void *fh, | ||
228 | struct v4l2_hw_freq_seek *a); | ||
229 | |||
230 | /* Debugging ioctls */ | ||
231 | #ifdef CONFIG_VIDEO_ADV_DEBUG | ||
232 | int (*vidioc_g_register) (struct file *file, void *fh, | ||
233 | struct v4l2_register *reg); | ||
234 | int (*vidioc_s_register) (struct file *file, void *fh, | ||
235 | struct v4l2_register *reg); | ||
236 | #endif | ||
237 | int (*vidioc_g_chip_ident) (struct file *file, void *fh, | ||
238 | struct v4l2_chip_ident *chip); | ||
239 | |||
240 | /* For other private ioctls */ | ||
241 | int (*vidioc_default) (struct file *file, void *fh, | ||
242 | int cmd, void *arg); | ||
243 | }; | ||
244 | |||
245 | |||
23 | /* v4l debugging and diagnostics */ | 246 | /* v4l debugging and diagnostics */ |
24 | 247 | ||
25 | /* Debug bitmask flags to be used on V4L2 */ | 248 | /* Debug bitmask flags to be used on V4L2 */ |