aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHans Verkuil <hans.verkuil@cisco.com>2012-06-04 04:23:40 -0400
committerMauro Carvalho Chehab <mchehab@redhat.com>2012-07-06 16:16:26 -0400
commit4839e6c2ac7c1a25d285b66240e702bb9b5fdcbf (patch)
treefa2f7cf333d3557d2c9e845155e2e8d41131900e
parentb61097ee1a99b5689f044895470ef44e7cc73c27 (diff)
[media] v4l2-ioctl.c: move a block of code down, no other changes
A block of code is moved down in the code to make later changes easier. Do just the move without other changes to keep the diff readable for the upcoming patch. Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
-rw-r--r--drivers/media/video/v4l2-ioctl.c288
1 files changed, 144 insertions, 144 deletions
diff --git a/drivers/media/video/v4l2-ioctl.c b/drivers/media/video/v4l2-ioctl.c
index d7fa8962d8b3..46fd95327630 100644
--- a/drivers/media/video/v4l2-ioctl.c
+++ b/drivers/media/video/v4l2-ioctl.c
@@ -183,150 +183,6 @@ static const char *v4l2_memory_names[] = {
183/* ------------------------------------------------------------------ */ 183/* ------------------------------------------------------------------ */
184/* debug help functions */ 184/* debug help functions */
185 185
186struct v4l2_ioctl_info {
187 unsigned int ioctl;
188 u16 flags;
189 const char * const name;
190};
191
192/* This control needs a priority check */
193#define INFO_FL_PRIO (1 << 0)
194/* This control can be valid if the filehandle passes a control handler. */
195#define INFO_FL_CTRL (1 << 1)
196
197#define IOCTL_INFO(_ioctl, _flags) [_IOC_NR(_ioctl)] = { \
198 .ioctl = _ioctl, \
199 .flags = _flags, \
200 .name = #_ioctl, \
201}
202
203static struct v4l2_ioctl_info v4l2_ioctls[] = {
204 IOCTL_INFO(VIDIOC_QUERYCAP, 0),
205 IOCTL_INFO(VIDIOC_ENUM_FMT, 0),
206 IOCTL_INFO(VIDIOC_G_FMT, 0),
207 IOCTL_INFO(VIDIOC_S_FMT, INFO_FL_PRIO),
208 IOCTL_INFO(VIDIOC_REQBUFS, INFO_FL_PRIO),
209 IOCTL_INFO(VIDIOC_QUERYBUF, 0),
210 IOCTL_INFO(VIDIOC_G_FBUF, 0),
211 IOCTL_INFO(VIDIOC_S_FBUF, INFO_FL_PRIO),
212 IOCTL_INFO(VIDIOC_OVERLAY, INFO_FL_PRIO),
213 IOCTL_INFO(VIDIOC_QBUF, 0),
214 IOCTL_INFO(VIDIOC_DQBUF, 0),
215 IOCTL_INFO(VIDIOC_STREAMON, INFO_FL_PRIO),
216 IOCTL_INFO(VIDIOC_STREAMOFF, INFO_FL_PRIO),
217 IOCTL_INFO(VIDIOC_G_PARM, 0),
218 IOCTL_INFO(VIDIOC_S_PARM, INFO_FL_PRIO),
219 IOCTL_INFO(VIDIOC_G_STD, 0),
220 IOCTL_INFO(VIDIOC_S_STD, INFO_FL_PRIO),
221 IOCTL_INFO(VIDIOC_ENUMSTD, 0),
222 IOCTL_INFO(VIDIOC_ENUMINPUT, 0),
223 IOCTL_INFO(VIDIOC_G_CTRL, INFO_FL_CTRL),
224 IOCTL_INFO(VIDIOC_S_CTRL, INFO_FL_PRIO | INFO_FL_CTRL),
225 IOCTL_INFO(VIDIOC_G_TUNER, 0),
226 IOCTL_INFO(VIDIOC_S_TUNER, INFO_FL_PRIO),
227 IOCTL_INFO(VIDIOC_G_AUDIO, 0),
228 IOCTL_INFO(VIDIOC_S_AUDIO, INFO_FL_PRIO),
229 IOCTL_INFO(VIDIOC_QUERYCTRL, INFO_FL_CTRL),
230 IOCTL_INFO(VIDIOC_QUERYMENU, INFO_FL_CTRL),
231 IOCTL_INFO(VIDIOC_G_INPUT, 0),
232 IOCTL_INFO(VIDIOC_S_INPUT, INFO_FL_PRIO),
233 IOCTL_INFO(VIDIOC_G_OUTPUT, 0),
234 IOCTL_INFO(VIDIOC_S_OUTPUT, INFO_FL_PRIO),
235 IOCTL_INFO(VIDIOC_ENUMOUTPUT, 0),
236 IOCTL_INFO(VIDIOC_G_AUDOUT, 0),
237 IOCTL_INFO(VIDIOC_S_AUDOUT, INFO_FL_PRIO),
238 IOCTL_INFO(VIDIOC_G_MODULATOR, 0),
239 IOCTL_INFO(VIDIOC_S_MODULATOR, INFO_FL_PRIO),
240 IOCTL_INFO(VIDIOC_G_FREQUENCY, 0),
241 IOCTL_INFO(VIDIOC_S_FREQUENCY, INFO_FL_PRIO),
242 IOCTL_INFO(VIDIOC_CROPCAP, 0),
243 IOCTL_INFO(VIDIOC_G_CROP, 0),
244 IOCTL_INFO(VIDIOC_S_CROP, INFO_FL_PRIO),
245 IOCTL_INFO(VIDIOC_G_SELECTION, 0),
246 IOCTL_INFO(VIDIOC_S_SELECTION, INFO_FL_PRIO),
247 IOCTL_INFO(VIDIOC_G_JPEGCOMP, 0),
248 IOCTL_INFO(VIDIOC_S_JPEGCOMP, INFO_FL_PRIO),
249 IOCTL_INFO(VIDIOC_QUERYSTD, 0),
250 IOCTL_INFO(VIDIOC_TRY_FMT, 0),
251 IOCTL_INFO(VIDIOC_ENUMAUDIO, 0),
252 IOCTL_INFO(VIDIOC_ENUMAUDOUT, 0),
253 IOCTL_INFO(VIDIOC_G_PRIORITY, 0),
254 IOCTL_INFO(VIDIOC_S_PRIORITY, INFO_FL_PRIO),
255 IOCTL_INFO(VIDIOC_G_SLICED_VBI_CAP, 0),
256 IOCTL_INFO(VIDIOC_LOG_STATUS, 0),
257 IOCTL_INFO(VIDIOC_G_EXT_CTRLS, INFO_FL_CTRL),
258 IOCTL_INFO(VIDIOC_S_EXT_CTRLS, INFO_FL_PRIO | INFO_FL_CTRL),
259 IOCTL_INFO(VIDIOC_TRY_EXT_CTRLS, 0),
260 IOCTL_INFO(VIDIOC_ENUM_FRAMESIZES, 0),
261 IOCTL_INFO(VIDIOC_ENUM_FRAMEINTERVALS, 0),
262 IOCTL_INFO(VIDIOC_G_ENC_INDEX, 0),
263 IOCTL_INFO(VIDIOC_ENCODER_CMD, INFO_FL_PRIO),
264 IOCTL_INFO(VIDIOC_TRY_ENCODER_CMD, 0),
265 IOCTL_INFO(VIDIOC_DECODER_CMD, INFO_FL_PRIO),
266 IOCTL_INFO(VIDIOC_TRY_DECODER_CMD, 0),
267#ifdef CONFIG_VIDEO_ADV_DEBUG
268 IOCTL_INFO(VIDIOC_DBG_S_REGISTER, 0),
269 IOCTL_INFO(VIDIOC_DBG_G_REGISTER, 0),
270#endif
271 IOCTL_INFO(VIDIOC_DBG_G_CHIP_IDENT, 0),
272 IOCTL_INFO(VIDIOC_S_HW_FREQ_SEEK, INFO_FL_PRIO),
273 IOCTL_INFO(VIDIOC_ENUM_DV_PRESETS, 0),
274 IOCTL_INFO(VIDIOC_S_DV_PRESET, INFO_FL_PRIO),
275 IOCTL_INFO(VIDIOC_G_DV_PRESET, 0),
276 IOCTL_INFO(VIDIOC_QUERY_DV_PRESET, 0),
277 IOCTL_INFO(VIDIOC_S_DV_TIMINGS, INFO_FL_PRIO),
278 IOCTL_INFO(VIDIOC_G_DV_TIMINGS, 0),
279 IOCTL_INFO(VIDIOC_DQEVENT, 0),
280 IOCTL_INFO(VIDIOC_SUBSCRIBE_EVENT, 0),
281 IOCTL_INFO(VIDIOC_UNSUBSCRIBE_EVENT, 0),
282 IOCTL_INFO(VIDIOC_CREATE_BUFS, INFO_FL_PRIO),
283 IOCTL_INFO(VIDIOC_PREPARE_BUF, 0),
284 IOCTL_INFO(VIDIOC_ENUM_DV_TIMINGS, 0),
285 IOCTL_INFO(VIDIOC_QUERY_DV_TIMINGS, 0),
286 IOCTL_INFO(VIDIOC_DV_TIMINGS_CAP, 0),
287};
288#define V4L2_IOCTLS ARRAY_SIZE(v4l2_ioctls)
289
290bool v4l2_is_known_ioctl(unsigned int cmd)
291{
292 if (_IOC_NR(cmd) >= V4L2_IOCTLS)
293 return false;
294 return v4l2_ioctls[_IOC_NR(cmd)].ioctl == cmd;
295}
296
297/* Common ioctl debug function. This function can be used by
298 external ioctl messages as well as internal V4L ioctl */
299void v4l_printk_ioctl(unsigned int cmd)
300{
301 char *dir, *type;
302
303 switch (_IOC_TYPE(cmd)) {
304 case 'd':
305 type = "v4l2_int";
306 break;
307 case 'V':
308 if (_IOC_NR(cmd) >= V4L2_IOCTLS) {
309 type = "v4l2";
310 break;
311 }
312 printk("%s", v4l2_ioctls[_IOC_NR(cmd)].name);
313 return;
314 default:
315 type = "unknown";
316 }
317
318 switch (_IOC_DIR(cmd)) {
319 case _IOC_NONE: dir = "--"; break;
320 case _IOC_READ: dir = "r-"; break;
321 case _IOC_WRITE: dir = "-w"; break;
322 case _IOC_READ | _IOC_WRITE: dir = "rw"; break;
323 default: dir = "*ERR*"; break;
324 }
325 printk("%s ioctl '%c', dir=%s, #%d (0x%08x)",
326 type, _IOC_TYPE(cmd), dir, _IOC_NR(cmd), cmd);
327}
328EXPORT_SYMBOL(v4l_printk_ioctl);
329
330static void dbgbuf(unsigned int cmd, struct video_device *vfd, 186static void dbgbuf(unsigned int cmd, struct video_device *vfd,
331 struct v4l2_buffer *p) 187 struct v4l2_buffer *p)
332{ 188{
@@ -536,6 +392,150 @@ static int check_fmt(const struct v4l2_ioctl_ops *ops, enum v4l2_buf_type type)
536 return -EINVAL; 392 return -EINVAL;
537} 393}
538 394
395struct v4l2_ioctl_info {
396 unsigned int ioctl;
397 u16 flags;
398 const char * const name;
399};
400
401/* This control needs a priority check */
402#define INFO_FL_PRIO (1 << 0)
403/* This control can be valid if the filehandle passes a control handler. */
404#define INFO_FL_CTRL (1 << 1)
405
406#define IOCTL_INFO(_ioctl, _flags) [_IOC_NR(_ioctl)] = { \
407 .ioctl = _ioctl, \
408 .flags = _flags, \
409 .name = #_ioctl, \
410}
411
412static struct v4l2_ioctl_info v4l2_ioctls[] = {
413 IOCTL_INFO(VIDIOC_QUERYCAP, 0),
414 IOCTL_INFO(VIDIOC_ENUM_FMT, 0),
415 IOCTL_INFO(VIDIOC_G_FMT, 0),
416 IOCTL_INFO(VIDIOC_S_FMT, INFO_FL_PRIO),
417 IOCTL_INFO(VIDIOC_REQBUFS, INFO_FL_PRIO),
418 IOCTL_INFO(VIDIOC_QUERYBUF, 0),
419 IOCTL_INFO(VIDIOC_G_FBUF, 0),
420 IOCTL_INFO(VIDIOC_S_FBUF, INFO_FL_PRIO),
421 IOCTL_INFO(VIDIOC_OVERLAY, INFO_FL_PRIO),
422 IOCTL_INFO(VIDIOC_QBUF, 0),
423 IOCTL_INFO(VIDIOC_DQBUF, 0),
424 IOCTL_INFO(VIDIOC_STREAMON, INFO_FL_PRIO),
425 IOCTL_INFO(VIDIOC_STREAMOFF, INFO_FL_PRIO),
426 IOCTL_INFO(VIDIOC_G_PARM, 0),
427 IOCTL_INFO(VIDIOC_S_PARM, INFO_FL_PRIO),
428 IOCTL_INFO(VIDIOC_G_STD, 0),
429 IOCTL_INFO(VIDIOC_S_STD, INFO_FL_PRIO),
430 IOCTL_INFO(VIDIOC_ENUMSTD, 0),
431 IOCTL_INFO(VIDIOC_ENUMINPUT, 0),
432 IOCTL_INFO(VIDIOC_G_CTRL, INFO_FL_CTRL),
433 IOCTL_INFO(VIDIOC_S_CTRL, INFO_FL_PRIO | INFO_FL_CTRL),
434 IOCTL_INFO(VIDIOC_G_TUNER, 0),
435 IOCTL_INFO(VIDIOC_S_TUNER, INFO_FL_PRIO),
436 IOCTL_INFO(VIDIOC_G_AUDIO, 0),
437 IOCTL_INFO(VIDIOC_S_AUDIO, INFO_FL_PRIO),
438 IOCTL_INFO(VIDIOC_QUERYCTRL, INFO_FL_CTRL),
439 IOCTL_INFO(VIDIOC_QUERYMENU, INFO_FL_CTRL),
440 IOCTL_INFO(VIDIOC_G_INPUT, 0),
441 IOCTL_INFO(VIDIOC_S_INPUT, INFO_FL_PRIO),
442 IOCTL_INFO(VIDIOC_G_OUTPUT, 0),
443 IOCTL_INFO(VIDIOC_S_OUTPUT, INFO_FL_PRIO),
444 IOCTL_INFO(VIDIOC_ENUMOUTPUT, 0),
445 IOCTL_INFO(VIDIOC_G_AUDOUT, 0),
446 IOCTL_INFO(VIDIOC_S_AUDOUT, INFO_FL_PRIO),
447 IOCTL_INFO(VIDIOC_G_MODULATOR, 0),
448 IOCTL_INFO(VIDIOC_S_MODULATOR, INFO_FL_PRIO),
449 IOCTL_INFO(VIDIOC_G_FREQUENCY, 0),
450 IOCTL_INFO(VIDIOC_S_FREQUENCY, INFO_FL_PRIO),
451 IOCTL_INFO(VIDIOC_CROPCAP, 0),
452 IOCTL_INFO(VIDIOC_G_CROP, 0),
453 IOCTL_INFO(VIDIOC_S_CROP, INFO_FL_PRIO),
454 IOCTL_INFO(VIDIOC_G_SELECTION, 0),
455 IOCTL_INFO(VIDIOC_S_SELECTION, INFO_FL_PRIO),
456 IOCTL_INFO(VIDIOC_G_JPEGCOMP, 0),
457 IOCTL_INFO(VIDIOC_S_JPEGCOMP, INFO_FL_PRIO),
458 IOCTL_INFO(VIDIOC_QUERYSTD, 0),
459 IOCTL_INFO(VIDIOC_TRY_FMT, 0),
460 IOCTL_INFO(VIDIOC_ENUMAUDIO, 0),
461 IOCTL_INFO(VIDIOC_ENUMAUDOUT, 0),
462 IOCTL_INFO(VIDIOC_G_PRIORITY, 0),
463 IOCTL_INFO(VIDIOC_S_PRIORITY, INFO_FL_PRIO),
464 IOCTL_INFO(VIDIOC_G_SLICED_VBI_CAP, 0),
465 IOCTL_INFO(VIDIOC_LOG_STATUS, 0),
466 IOCTL_INFO(VIDIOC_G_EXT_CTRLS, INFO_FL_CTRL),
467 IOCTL_INFO(VIDIOC_S_EXT_CTRLS, INFO_FL_PRIO | INFO_FL_CTRL),
468 IOCTL_INFO(VIDIOC_TRY_EXT_CTRLS, 0),
469 IOCTL_INFO(VIDIOC_ENUM_FRAMESIZES, 0),
470 IOCTL_INFO(VIDIOC_ENUM_FRAMEINTERVALS, 0),
471 IOCTL_INFO(VIDIOC_G_ENC_INDEX, 0),
472 IOCTL_INFO(VIDIOC_ENCODER_CMD, INFO_FL_PRIO),
473 IOCTL_INFO(VIDIOC_TRY_ENCODER_CMD, 0),
474 IOCTL_INFO(VIDIOC_DECODER_CMD, INFO_FL_PRIO),
475 IOCTL_INFO(VIDIOC_TRY_DECODER_CMD, 0),
476#ifdef CONFIG_VIDEO_ADV_DEBUG
477 IOCTL_INFO(VIDIOC_DBG_S_REGISTER, 0),
478 IOCTL_INFO(VIDIOC_DBG_G_REGISTER, 0),
479#endif
480 IOCTL_INFO(VIDIOC_DBG_G_CHIP_IDENT, 0),
481 IOCTL_INFO(VIDIOC_S_HW_FREQ_SEEK, INFO_FL_PRIO),
482 IOCTL_INFO(VIDIOC_ENUM_DV_PRESETS, 0),
483 IOCTL_INFO(VIDIOC_S_DV_PRESET, INFO_FL_PRIO),
484 IOCTL_INFO(VIDIOC_G_DV_PRESET, 0),
485 IOCTL_INFO(VIDIOC_QUERY_DV_PRESET, 0),
486 IOCTL_INFO(VIDIOC_S_DV_TIMINGS, INFO_FL_PRIO),
487 IOCTL_INFO(VIDIOC_G_DV_TIMINGS, 0),
488 IOCTL_INFO(VIDIOC_DQEVENT, 0),
489 IOCTL_INFO(VIDIOC_SUBSCRIBE_EVENT, 0),
490 IOCTL_INFO(VIDIOC_UNSUBSCRIBE_EVENT, 0),
491 IOCTL_INFO(VIDIOC_CREATE_BUFS, INFO_FL_PRIO),
492 IOCTL_INFO(VIDIOC_PREPARE_BUF, 0),
493 IOCTL_INFO(VIDIOC_ENUM_DV_TIMINGS, 0),
494 IOCTL_INFO(VIDIOC_QUERY_DV_TIMINGS, 0),
495 IOCTL_INFO(VIDIOC_DV_TIMINGS_CAP, 0),
496};
497#define V4L2_IOCTLS ARRAY_SIZE(v4l2_ioctls)
498
499bool v4l2_is_known_ioctl(unsigned int cmd)
500{
501 if (_IOC_NR(cmd) >= V4L2_IOCTLS)
502 return false;
503 return v4l2_ioctls[_IOC_NR(cmd)].ioctl == cmd;
504}
505
506/* Common ioctl debug function. This function can be used by
507 external ioctl messages as well as internal V4L ioctl */
508void v4l_printk_ioctl(unsigned int cmd)
509{
510 char *dir, *type;
511
512 switch (_IOC_TYPE(cmd)) {
513 case 'd':
514 type = "v4l2_int";
515 break;
516 case 'V':
517 if (_IOC_NR(cmd) >= V4L2_IOCTLS) {
518 type = "v4l2";
519 break;
520 }
521 printk("%s", v4l2_ioctls[_IOC_NR(cmd)].name);
522 return;
523 default:
524 type = "unknown";
525 }
526
527 switch (_IOC_DIR(cmd)) {
528 case _IOC_NONE: dir = "--"; break;
529 case _IOC_READ: dir = "r-"; break;
530 case _IOC_WRITE: dir = "-w"; break;
531 case _IOC_READ | _IOC_WRITE: dir = "rw"; break;
532 default: dir = "*ERR*"; break;
533 }
534 printk("%s ioctl '%c', dir=%s, #%d (0x%08x)",
535 type, _IOC_TYPE(cmd), dir, _IOC_NR(cmd), cmd);
536}
537EXPORT_SYMBOL(v4l_printk_ioctl);
538
539static long __video_do_ioctl(struct file *file, 539static long __video_do_ioctl(struct file *file,
540 unsigned int cmd, void *arg) 540 unsigned int cmd, void *arg)
541{ 541{