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-dev.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-dev.h')
-rw-r--r-- | include/media/v4l2-dev.h | 222 |
1 files changed, 3 insertions, 219 deletions
diff --git a/include/media/v4l2-dev.h b/include/media/v4l2-dev.h index ad62d322e178..d9149cd25b31 100644 --- a/include/media/v4l2-dev.h +++ b/include/media/v4l2-dev.h | |||
@@ -39,6 +39,8 @@ | |||
39 | #define VFL_TYPE_RADIO 2 | 39 | #define VFL_TYPE_RADIO 2 |
40 | #define VFL_TYPE_VTX 3 | 40 | #define VFL_TYPE_VTX 3 |
41 | 41 | ||
42 | struct v4l2_ioctl_callbacks; | ||
43 | |||
42 | /* | 44 | /* |
43 | * Newer version of video_device, handled by videodev2.c | 45 | * Newer version of video_device, handled by videodev2.c |
44 | * This version moves redundant code from video device code to | 46 | * This version moves redundant code from video device code to |
@@ -72,225 +74,7 @@ struct video_device | |||
72 | void (*release)(struct video_device *vfd); | 74 | void (*release)(struct video_device *vfd); |
73 | 75 | ||
74 | /* ioctl callbacks */ | 76 | /* ioctl callbacks */ |
75 | 77 | const struct v4l2_ioctl_ops *ioctl_ops; | |
76 | /* VIDIOC_QUERYCAP handler */ | ||
77 | int (*vidioc_querycap)(struct file *file, void *fh, struct v4l2_capability *cap); | ||
78 | |||
79 | /* Priority handling */ | ||
80 | int (*vidioc_g_priority) (struct file *file, void *fh, | ||
81 | enum v4l2_priority *p); | ||
82 | int (*vidioc_s_priority) (struct file *file, void *fh, | ||
83 | enum v4l2_priority p); | ||
84 | |||
85 | /* VIDIOC_ENUM_FMT handlers */ | ||
86 | int (*vidioc_enum_fmt_vid_cap) (struct file *file, void *fh, | ||
87 | struct v4l2_fmtdesc *f); | ||
88 | int (*vidioc_enum_fmt_vid_overlay) (struct file *file, void *fh, | ||
89 | struct v4l2_fmtdesc *f); | ||
90 | int (*vidioc_enum_fmt_vid_out) (struct file *file, void *fh, | ||
91 | struct v4l2_fmtdesc *f); | ||
92 | #if 1 | ||
93 | /* deprecated, will be removed in 2.6.28 */ | ||
94 | int (*vidioc_enum_fmt_vbi_cap) (struct file *file, void *fh, | ||
95 | struct v4l2_fmtdesc *f); | ||
96 | #endif | ||
97 | int (*vidioc_enum_fmt_type_private)(struct file *file, void *fh, | ||
98 | struct v4l2_fmtdesc *f); | ||
99 | |||
100 | /* VIDIOC_G_FMT handlers */ | ||
101 | int (*vidioc_g_fmt_vid_cap) (struct file *file, void *fh, | ||
102 | struct v4l2_format *f); | ||
103 | int (*vidioc_g_fmt_vid_overlay)(struct file *file, void *fh, | ||
104 | struct v4l2_format *f); | ||
105 | int (*vidioc_g_fmt_vid_out) (struct file *file, void *fh, | ||
106 | struct v4l2_format *f); | ||
107 | int (*vidioc_g_fmt_vid_out_overlay)(struct file *file, void *fh, | ||
108 | struct v4l2_format *f); | ||
109 | int (*vidioc_g_fmt_vbi_cap) (struct file *file, void *fh, | ||
110 | struct v4l2_format *f); | ||
111 | int (*vidioc_g_fmt_vbi_out) (struct file *file, void *fh, | ||
112 | struct v4l2_format *f); | ||
113 | int (*vidioc_g_fmt_sliced_vbi_cap)(struct file *file, void *fh, | ||
114 | struct v4l2_format *f); | ||
115 | int (*vidioc_g_fmt_sliced_vbi_out)(struct file *file, void *fh, | ||
116 | struct v4l2_format *f); | ||
117 | int (*vidioc_g_fmt_type_private)(struct file *file, void *fh, | ||
118 | struct v4l2_format *f); | ||
119 | |||
120 | /* VIDIOC_S_FMT handlers */ | ||
121 | int (*vidioc_s_fmt_vid_cap) (struct file *file, void *fh, | ||
122 | struct v4l2_format *f); | ||
123 | int (*vidioc_s_fmt_vid_overlay)(struct file *file, void *fh, | ||
124 | struct v4l2_format *f); | ||
125 | int (*vidioc_s_fmt_vid_out) (struct file *file, void *fh, | ||
126 | struct v4l2_format *f); | ||
127 | int (*vidioc_s_fmt_vid_out_overlay)(struct file *file, void *fh, | ||
128 | struct v4l2_format *f); | ||
129 | int (*vidioc_s_fmt_vbi_cap) (struct file *file, void *fh, | ||
130 | struct v4l2_format *f); | ||
131 | int (*vidioc_s_fmt_vbi_out) (struct file *file, void *fh, | ||
132 | struct v4l2_format *f); | ||
133 | int (*vidioc_s_fmt_sliced_vbi_cap)(struct file *file, void *fh, | ||
134 | struct v4l2_format *f); | ||
135 | int (*vidioc_s_fmt_sliced_vbi_out)(struct file *file, void *fh, | ||
136 | struct v4l2_format *f); | ||
137 | int (*vidioc_s_fmt_type_private)(struct file *file, void *fh, | ||
138 | struct v4l2_format *f); | ||
139 | |||
140 | /* VIDIOC_TRY_FMT handlers */ | ||
141 | int (*vidioc_try_fmt_vid_cap) (struct file *file, void *fh, | ||
142 | struct v4l2_format *f); | ||
143 | int (*vidioc_try_fmt_vid_overlay)(struct file *file, void *fh, | ||
144 | struct v4l2_format *f); | ||
145 | int (*vidioc_try_fmt_vid_out) (struct file *file, void *fh, | ||
146 | struct v4l2_format *f); | ||
147 | int (*vidioc_try_fmt_vid_out_overlay)(struct file *file, void *fh, | ||
148 | struct v4l2_format *f); | ||
149 | int (*vidioc_try_fmt_vbi_cap) (struct file *file, void *fh, | ||
150 | struct v4l2_format *f); | ||
151 | int (*vidioc_try_fmt_vbi_out) (struct file *file, void *fh, | ||
152 | struct v4l2_format *f); | ||
153 | int (*vidioc_try_fmt_sliced_vbi_cap)(struct file *file, void *fh, | ||
154 | struct v4l2_format *f); | ||
155 | int (*vidioc_try_fmt_sliced_vbi_out)(struct file *file, void *fh, | ||
156 | struct v4l2_format *f); | ||
157 | int (*vidioc_try_fmt_type_private)(struct file *file, void *fh, | ||
158 | struct v4l2_format *f); | ||
159 | |||
160 | /* Buffer handlers */ | ||
161 | int (*vidioc_reqbufs) (struct file *file, void *fh, struct v4l2_requestbuffers *b); | ||
162 | int (*vidioc_querybuf)(struct file *file, void *fh, struct v4l2_buffer *b); | ||
163 | int (*vidioc_qbuf) (struct file *file, void *fh, struct v4l2_buffer *b); | ||
164 | int (*vidioc_dqbuf) (struct file *file, void *fh, struct v4l2_buffer *b); | ||
165 | |||
166 | |||
167 | int (*vidioc_overlay) (struct file *file, void *fh, unsigned int i); | ||
168 | #ifdef CONFIG_VIDEO_V4L1_COMPAT | ||
169 | /* buffer type is struct vidio_mbuf * */ | ||
170 | int (*vidiocgmbuf) (struct file *file, void *fh, struct video_mbuf *p); | ||
171 | #endif | ||
172 | int (*vidioc_g_fbuf) (struct file *file, void *fh, | ||
173 | struct v4l2_framebuffer *a); | ||
174 | int (*vidioc_s_fbuf) (struct file *file, void *fh, | ||
175 | struct v4l2_framebuffer *a); | ||
176 | |||
177 | /* Stream on/off */ | ||
178 | int (*vidioc_streamon) (struct file *file, void *fh, enum v4l2_buf_type i); | ||
179 | int (*vidioc_streamoff)(struct file *file, void *fh, enum v4l2_buf_type i); | ||
180 | |||
181 | /* Standard handling | ||
182 | ENUMSTD is handled by videodev.c | ||
183 | */ | ||
184 | int (*vidioc_g_std) (struct file *file, void *fh, v4l2_std_id *norm); | ||
185 | int (*vidioc_s_std) (struct file *file, void *fh, v4l2_std_id *norm); | ||
186 | int (*vidioc_querystd) (struct file *file, void *fh, v4l2_std_id *a); | ||
187 | |||
188 | /* Input handling */ | ||
189 | int (*vidioc_enum_input)(struct file *file, void *fh, | ||
190 | struct v4l2_input *inp); | ||
191 | int (*vidioc_g_input) (struct file *file, void *fh, unsigned int *i); | ||
192 | int (*vidioc_s_input) (struct file *file, void *fh, unsigned int i); | ||
193 | |||
194 | /* Output handling */ | ||
195 | int (*vidioc_enum_output) (struct file *file, void *fh, | ||
196 | struct v4l2_output *a); | ||
197 | int (*vidioc_g_output) (struct file *file, void *fh, unsigned int *i); | ||
198 | int (*vidioc_s_output) (struct file *file, void *fh, unsigned int i); | ||
199 | |||
200 | /* Control handling */ | ||
201 | int (*vidioc_queryctrl) (struct file *file, void *fh, | ||
202 | struct v4l2_queryctrl *a); | ||
203 | int (*vidioc_g_ctrl) (struct file *file, void *fh, | ||
204 | struct v4l2_control *a); | ||
205 | int (*vidioc_s_ctrl) (struct file *file, void *fh, | ||
206 | struct v4l2_control *a); | ||
207 | int (*vidioc_g_ext_ctrls) (struct file *file, void *fh, | ||
208 | struct v4l2_ext_controls *a); | ||
209 | int (*vidioc_s_ext_ctrls) (struct file *file, void *fh, | ||
210 | struct v4l2_ext_controls *a); | ||
211 | int (*vidioc_try_ext_ctrls) (struct file *file, void *fh, | ||
212 | struct v4l2_ext_controls *a); | ||
213 | int (*vidioc_querymenu) (struct file *file, void *fh, | ||
214 | struct v4l2_querymenu *a); | ||
215 | |||
216 | /* Audio ioctls */ | ||
217 | int (*vidioc_enumaudio) (struct file *file, void *fh, | ||
218 | struct v4l2_audio *a); | ||
219 | int (*vidioc_g_audio) (struct file *file, void *fh, | ||
220 | struct v4l2_audio *a); | ||
221 | int (*vidioc_s_audio) (struct file *file, void *fh, | ||
222 | struct v4l2_audio *a); | ||
223 | |||
224 | /* Audio out ioctls */ | ||
225 | int (*vidioc_enumaudout) (struct file *file, void *fh, | ||
226 | struct v4l2_audioout *a); | ||
227 | int (*vidioc_g_audout) (struct file *file, void *fh, | ||
228 | struct v4l2_audioout *a); | ||
229 | int (*vidioc_s_audout) (struct file *file, void *fh, | ||
230 | struct v4l2_audioout *a); | ||
231 | int (*vidioc_g_modulator) (struct file *file, void *fh, | ||
232 | struct v4l2_modulator *a); | ||
233 | int (*vidioc_s_modulator) (struct file *file, void *fh, | ||
234 | struct v4l2_modulator *a); | ||
235 | /* Crop ioctls */ | ||
236 | int (*vidioc_cropcap) (struct file *file, void *fh, | ||
237 | struct v4l2_cropcap *a); | ||
238 | int (*vidioc_g_crop) (struct file *file, void *fh, | ||
239 | struct v4l2_crop *a); | ||
240 | int (*vidioc_s_crop) (struct file *file, void *fh, | ||
241 | struct v4l2_crop *a); | ||
242 | /* Compression ioctls */ | ||
243 | int (*vidioc_g_jpegcomp) (struct file *file, void *fh, | ||
244 | struct v4l2_jpegcompression *a); | ||
245 | int (*vidioc_s_jpegcomp) (struct file *file, void *fh, | ||
246 | struct v4l2_jpegcompression *a); | ||
247 | int (*vidioc_g_enc_index) (struct file *file, void *fh, | ||
248 | struct v4l2_enc_idx *a); | ||
249 | int (*vidioc_encoder_cmd) (struct file *file, void *fh, | ||
250 | struct v4l2_encoder_cmd *a); | ||
251 | int (*vidioc_try_encoder_cmd) (struct file *file, void *fh, | ||
252 | struct v4l2_encoder_cmd *a); | ||
253 | |||
254 | /* Stream type-dependent parameter ioctls */ | ||
255 | int (*vidioc_g_parm) (struct file *file, void *fh, | ||
256 | struct v4l2_streamparm *a); | ||
257 | int (*vidioc_s_parm) (struct file *file, void *fh, | ||
258 | struct v4l2_streamparm *a); | ||
259 | |||
260 | /* Tuner ioctls */ | ||
261 | int (*vidioc_g_tuner) (struct file *file, void *fh, | ||
262 | struct v4l2_tuner *a); | ||
263 | int (*vidioc_s_tuner) (struct file *file, void *fh, | ||
264 | struct v4l2_tuner *a); | ||
265 | int (*vidioc_g_frequency) (struct file *file, void *fh, | ||
266 | struct v4l2_frequency *a); | ||
267 | int (*vidioc_s_frequency) (struct file *file, void *fh, | ||
268 | struct v4l2_frequency *a); | ||
269 | |||
270 | /* Sliced VBI cap */ | ||
271 | int (*vidioc_g_sliced_vbi_cap) (struct file *file, void *fh, | ||
272 | struct v4l2_sliced_vbi_cap *a); | ||
273 | |||
274 | /* Log status ioctl */ | ||
275 | int (*vidioc_log_status) (struct file *file, void *fh); | ||
276 | |||
277 | int (*vidioc_s_hw_freq_seek) (struct file *file, void *fh, | ||
278 | struct v4l2_hw_freq_seek *a); | ||
279 | |||
280 | /* Debugging ioctls */ | ||
281 | #ifdef CONFIG_VIDEO_ADV_DEBUG | ||
282 | int (*vidioc_g_register) (struct file *file, void *fh, | ||
283 | struct v4l2_register *reg); | ||
284 | int (*vidioc_s_register) (struct file *file, void *fh, | ||
285 | struct v4l2_register *reg); | ||
286 | #endif | ||
287 | int (*vidioc_g_chip_ident) (struct file *file, void *fh, | ||
288 | struct v4l2_chip_ident *chip); | ||
289 | |||
290 | /* For other private ioctls */ | ||
291 | int (*vidioc_default) (struct file *file, void *fh, | ||
292 | int cmd, void *arg); | ||
293 | |||
294 | 78 | ||
295 | #ifdef OBSOLETE_OWNER /* to be removed soon */ | 79 | #ifdef OBSOLETE_OWNER /* to be removed soon */ |
296 | /* obsolete -- fops->owner is used instead */ | 80 | /* obsolete -- fops->owner is used instead */ |