diff options
Diffstat (limited to 'drivers/media/video/v4l2-common.c')
-rw-r--r-- | drivers/media/video/v4l2-common.c | 558 |
1 files changed, 555 insertions, 3 deletions
diff --git a/drivers/media/video/v4l2-common.c b/drivers/media/video/v4l2-common.c index cd2c4475525e..95a6e47c99f1 100644 --- a/drivers/media/video/v4l2-common.c +++ b/drivers/media/video/v4l2-common.c | |||
@@ -97,7 +97,7 @@ int v4l2_video_std_construct(struct v4l2_standard *vs, | |||
97 | memset(vs, 0, sizeof(struct v4l2_standard)); | 97 | memset(vs, 0, sizeof(struct v4l2_standard)); |
98 | vs->index = index; | 98 | vs->index = index; |
99 | vs->id = id; | 99 | vs->id = id; |
100 | if (id & (V4L2_STD_NTSC | V4L2_STD_PAL_M)) { | 100 | if (id & V4L2_STD_525_60) { |
101 | vs->frameperiod.numerator = 1001; | 101 | vs->frameperiod.numerator = 1001; |
102 | vs->frameperiod.denominator = 30000; | 102 | vs->frameperiod.denominator = 30000; |
103 | vs->framelines = 525; | 103 | vs->framelines = 525; |
@@ -110,7 +110,6 @@ int v4l2_video_std_construct(struct v4l2_standard *vs, | |||
110 | return 0; | 110 | return 0; |
111 | } | 111 | } |
112 | 112 | ||
113 | |||
114 | /* ----------------------------------------------------------------- */ | 113 | /* ----------------------------------------------------------------- */ |
115 | /* priority handling */ | 114 | /* priority handling */ |
116 | 115 | ||
@@ -171,7 +170,7 @@ int v4l2_prio_check(struct v4l2_prio_state *global, enum v4l2_priority *local) | |||
171 | 170 | ||
172 | 171 | ||
173 | /* ----------------------------------------------------------------- */ | 172 | /* ----------------------------------------------------------------- */ |
174 | /* some arrays for pretty-printing debug messages */ | 173 | /* some arrays for pretty-printing debug messages of enum types */ |
175 | 174 | ||
176 | char *v4l2_field_names[] = { | 175 | char *v4l2_field_names[] = { |
177 | [V4L2_FIELD_ANY] = "any", | 176 | [V4L2_FIELD_ANY] = "any", |
@@ -192,6 +191,14 @@ char *v4l2_type_names[] = { | |||
192 | [V4L2_BUF_TYPE_VBI_OUTPUT] = "vbi-out", | 191 | [V4L2_BUF_TYPE_VBI_OUTPUT] = "vbi-out", |
193 | }; | 192 | }; |
194 | 193 | ||
194 | static char *v4l2_memory_names[] = { | ||
195 | [V4L2_MEMORY_MMAP] = "mmap", | ||
196 | [V4L2_MEMORY_USERPTR] = "userptr", | ||
197 | [V4L2_MEMORY_OVERLAY] = "overlay", | ||
198 | }; | ||
199 | |||
200 | #define prt_names(a,arr) (((a)>=0)&&((a)<ARRAY_SIZE(arr)))?arr[a]:"unknown" | ||
201 | |||
195 | /* ------------------------------------------------------------------ */ | 202 | /* ------------------------------------------------------------------ */ |
196 | /* debug help functions */ | 203 | /* debug help functions */ |
197 | 204 | ||
@@ -324,6 +331,15 @@ static const char *v4l2_int_ioctls[] = { | |||
324 | }; | 331 | }; |
325 | #define V4L2_INT_IOCTLS ARRAY_SIZE(v4l2_int_ioctls) | 332 | #define V4L2_INT_IOCTLS ARRAY_SIZE(v4l2_int_ioctls) |
326 | 333 | ||
334 | static void v4l_print_pix_fmt (char *s, struct v4l2_pix_format *fmt) | ||
335 | { | ||
336 | printk ("%s: width=%d, height=%d, format=%d, field=%s, " | ||
337 | "bytesperline=%d sizeimage=%d, colorspace=%d\n", s, | ||
338 | fmt->width,fmt->height,fmt->pixelformat, | ||
339 | prt_names(fmt->field,v4l2_field_names), | ||
340 | fmt->bytesperline,fmt->sizeimage,fmt->colorspace); | ||
341 | }; | ||
342 | |||
327 | /* Common ioctl debug function. This function can be used by | 343 | /* Common ioctl debug function. This function can be used by |
328 | external ioctl messages as well as internal V4L ioctl */ | 344 | external ioctl messages as well as internal V4L ioctl */ |
329 | void v4l_printk_ioctl(unsigned int cmd) | 345 | void v4l_printk_ioctl(unsigned int cmd) |
@@ -362,6 +378,541 @@ void v4l_printk_ioctl(unsigned int cmd) | |||
362 | } | 378 | } |
363 | } | 379 | } |
364 | 380 | ||
381 | /* Common ioctl debug function. This function can be used by | ||
382 | external ioctl messages as well as internal V4L ioctl and its | ||
383 | arguments */ | ||
384 | void v4l_printk_ioctl_arg(char *s,unsigned int cmd, void *arg) | ||
385 | { | ||
386 | printk(s); | ||
387 | printk(": "); | ||
388 | v4l_printk_ioctl(cmd); | ||
389 | switch (cmd) { | ||
390 | case VIDIOC_INT_G_CHIP_IDENT: | ||
391 | { | ||
392 | enum v4l2_chip_ident *p=arg; | ||
393 | printk ("%s: chip ident=%d\n", s, *p); | ||
394 | break; | ||
395 | } | ||
396 | case VIDIOC_G_PRIORITY: | ||
397 | case VIDIOC_S_PRIORITY: | ||
398 | { | ||
399 | enum v4l2_priority *p=arg; | ||
400 | printk ("%s: priority=%d\n", s, *p); | ||
401 | break; | ||
402 | } | ||
403 | case VIDIOC_INT_S_TUNER_MODE: | ||
404 | { | ||
405 | enum v4l2_tuner_type *p=arg; | ||
406 | printk ("%s: tuner type=%d\n", s, *p); | ||
407 | break; | ||
408 | } | ||
409 | case DECODER_SET_VBI_BYPASS: | ||
410 | case DECODER_ENABLE_OUTPUT: | ||
411 | case DECODER_GET_STATUS: | ||
412 | case DECODER_SET_OUTPUT: | ||
413 | case DECODER_SET_INPUT: | ||
414 | case DECODER_SET_GPIO: | ||
415 | case DECODER_SET_NORM: | ||
416 | case VIDIOCCAPTURE: | ||
417 | case VIDIOCSYNC: | ||
418 | case VIDIOCSWRITEMODE: | ||
419 | case TUNER_SET_TYPE_ADDR: | ||
420 | case TUNER_SET_STANDBY: | ||
421 | case TDA9887_SET_CONFIG: | ||
422 | case AUDC_SET_INPUT: | ||
423 | case VIDIOC_OVERLAY_OLD: | ||
424 | case VIDIOC_STREAMOFF: | ||
425 | case VIDIOC_G_OUTPUT: | ||
426 | case VIDIOC_S_OUTPUT: | ||
427 | case VIDIOC_STREAMON: | ||
428 | case VIDIOC_G_INPUT: | ||
429 | case VIDIOC_OVERLAY: | ||
430 | case VIDIOC_S_INPUT: | ||
431 | { | ||
432 | int *p=arg; | ||
433 | printk ("%s: value=%d\n", s, *p); | ||
434 | break; | ||
435 | } | ||
436 | case MSP_SET_MATRIX: | ||
437 | { | ||
438 | struct msp_matrix *p=arg; | ||
439 | printk ("%s: input=%d, output=%d\n", s, p->input, p->output); | ||
440 | break; | ||
441 | } | ||
442 | case VIDIOC_G_AUDIO: | ||
443 | case VIDIOC_S_AUDIO: | ||
444 | case VIDIOC_ENUMAUDIO: | ||
445 | case VIDIOC_G_AUDIO_OLD: | ||
446 | { | ||
447 | struct v4l2_audio *p=arg; | ||
448 | |||
449 | printk ("%s: index=%d, name=%s, capability=%d, mode=%d\n", | ||
450 | s,p->index, p->name,p->capability, p->mode); | ||
451 | break; | ||
452 | } | ||
453 | case VIDIOC_G_AUDOUT: | ||
454 | case VIDIOC_S_AUDOUT: | ||
455 | case VIDIOC_ENUMAUDOUT: | ||
456 | case VIDIOC_G_AUDOUT_OLD: | ||
457 | { | ||
458 | struct v4l2_audioout *p=arg; | ||
459 | printk ("%s: index=%d, name=%s, capability=%d, mode=%d\n", s, | ||
460 | p->index, p->name, p->capability,p->mode); | ||
461 | break; | ||
462 | } | ||
463 | case VIDIOC_QBUF: | ||
464 | case VIDIOC_DQBUF: | ||
465 | case VIDIOC_QUERYBUF: | ||
466 | { | ||
467 | struct v4l2_buffer *p=arg; | ||
468 | struct v4l2_timecode *tc=&p->timecode; | ||
469 | printk ("%s: %02ld:%02d:%02d.%08ld index=%d, type=%s, " | ||
470 | "bytesused=%d, flags=0x%08d, " | ||
471 | "field=%0d, sequence=%d, memory=%s, offset/userptr=0x%08lx\n", | ||
472 | s, | ||
473 | (p->timestamp.tv_sec/3600), | ||
474 | (int)(p->timestamp.tv_sec/60)%60, | ||
475 | (int)(p->timestamp.tv_sec%60), | ||
476 | p->timestamp.tv_usec, | ||
477 | p->index, | ||
478 | prt_names(p->type,v4l2_type_names), | ||
479 | p->bytesused,p->flags, | ||
480 | p->field,p->sequence, | ||
481 | prt_names(p->memory,v4l2_memory_names), | ||
482 | p->m.userptr); | ||
483 | printk ("%s: timecode= %02d:%02d:%02d type=%d, " | ||
484 | "flags=0x%08d, frames=%d, userbits=0x%08x", | ||
485 | s,tc->hours,tc->minutes,tc->seconds, | ||
486 | tc->type, tc->flags, tc->frames, (__u32) tc->userbits); | ||
487 | break; | ||
488 | } | ||
489 | case VIDIOC_QUERYCAP: | ||
490 | { | ||
491 | struct v4l2_capability *p=arg; | ||
492 | printk ("%s: driver=%s, card=%s, bus=%s, version=%d, " | ||
493 | "capabilities=%d\n", s, | ||
494 | p->driver,p->card,p->bus_info, | ||
495 | p->version, | ||
496 | p->capabilities); | ||
497 | break; | ||
498 | } | ||
499 | case VIDIOC_G_CTRL: | ||
500 | case VIDIOC_S_CTRL: | ||
501 | case VIDIOC_S_CTRL_OLD: | ||
502 | { | ||
503 | struct v4l2_control *p=arg; | ||
504 | printk ("%s: id=%d, value=%d\n", s, p->id, p->value); | ||
505 | break; | ||
506 | } | ||
507 | case VIDIOC_G_CROP: | ||
508 | case VIDIOC_S_CROP: | ||
509 | { | ||
510 | struct v4l2_crop *p=arg; | ||
511 | /*FIXME: Should also show rect structs */ | ||
512 | printk ("%s: type=%d\n", s, p->type); | ||
513 | break; | ||
514 | } | ||
515 | case VIDIOC_CROPCAP: | ||
516 | case VIDIOC_CROPCAP_OLD: | ||
517 | { | ||
518 | struct v4l2_cropcap *p=arg; | ||
519 | /*FIXME: Should also show rect structs */ | ||
520 | printk ("%s: type=%d\n", s, p->type); | ||
521 | break; | ||
522 | } | ||
523 | case VIDIOC_INT_DECODE_VBI_LINE: | ||
524 | { | ||
525 | struct v4l2_decode_vbi_line *p=arg; | ||
526 | printk ("%s: is_second_field=%d, ptr=0x%08lx, line=%d, " | ||
527 | "type=%d\n", s, | ||
528 | p->is_second_field,(unsigned long)p->p,p->line,p->type); | ||
529 | break; | ||
530 | } | ||
531 | case VIDIOC_ENUM_FMT: | ||
532 | { | ||
533 | struct v4l2_fmtdesc *p=arg; | ||
534 | printk ("%s: index=%d, type=%d, flags=%d, description=%s," | ||
535 | " pixelformat=%d\n", s, | ||
536 | p->index, p->type, p->flags,p->description, | ||
537 | p->pixelformat); | ||
538 | |||
539 | break; | ||
540 | } | ||
541 | case VIDIOC_G_FMT: | ||
542 | case VIDIOC_S_FMT: | ||
543 | case VIDIOC_TRY_FMT: | ||
544 | { | ||
545 | struct v4l2_format *p=arg; | ||
546 | printk ("%s: type=%s\n", s, | ||
547 | prt_names(p->type,v4l2_type_names)); | ||
548 | switch (p->type) { | ||
549 | case V4L2_BUF_TYPE_VIDEO_CAPTURE: | ||
550 | v4l_print_pix_fmt (s, &p->fmt.pix); | ||
551 | break; | ||
552 | default: | ||
553 | break; | ||
554 | } | ||
555 | } | ||
556 | case VIDIOC_G_FBUF: | ||
557 | case VIDIOC_S_FBUF: | ||
558 | { | ||
559 | struct v4l2_framebuffer *p=arg; | ||
560 | printk ("%s: capability=%d, flags=%d, base=0x%08lx\n", s, | ||
561 | p->capability,p->flags, (unsigned long)p->base); | ||
562 | v4l_print_pix_fmt (s, &p->fmt); | ||
563 | break; | ||
564 | } | ||
565 | case VIDIOC_G_FREQUENCY: | ||
566 | case VIDIOC_S_FREQUENCY: | ||
567 | { | ||
568 | struct v4l2_frequency *p=arg; | ||
569 | printk ("%s: tuner=%d, type=%d, frequency=%d\n", s, | ||
570 | p->tuner,p->type,p->frequency); | ||
571 | break; | ||
572 | } | ||
573 | case VIDIOC_ENUMINPUT: | ||
574 | { | ||
575 | struct v4l2_input *p=arg; | ||
576 | printk ("%s: index=%d, name=%s, type=%d, audioset=%d, " | ||
577 | "tuner=%d, std=%lld, status=%d\n", s, | ||
578 | p->index,p->name,p->type,p->audioset, | ||
579 | p->tuner,p->std, | ||
580 | p->status); | ||
581 | break; | ||
582 | } | ||
583 | case VIDIOC_G_JPEGCOMP: | ||
584 | case VIDIOC_S_JPEGCOMP: | ||
585 | { | ||
586 | struct v4l2_jpegcompression *p=arg; | ||
587 | printk ("%s: quality=%d, APPn=%d, APP_len=%d, COM_len=%d," | ||
588 | " jpeg_markers=%d\n", s, | ||
589 | p->quality,p->APPn,p->APP_len, | ||
590 | p->COM_len,p->jpeg_markers); | ||
591 | break; | ||
592 | } | ||
593 | case VIDIOC_G_MODULATOR: | ||
594 | case VIDIOC_S_MODULATOR: | ||
595 | { | ||
596 | struct v4l2_modulator *p=arg; | ||
597 | printk ("%s: index=%d, name=%s, capability=%d, rangelow=%d," | ||
598 | " rangehigh=%d, txsubchans=%d\n", s, | ||
599 | p->index, p->name,p->capability,p->rangelow, | ||
600 | p->rangehigh,p->txsubchans); | ||
601 | break; | ||
602 | } | ||
603 | case VIDIOC_G_MPEGCOMP: | ||
604 | case VIDIOC_S_MPEGCOMP: | ||
605 | { | ||
606 | struct v4l2_mpeg_compression *p=arg; | ||
607 | /*FIXME: Several fields not shown */ | ||
608 | printk ("%s: ts_pid_pmt=%d, ts_pid_audio=%d, ts_pid_video=%d, " | ||
609 | "ts_pid_pcr=%d, ps_size=%d, au_sample_rate=%d, " | ||
610 | "au_pesid=%c, vi_frame_rate=%d, vi_frames_per_gop=%d, " | ||
611 | "vi_bframes_count=%d, vi_pesid=%c\n", s, | ||
612 | p->ts_pid_pmt,p->ts_pid_audio, p->ts_pid_video, | ||
613 | p->ts_pid_pcr, p->ps_size, p->au_sample_rate, | ||
614 | p->au_pesid, p->vi_frame_rate, | ||
615 | p->vi_frames_per_gop, p->vi_bframes_count, | ||
616 | p->vi_pesid); | ||
617 | break; | ||
618 | } | ||
619 | case VIDIOC_ENUMOUTPUT: | ||
620 | { | ||
621 | struct v4l2_output *p=arg; | ||
622 | printk ("%s: index=%d, name=%s,type=%d, audioset=%d, " | ||
623 | "modulator=%d, std=%lld\n", | ||
624 | s,p->index,p->name,p->type,p->audioset, | ||
625 | p->modulator,p->std); | ||
626 | break; | ||
627 | } | ||
628 | case VIDIOC_QUERYCTRL: | ||
629 | { | ||
630 | struct v4l2_queryctrl *p=arg; | ||
631 | printk ("%s: id=%d, type=%d, name=%s, min/max=%d/%d," | ||
632 | " step=%d, default=%d, flags=0x%08x\n", s, | ||
633 | p->id,p->type,p->name,p->minimum,p->maximum, | ||
634 | p->step,p->default_value,p->flags); | ||
635 | break; | ||
636 | } | ||
637 | case VIDIOC_QUERYMENU: | ||
638 | { | ||
639 | struct v4l2_querymenu *p=arg; | ||
640 | printk ("%s: id=%d, index=%d, name=%s\n", s, | ||
641 | p->id,p->index,p->name); | ||
642 | break; | ||
643 | } | ||
644 | case VIDIOC_INT_G_REGISTER: | ||
645 | case VIDIOC_INT_S_REGISTER: | ||
646 | { | ||
647 | struct v4l2_register *p=arg; | ||
648 | printk ("%s: i2c_id=%d, reg=%lu, val=%d\n", s, | ||
649 | p->i2c_id,p->reg,p->val); | ||
650 | |||
651 | break; | ||
652 | } | ||
653 | case VIDIOC_REQBUFS: | ||
654 | { | ||
655 | struct v4l2_requestbuffers *p=arg; | ||
656 | printk ("%s: count=%d, type=%s, memory=%s\n", s, | ||
657 | p->count, | ||
658 | prt_names(p->type,v4l2_type_names), | ||
659 | prt_names(p->memory,v4l2_memory_names)); | ||
660 | break; | ||
661 | } | ||
662 | case VIDIOC_INT_S_AUDIO_ROUTING: | ||
663 | case VIDIOC_INT_S_VIDEO_ROUTING: | ||
664 | case VIDIOC_INT_G_AUDIO_ROUTING: | ||
665 | case VIDIOC_INT_G_VIDEO_ROUTING: | ||
666 | { | ||
667 | struct v4l2_routing *p=arg; | ||
668 | printk ("%s: input=%d, output=%d\n", s, p->input, p->output); | ||
669 | break; | ||
670 | } | ||
671 | case VIDIOC_G_SLICED_VBI_CAP: | ||
672 | { | ||
673 | struct v4l2_sliced_vbi_cap *p=arg; | ||
674 | printk ("%s: service_set=%d\n", s, | ||
675 | p->service_set); | ||
676 | break; | ||
677 | } | ||
678 | case VIDIOC_INT_S_VBI_DATA: | ||
679 | case VIDIOC_INT_G_VBI_DATA: | ||
680 | { | ||
681 | struct v4l2_sliced_vbi_data *p=arg; | ||
682 | printk ("%s: id=%d, field=%d, line=%d\n", s, | ||
683 | p->id, p->field, p->line); | ||
684 | break; | ||
685 | } | ||
686 | case VIDIOC_ENUMSTD: | ||
687 | { | ||
688 | struct v4l2_standard *p=arg; | ||
689 | printk ("%s: index=%d, id=%lld, name=%s, fps=%d/%d, framelines=%d\n", s, | ||
690 | p->index, p->id, p->name, | ||
691 | p->frameperiod.numerator, | ||
692 | p->frameperiod.denominator, | ||
693 | p->framelines); | ||
694 | |||
695 | break; | ||
696 | } | ||
697 | case VIDIOC_G_PARM: | ||
698 | case VIDIOC_S_PARM: | ||
699 | case VIDIOC_S_PARM_OLD: | ||
700 | { | ||
701 | struct v4l2_streamparm *p=arg; | ||
702 | printk ("%s: type=%d\n", s, p->type); | ||
703 | |||
704 | break; | ||
705 | } | ||
706 | case VIDIOC_G_TUNER: | ||
707 | case VIDIOC_S_TUNER: | ||
708 | { | ||
709 | struct v4l2_tuner *p=arg; | ||
710 | printk ("%s: index=%d, name=%s, type=%d, capability=%d, " | ||
711 | "rangelow=%d, rangehigh=%d, signal=%d, afc=%d, " | ||
712 | "rxsubchans=%d, audmode=%d\n", s, | ||
713 | p->index, p->name, p->type, | ||
714 | p->capability, p->rangelow,p->rangehigh, | ||
715 | p->rxsubchans, p->audmode, p->signal, | ||
716 | p->afc); | ||
717 | break; | ||
718 | } | ||
719 | case VIDIOCGVBIFMT: | ||
720 | case VIDIOCSVBIFMT: | ||
721 | { | ||
722 | struct vbi_format *p=arg; | ||
723 | printk ("%s: sampling_rate=%d, samples_per_line=%d, " | ||
724 | "sample_format=%d, start=%d/%d, count=%d/%d, flags=%d\n", s, | ||
725 | p->sampling_rate,p->samples_per_line, | ||
726 | p->sample_format,p->start[0],p->start[1], | ||
727 | p->count[0],p->count[1],p->flags); | ||
728 | break; | ||
729 | } | ||
730 | case VIDIOCGAUDIO: | ||
731 | case VIDIOCSAUDIO: | ||
732 | { | ||
733 | struct video_audio *p=arg; | ||
734 | printk ("%s: audio=%d, volume=%d, bass=%d, treble=%d, " | ||
735 | "flags=%d, name=%s, mode=%d, balance=%d, step=%d\n", | ||
736 | s,p->audio,p->volume,p->bass, p->treble, | ||
737 | p->flags,p->name,p->mode,p->balance,p->step); | ||
738 | break; | ||
739 | } | ||
740 | case VIDIOCGFBUF: | ||
741 | case VIDIOCSFBUF: | ||
742 | { | ||
743 | struct video_buffer *p=arg; | ||
744 | printk ("%s: base=%08lx, height=%d, width=%d, depth=%d, " | ||
745 | "bytesperline=%d\n", s, | ||
746 | (unsigned long) p->base, p->height, p->width, | ||
747 | p->depth,p->bytesperline); | ||
748 | break; | ||
749 | } | ||
750 | case VIDIOCGCAP: | ||
751 | { | ||
752 | struct video_capability *p=arg; | ||
753 | printk ("%s: name=%s, type=%d, channels=%d, audios=%d, " | ||
754 | "maxwidth=%d, maxheight=%d, minwidth=%d, minheight=%d\n", | ||
755 | s,p->name,p->type,p->channels,p->audios, | ||
756 | p->maxwidth,p->maxheight,p->minwidth, | ||
757 | p->minheight); | ||
758 | |||
759 | break; | ||
760 | } | ||
761 | case VIDIOCGCAPTURE: | ||
762 | case VIDIOCSCAPTURE: | ||
763 | { | ||
764 | struct video_capture *p=arg; | ||
765 | printk ("%s: x=%d, y=%d, width=%d, height=%d, decimation=%d," | ||
766 | " flags=%d\n", s, | ||
767 | p->x, p->y,p->width, p->height, | ||
768 | p->decimation,p->flags); | ||
769 | break; | ||
770 | } | ||
771 | case VIDIOCGCHAN: | ||
772 | case VIDIOCSCHAN: | ||
773 | { | ||
774 | struct video_channel *p=arg; | ||
775 | printk ("%s: channel=%d, name=%s, tuners=%d, flags=%d, " | ||
776 | "type=%d, norm=%d\n", s, | ||
777 | p->channel,p->name,p->tuners, | ||
778 | p->flags,p->type,p->norm); | ||
779 | |||
780 | break; | ||
781 | } | ||
782 | case VIDIOCSMICROCODE: | ||
783 | { | ||
784 | struct video_code *p=arg; | ||
785 | printk ("%s: loadwhat=%s, datasize=%d\n", s, | ||
786 | p->loadwhat,p->datasize); | ||
787 | break; | ||
788 | } | ||
789 | case DECODER_GET_CAPABILITIES: | ||
790 | { | ||
791 | struct video_decoder_capability *p=arg; | ||
792 | printk ("%s: flags=%d, inputs=%d, outputs=%d\n", s, | ||
793 | p->flags,p->inputs,p->outputs); | ||
794 | break; | ||
795 | } | ||
796 | case DECODER_INIT: | ||
797 | { | ||
798 | struct video_decoder_init *p=arg; | ||
799 | printk ("%s: len=%c\n", s, p->len); | ||
800 | break; | ||
801 | } | ||
802 | case VIDIOCGPLAYINFO: | ||
803 | { | ||
804 | struct video_info *p=arg; | ||
805 | printk ("%s: frame_count=%d, h_size=%d, v_size=%d, " | ||
806 | "smpte_timecode=%d, picture_type=%d, " | ||
807 | "temporal_reference=%d, user_data=%s\n", s, | ||
808 | p->frame_count, p->h_size, | ||
809 | p->v_size, p->smpte_timecode, | ||
810 | p->picture_type, p->temporal_reference, | ||
811 | p->user_data); | ||
812 | break; | ||
813 | } | ||
814 | case VIDIOCKEY: | ||
815 | { | ||
816 | struct video_key *p=arg; | ||
817 | printk ("%s: key=%s, flags=%d\n", s, | ||
818 | p->key, p->flags); | ||
819 | break; | ||
820 | } | ||
821 | case VIDIOCGMBUF: | ||
822 | { | ||
823 | struct video_mbuf *p=arg; | ||
824 | printk ("%s: size=%d, frames=%d, offsets=0x%08lx\n", s, | ||
825 | p->size, | ||
826 | p->frames, | ||
827 | (unsigned long)p->offsets); | ||
828 | break; | ||
829 | } | ||
830 | case VIDIOCMCAPTURE: | ||
831 | { | ||
832 | struct video_mmap *p=arg; | ||
833 | printk ("%s: frame=%d, height=%d, width=%d, format=%d\n", s, | ||
834 | p->frame, | ||
835 | p->height, p->width, | ||
836 | p->format); | ||
837 | break; | ||
838 | } | ||
839 | case VIDIOCGPICT: | ||
840 | case VIDIOCSPICT: | ||
841 | case DECODER_SET_PICTURE: | ||
842 | { | ||
843 | struct video_picture *p=arg; | ||
844 | |||
845 | printk ("%s: brightness=%d, hue=%d, colour=%d, contrast=%d," | ||
846 | " whiteness=%d, depth=%d, palette=%d\n", s, | ||
847 | p->brightness, p->hue, p->colour, | ||
848 | p->contrast, p->whiteness, p->depth, | ||
849 | p->palette); | ||
850 | break; | ||
851 | } | ||
852 | case VIDIOCSPLAYMODE: | ||
853 | { | ||
854 | struct video_play_mode *p=arg; | ||
855 | printk ("%s: mode=%d, p1=%d, p2=%d\n", s, | ||
856 | p->mode,p->p1,p->p2); | ||
857 | break; | ||
858 | } | ||
859 | case VIDIOCGTUNER: | ||
860 | case VIDIOCSTUNER: | ||
861 | { | ||
862 | struct video_tuner *p=arg; | ||
863 | printk ("%s: tuner=%d, name=%s, rangelow=%ld, rangehigh=%ld, " | ||
864 | "flags=%d, mode=%d, signal=%d\n", s, | ||
865 | p->tuner, p->name,p->rangelow, p->rangehigh, | ||
866 | p->flags,p->mode, p->signal); | ||
867 | break; | ||
868 | } | ||
869 | case VIDIOCGUNIT: | ||
870 | { | ||
871 | struct video_unit *p=arg; | ||
872 | printk ("%s: video=%d, vbi=%d, radio=%d, audio=%d, " | ||
873 | "teletext=%d\n", s, | ||
874 | p->video,p->vbi,p->radio,p->audio,p->teletext); | ||
875 | break; | ||
876 | } | ||
877 | case VIDIOCGWIN: | ||
878 | case VIDIOCSWIN: | ||
879 | { | ||
880 | struct video_window *p=arg; | ||
881 | printk ("%s: x=%d, y=%d, width=%d, height=%d, chromakey=%d," | ||
882 | " flags=%d, clipcount=%d\n", s, | ||
883 | p->x, p->y,p->width, p->height, | ||
884 | p->chromakey,p->flags, | ||
885 | p->clipcount); | ||
886 | break; | ||
887 | } | ||
888 | case VIDIOC_INT_AUDIO_CLOCK_FREQ: | ||
889 | case VIDIOC_INT_I2S_CLOCK_FREQ: | ||
890 | case VIDIOC_INT_S_STANDBY: | ||
891 | { | ||
892 | u32 *p=arg; | ||
893 | |||
894 | printk ("%s: value=%d\n", s, *p); | ||
895 | break; | ||
896 | } | ||
897 | case VIDIOCGFREQ: | ||
898 | case VIDIOCSFREQ: | ||
899 | { | ||
900 | unsigned long *p=arg; | ||
901 | printk ("%s: value=%lu\n", s, *p); | ||
902 | break; | ||
903 | } | ||
904 | case VIDIOC_G_STD: | ||
905 | case VIDIOC_S_STD: | ||
906 | case VIDIOC_QUERYSTD: | ||
907 | { | ||
908 | v4l2_std_id *p=arg; | ||
909 | |||
910 | printk ("%s: value=%llu\n", s, *p); | ||
911 | break; | ||
912 | } | ||
913 | } | ||
914 | } | ||
915 | |||
365 | /* ----------------------------------------------------------------- */ | 916 | /* ----------------------------------------------------------------- */ |
366 | 917 | ||
367 | EXPORT_SYMBOL(v4l2_video_std_construct); | 918 | EXPORT_SYMBOL(v4l2_video_std_construct); |
@@ -376,6 +927,7 @@ EXPORT_SYMBOL(v4l2_prio_check); | |||
376 | EXPORT_SYMBOL(v4l2_field_names); | 927 | EXPORT_SYMBOL(v4l2_field_names); |
377 | EXPORT_SYMBOL(v4l2_type_names); | 928 | EXPORT_SYMBOL(v4l2_type_names); |
378 | EXPORT_SYMBOL(v4l_printk_ioctl); | 929 | EXPORT_SYMBOL(v4l_printk_ioctl); |
930 | EXPORT_SYMBOL(v4l_printk_ioctl_arg); | ||
379 | 931 | ||
380 | /* | 932 | /* |
381 | * Local variables: | 933 | * Local variables: |