diff options
author | Hans Verkuil <hans.verkuil@cisco.com> | 2012-09-14 06:06:08 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2012-09-26 13:52:07 -0400 |
commit | 90d0fc4985e72c1d09af2078d9e84454b43495f0 (patch) | |
tree | 7d564c70576f46eb623f0d6cb5d69ff53beb08ca /drivers/media/v4l2-core | |
parent | 4b20259fa642d6f7a2dabef0b3adc14ca9dadbde (diff) |
[media] v4l2-dev: reorder checks into blocks of ioctls with similar properties
This makes it easier to read and also ties in more closely with the
profile concept.
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media/v4l2-core')
-rw-r--r-- | drivers/media/v4l2-core/v4l2-dev.c | 156 |
1 files changed, 74 insertions, 82 deletions
diff --git a/drivers/media/v4l2-core/v4l2-dev.c b/drivers/media/v4l2-core/v4l2-dev.c index b437daa1f7d6..a2df842e5100 100644 --- a/drivers/media/v4l2-core/v4l2-dev.c +++ b/drivers/media/v4l2-core/v4l2-dev.c | |||
@@ -559,6 +559,8 @@ static void determine_valid_ioctls(struct video_device *vdev) | |||
559 | 559 | ||
560 | bitmap_zero(valid_ioctls, BASE_VIDIOC_PRIVATE); | 560 | bitmap_zero(valid_ioctls, BASE_VIDIOC_PRIVATE); |
561 | 561 | ||
562 | /* vfl_type and vfl_dir independent ioctls */ | ||
563 | |||
562 | SET_VALID_IOCTL(ops, VIDIOC_QUERYCAP, vidioc_querycap); | 564 | SET_VALID_IOCTL(ops, VIDIOC_QUERYCAP, vidioc_querycap); |
563 | if (ops->vidioc_g_priority || | 565 | if (ops->vidioc_g_priority || |
564 | test_bit(V4L2_FL_USE_FH_PRIO, &vdev->flags)) | 566 | test_bit(V4L2_FL_USE_FH_PRIO, &vdev->flags)) |
@@ -566,7 +568,49 @@ static void determine_valid_ioctls(struct video_device *vdev) | |||
566 | if (ops->vidioc_s_priority || | 568 | if (ops->vidioc_s_priority || |
567 | test_bit(V4L2_FL_USE_FH_PRIO, &vdev->flags)) | 569 | test_bit(V4L2_FL_USE_FH_PRIO, &vdev->flags)) |
568 | set_bit(_IOC_NR(VIDIOC_S_PRIORITY), valid_ioctls); | 570 | set_bit(_IOC_NR(VIDIOC_S_PRIORITY), valid_ioctls); |
571 | SET_VALID_IOCTL(ops, VIDIOC_REQBUFS, vidioc_reqbufs); | ||
572 | SET_VALID_IOCTL(ops, VIDIOC_QUERYBUF, vidioc_querybuf); | ||
573 | SET_VALID_IOCTL(ops, VIDIOC_QBUF, vidioc_qbuf); | ||
574 | SET_VALID_IOCTL(ops, VIDIOC_DQBUF, vidioc_dqbuf); | ||
575 | SET_VALID_IOCTL(ops, VIDIOC_STREAMON, vidioc_streamon); | ||
576 | SET_VALID_IOCTL(ops, VIDIOC_STREAMOFF, vidioc_streamoff); | ||
577 | /* Note: the control handler can also be passed through the filehandle, | ||
578 | and that can't be tested here. If the bit for these control ioctls | ||
579 | is set, then the ioctl is valid. But if it is 0, then it can still | ||
580 | be valid if the filehandle passed the control handler. */ | ||
581 | if (vdev->ctrl_handler || ops->vidioc_queryctrl) | ||
582 | set_bit(_IOC_NR(VIDIOC_QUERYCTRL), valid_ioctls); | ||
583 | if (vdev->ctrl_handler || ops->vidioc_g_ctrl || ops->vidioc_g_ext_ctrls) | ||
584 | set_bit(_IOC_NR(VIDIOC_G_CTRL), valid_ioctls); | ||
585 | if (vdev->ctrl_handler || ops->vidioc_s_ctrl || ops->vidioc_s_ext_ctrls) | ||
586 | set_bit(_IOC_NR(VIDIOC_S_CTRL), valid_ioctls); | ||
587 | if (vdev->ctrl_handler || ops->vidioc_g_ext_ctrls) | ||
588 | set_bit(_IOC_NR(VIDIOC_G_EXT_CTRLS), valid_ioctls); | ||
589 | if (vdev->ctrl_handler || ops->vidioc_s_ext_ctrls) | ||
590 | set_bit(_IOC_NR(VIDIOC_S_EXT_CTRLS), valid_ioctls); | ||
591 | if (vdev->ctrl_handler || ops->vidioc_try_ext_ctrls) | ||
592 | set_bit(_IOC_NR(VIDIOC_TRY_EXT_CTRLS), valid_ioctls); | ||
593 | if (vdev->ctrl_handler || ops->vidioc_querymenu) | ||
594 | set_bit(_IOC_NR(VIDIOC_QUERYMENU), valid_ioctls); | ||
595 | SET_VALID_IOCTL(ops, VIDIOC_G_FREQUENCY, vidioc_g_frequency); | ||
596 | SET_VALID_IOCTL(ops, VIDIOC_S_FREQUENCY, vidioc_s_frequency); | ||
597 | SET_VALID_IOCTL(ops, VIDIOC_LOG_STATUS, vidioc_log_status); | ||
598 | #ifdef CONFIG_VIDEO_ADV_DEBUG | ||
599 | SET_VALID_IOCTL(ops, VIDIOC_DBG_G_REGISTER, vidioc_g_register); | ||
600 | SET_VALID_IOCTL(ops, VIDIOC_DBG_S_REGISTER, vidioc_s_register); | ||
601 | #endif | ||
602 | SET_VALID_IOCTL(ops, VIDIOC_DBG_G_CHIP_IDENT, vidioc_g_chip_ident); | ||
603 | /* yes, really vidioc_subscribe_event */ | ||
604 | SET_VALID_IOCTL(ops, VIDIOC_DQEVENT, vidioc_subscribe_event); | ||
605 | SET_VALID_IOCTL(ops, VIDIOC_SUBSCRIBE_EVENT, vidioc_subscribe_event); | ||
606 | SET_VALID_IOCTL(ops, VIDIOC_UNSUBSCRIBE_EVENT, vidioc_unsubscribe_event); | ||
607 | SET_VALID_IOCTL(ops, VIDIOC_CREATE_BUFS, vidioc_create_bufs); | ||
608 | SET_VALID_IOCTL(ops, VIDIOC_PREPARE_BUF, vidioc_prepare_buf); | ||
609 | if (ops->vidioc_enum_freq_bands || ops->vidioc_g_tuner || ops->vidioc_g_modulator) | ||
610 | set_bit(_IOC_NR(VIDIOC_ENUM_FREQ_BANDS), valid_ioctls); | ||
611 | |||
569 | if (is_vid) { | 612 | if (is_vid) { |
613 | /* video specific ioctls */ | ||
570 | if ((is_rx && (ops->vidioc_enum_fmt_vid_cap || | 614 | if ((is_rx && (ops->vidioc_enum_fmt_vid_cap || |
571 | ops->vidioc_enum_fmt_vid_cap_mplane || | 615 | ops->vidioc_enum_fmt_vid_cap_mplane || |
572 | ops->vidioc_enum_fmt_vid_overlay)) || | 616 | ops->vidioc_enum_fmt_vid_overlay)) || |
@@ -594,7 +638,20 @@ static void determine_valid_ioctls(struct video_device *vdev) | |||
594 | ops->vidioc_try_fmt_vid_out_mplane || | 638 | ops->vidioc_try_fmt_vid_out_mplane || |
595 | ops->vidioc_try_fmt_vid_out_overlay))) | 639 | ops->vidioc_try_fmt_vid_out_overlay))) |
596 | set_bit(_IOC_NR(VIDIOC_TRY_FMT), valid_ioctls); | 640 | set_bit(_IOC_NR(VIDIOC_TRY_FMT), valid_ioctls); |
641 | SET_VALID_IOCTL(ops, VIDIOC_OVERLAY, vidioc_overlay); | ||
642 | SET_VALID_IOCTL(ops, VIDIOC_G_FBUF, vidioc_g_fbuf); | ||
643 | SET_VALID_IOCTL(ops, VIDIOC_S_FBUF, vidioc_s_fbuf); | ||
644 | SET_VALID_IOCTL(ops, VIDIOC_G_JPEGCOMP, vidioc_g_jpegcomp); | ||
645 | SET_VALID_IOCTL(ops, VIDIOC_S_JPEGCOMP, vidioc_s_jpegcomp); | ||
646 | SET_VALID_IOCTL(ops, VIDIOC_G_ENC_INDEX, vidioc_g_enc_index); | ||
647 | SET_VALID_IOCTL(ops, VIDIOC_ENCODER_CMD, vidioc_encoder_cmd); | ||
648 | SET_VALID_IOCTL(ops, VIDIOC_TRY_ENCODER_CMD, vidioc_try_encoder_cmd); | ||
649 | SET_VALID_IOCTL(ops, VIDIOC_DECODER_CMD, vidioc_decoder_cmd); | ||
650 | SET_VALID_IOCTL(ops, VIDIOC_TRY_DECODER_CMD, vidioc_try_decoder_cmd); | ||
651 | SET_VALID_IOCTL(ops, VIDIOC_ENUM_FRAMESIZES, vidioc_enum_framesizes); | ||
652 | SET_VALID_IOCTL(ops, VIDIOC_ENUM_FRAMEINTERVALS, vidioc_enum_frameintervals); | ||
597 | } else if (is_vbi) { | 653 | } else if (is_vbi) { |
654 | /* vbi specific ioctls */ | ||
598 | if ((is_rx && (ops->vidioc_g_fmt_vbi_cap || | 655 | if ((is_rx && (ops->vidioc_g_fmt_vbi_cap || |
599 | ops->vidioc_g_fmt_sliced_vbi_cap)) || | 656 | ops->vidioc_g_fmt_sliced_vbi_cap)) || |
600 | (is_tx && (ops->vidioc_g_fmt_vbi_out || | 657 | (is_tx && (ops->vidioc_g_fmt_vbi_out || |
@@ -610,33 +667,25 @@ static void determine_valid_ioctls(struct video_device *vdev) | |||
610 | (is_tx && (ops->vidioc_try_fmt_vbi_out || | 667 | (is_tx && (ops->vidioc_try_fmt_vbi_out || |
611 | ops->vidioc_try_fmt_sliced_vbi_out))) | 668 | ops->vidioc_try_fmt_sliced_vbi_out))) |
612 | set_bit(_IOC_NR(VIDIOC_TRY_FMT), valid_ioctls); | 669 | set_bit(_IOC_NR(VIDIOC_TRY_FMT), valid_ioctls); |
670 | SET_VALID_IOCTL(ops, VIDIOC_G_SLICED_VBI_CAP, vidioc_g_sliced_vbi_cap); | ||
613 | } | 671 | } |
614 | SET_VALID_IOCTL(ops, VIDIOC_REQBUFS, vidioc_reqbufs); | ||
615 | SET_VALID_IOCTL(ops, VIDIOC_QUERYBUF, vidioc_querybuf); | ||
616 | SET_VALID_IOCTL(ops, VIDIOC_QBUF, vidioc_qbuf); | ||
617 | SET_VALID_IOCTL(ops, VIDIOC_DQBUF, vidioc_dqbuf); | ||
618 | if (is_vid) { | ||
619 | SET_VALID_IOCTL(ops, VIDIOC_OVERLAY, vidioc_overlay); | ||
620 | SET_VALID_IOCTL(ops, VIDIOC_G_FBUF, vidioc_g_fbuf); | ||
621 | SET_VALID_IOCTL(ops, VIDIOC_S_FBUF, vidioc_s_fbuf); | ||
622 | } | ||
623 | SET_VALID_IOCTL(ops, VIDIOC_STREAMON, vidioc_streamon); | ||
624 | SET_VALID_IOCTL(ops, VIDIOC_STREAMOFF, vidioc_streamoff); | ||
625 | if (!is_radio) { | 672 | if (!is_radio) { |
673 | /* ioctls valid for video or vbi */ | ||
626 | if (ops->vidioc_s_std) | 674 | if (ops->vidioc_s_std) |
627 | set_bit(_IOC_NR(VIDIOC_ENUMSTD), valid_ioctls); | 675 | set_bit(_IOC_NR(VIDIOC_ENUMSTD), valid_ioctls); |
628 | if (ops->vidioc_g_std || vdev->current_norm) | 676 | if (ops->vidioc_g_std || vdev->current_norm) |
629 | set_bit(_IOC_NR(VIDIOC_G_STD), valid_ioctls); | 677 | set_bit(_IOC_NR(VIDIOC_G_STD), valid_ioctls); |
630 | SET_VALID_IOCTL(ops, VIDIOC_S_STD, vidioc_s_std); | 678 | SET_VALID_IOCTL(ops, VIDIOC_S_STD, vidioc_s_std); |
631 | if (is_rx) | ||
632 | SET_VALID_IOCTL(ops, VIDIOC_QUERYSTD, vidioc_querystd); | ||
633 | if (is_rx) { | 679 | if (is_rx) { |
680 | SET_VALID_IOCTL(ops, VIDIOC_QUERYSTD, vidioc_querystd); | ||
634 | SET_VALID_IOCTL(ops, VIDIOC_ENUMINPUT, vidioc_enum_input); | 681 | SET_VALID_IOCTL(ops, VIDIOC_ENUMINPUT, vidioc_enum_input); |
635 | SET_VALID_IOCTL(ops, VIDIOC_G_INPUT, vidioc_g_input); | 682 | SET_VALID_IOCTL(ops, VIDIOC_G_INPUT, vidioc_g_input); |
636 | SET_VALID_IOCTL(ops, VIDIOC_S_INPUT, vidioc_s_input); | 683 | SET_VALID_IOCTL(ops, VIDIOC_S_INPUT, vidioc_s_input); |
637 | SET_VALID_IOCTL(ops, VIDIOC_ENUMAUDIO, vidioc_enumaudio); | 684 | SET_VALID_IOCTL(ops, VIDIOC_ENUMAUDIO, vidioc_enumaudio); |
638 | SET_VALID_IOCTL(ops, VIDIOC_G_AUDIO, vidioc_g_audio); | 685 | SET_VALID_IOCTL(ops, VIDIOC_G_AUDIO, vidioc_g_audio); |
639 | SET_VALID_IOCTL(ops, VIDIOC_S_AUDIO, vidioc_s_audio); | 686 | SET_VALID_IOCTL(ops, VIDIOC_S_AUDIO, vidioc_s_audio); |
687 | SET_VALID_IOCTL(ops, VIDIOC_QUERY_DV_PRESET, vidioc_query_dv_preset); | ||
688 | SET_VALID_IOCTL(ops, VIDIOC_QUERY_DV_TIMINGS, vidioc_query_dv_timings); | ||
640 | } | 689 | } |
641 | if (is_tx) { | 690 | if (is_tx) { |
642 | SET_VALID_IOCTL(ops, VIDIOC_ENUMOUTPUT, vidioc_enum_output); | 691 | SET_VALID_IOCTL(ops, VIDIOC_ENUMOUTPUT, vidioc_enum_output); |
@@ -646,30 +695,6 @@ static void determine_valid_ioctls(struct video_device *vdev) | |||
646 | SET_VALID_IOCTL(ops, VIDIOC_G_AUDOUT, vidioc_g_audout); | 695 | SET_VALID_IOCTL(ops, VIDIOC_G_AUDOUT, vidioc_g_audout); |
647 | SET_VALID_IOCTL(ops, VIDIOC_S_AUDOUT, vidioc_s_audout); | 696 | SET_VALID_IOCTL(ops, VIDIOC_S_AUDOUT, vidioc_s_audout); |
648 | } | 697 | } |
649 | } | ||
650 | /* Note: the control handler can also be passed through the filehandle, | ||
651 | and that can't be tested here. If the bit for these control ioctls | ||
652 | is set, then the ioctl is valid. But if it is 0, then it can still | ||
653 | be valid if the filehandle passed the control handler. */ | ||
654 | if (vdev->ctrl_handler || ops->vidioc_queryctrl) | ||
655 | set_bit(_IOC_NR(VIDIOC_QUERYCTRL), valid_ioctls); | ||
656 | if (vdev->ctrl_handler || ops->vidioc_g_ctrl || ops->vidioc_g_ext_ctrls) | ||
657 | set_bit(_IOC_NR(VIDIOC_G_CTRL), valid_ioctls); | ||
658 | if (vdev->ctrl_handler || ops->vidioc_s_ctrl || ops->vidioc_s_ext_ctrls) | ||
659 | set_bit(_IOC_NR(VIDIOC_S_CTRL), valid_ioctls); | ||
660 | if (vdev->ctrl_handler || ops->vidioc_g_ext_ctrls) | ||
661 | set_bit(_IOC_NR(VIDIOC_G_EXT_CTRLS), valid_ioctls); | ||
662 | if (vdev->ctrl_handler || ops->vidioc_s_ext_ctrls) | ||
663 | set_bit(_IOC_NR(VIDIOC_S_EXT_CTRLS), valid_ioctls); | ||
664 | if (vdev->ctrl_handler || ops->vidioc_try_ext_ctrls) | ||
665 | set_bit(_IOC_NR(VIDIOC_TRY_EXT_CTRLS), valid_ioctls); | ||
666 | if (vdev->ctrl_handler || ops->vidioc_querymenu) | ||
667 | set_bit(_IOC_NR(VIDIOC_QUERYMENU), valid_ioctls); | ||
668 | if (is_tx) { | ||
669 | SET_VALID_IOCTL(ops, VIDIOC_G_MODULATOR, vidioc_g_modulator); | ||
670 | SET_VALID_IOCTL(ops, VIDIOC_S_MODULATOR, vidioc_s_modulator); | ||
671 | } | ||
672 | if (!is_radio) { | ||
673 | if (ops->vidioc_g_crop || ops->vidioc_g_selection) | 698 | if (ops->vidioc_g_crop || ops->vidioc_g_selection) |
674 | set_bit(_IOC_NR(VIDIOC_G_CROP), valid_ioctls); | 699 | set_bit(_IOC_NR(VIDIOC_G_CROP), valid_ioctls); |
675 | if (ops->vidioc_s_crop || ops->vidioc_s_selection) | 700 | if (ops->vidioc_s_crop || ops->vidioc_s_selection) |
@@ -678,63 +703,30 @@ static void determine_valid_ioctls(struct video_device *vdev) | |||
678 | SET_VALID_IOCTL(ops, VIDIOC_S_SELECTION, vidioc_s_selection); | 703 | SET_VALID_IOCTL(ops, VIDIOC_S_SELECTION, vidioc_s_selection); |
679 | if (ops->vidioc_cropcap || ops->vidioc_g_selection) | 704 | if (ops->vidioc_cropcap || ops->vidioc_g_selection) |
680 | set_bit(_IOC_NR(VIDIOC_CROPCAP), valid_ioctls); | 705 | set_bit(_IOC_NR(VIDIOC_CROPCAP), valid_ioctls); |
681 | } | ||
682 | if (is_vid) { | ||
683 | SET_VALID_IOCTL(ops, VIDIOC_G_JPEGCOMP, vidioc_g_jpegcomp); | ||
684 | SET_VALID_IOCTL(ops, VIDIOC_S_JPEGCOMP, vidioc_s_jpegcomp); | ||
685 | SET_VALID_IOCTL(ops, VIDIOC_G_ENC_INDEX, vidioc_g_enc_index); | ||
686 | SET_VALID_IOCTL(ops, VIDIOC_ENCODER_CMD, vidioc_encoder_cmd); | ||
687 | SET_VALID_IOCTL(ops, VIDIOC_TRY_ENCODER_CMD, vidioc_try_encoder_cmd); | ||
688 | SET_VALID_IOCTL(ops, VIDIOC_DECODER_CMD, vidioc_decoder_cmd); | ||
689 | SET_VALID_IOCTL(ops, VIDIOC_TRY_DECODER_CMD, vidioc_try_decoder_cmd); | ||
690 | } | ||
691 | if (!is_radio) { | ||
692 | if (ops->vidioc_g_parm || (vdev->vfl_type == VFL_TYPE_GRABBER && | 706 | if (ops->vidioc_g_parm || (vdev->vfl_type == VFL_TYPE_GRABBER && |
693 | (ops->vidioc_g_std || vdev->current_norm))) | 707 | (ops->vidioc_g_std || vdev->current_norm))) |
694 | set_bit(_IOC_NR(VIDIOC_G_PARM), valid_ioctls); | 708 | set_bit(_IOC_NR(VIDIOC_G_PARM), valid_ioctls); |
695 | SET_VALID_IOCTL(ops, VIDIOC_S_PARM, vidioc_s_parm); | 709 | SET_VALID_IOCTL(ops, VIDIOC_S_PARM, vidioc_s_parm); |
696 | } | ||
697 | if (is_rx) { | ||
698 | SET_VALID_IOCTL(ops, VIDIOC_G_TUNER, vidioc_g_tuner); | ||
699 | SET_VALID_IOCTL(ops, VIDIOC_S_TUNER, vidioc_s_tuner); | ||
700 | } | ||
701 | SET_VALID_IOCTL(ops, VIDIOC_G_FREQUENCY, vidioc_g_frequency); | ||
702 | SET_VALID_IOCTL(ops, VIDIOC_S_FREQUENCY, vidioc_s_frequency); | ||
703 | if (is_vbi) | ||
704 | SET_VALID_IOCTL(ops, VIDIOC_G_SLICED_VBI_CAP, vidioc_g_sliced_vbi_cap); | ||
705 | SET_VALID_IOCTL(ops, VIDIOC_LOG_STATUS, vidioc_log_status); | ||
706 | #ifdef CONFIG_VIDEO_ADV_DEBUG | ||
707 | SET_VALID_IOCTL(ops, VIDIOC_DBG_G_REGISTER, vidioc_g_register); | ||
708 | SET_VALID_IOCTL(ops, VIDIOC_DBG_S_REGISTER, vidioc_s_register); | ||
709 | #endif | ||
710 | SET_VALID_IOCTL(ops, VIDIOC_DBG_G_CHIP_IDENT, vidioc_g_chip_ident); | ||
711 | if (is_rx) | ||
712 | SET_VALID_IOCTL(ops, VIDIOC_S_HW_FREQ_SEEK, vidioc_s_hw_freq_seek); | ||
713 | if (is_vid) { | ||
714 | SET_VALID_IOCTL(ops, VIDIOC_ENUM_FRAMESIZES, vidioc_enum_framesizes); | ||
715 | SET_VALID_IOCTL(ops, VIDIOC_ENUM_FRAMEINTERVALS, vidioc_enum_frameintervals); | ||
716 | } | ||
717 | if (!is_radio) { | ||
718 | SET_VALID_IOCTL(ops, VIDIOC_ENUM_DV_PRESETS, vidioc_enum_dv_presets); | 710 | SET_VALID_IOCTL(ops, VIDIOC_ENUM_DV_PRESETS, vidioc_enum_dv_presets); |
719 | SET_VALID_IOCTL(ops, VIDIOC_S_DV_PRESET, vidioc_s_dv_preset); | 711 | SET_VALID_IOCTL(ops, VIDIOC_S_DV_PRESET, vidioc_s_dv_preset); |
720 | SET_VALID_IOCTL(ops, VIDIOC_G_DV_PRESET, vidioc_g_dv_preset); | 712 | SET_VALID_IOCTL(ops, VIDIOC_G_DV_PRESET, vidioc_g_dv_preset); |
721 | if (is_rx) | ||
722 | SET_VALID_IOCTL(ops, VIDIOC_QUERY_DV_PRESET, vidioc_query_dv_preset); | ||
723 | SET_VALID_IOCTL(ops, VIDIOC_S_DV_TIMINGS, vidioc_s_dv_timings); | 713 | SET_VALID_IOCTL(ops, VIDIOC_S_DV_TIMINGS, vidioc_s_dv_timings); |
724 | SET_VALID_IOCTL(ops, VIDIOC_G_DV_TIMINGS, vidioc_g_dv_timings); | 714 | SET_VALID_IOCTL(ops, VIDIOC_G_DV_TIMINGS, vidioc_g_dv_timings); |
725 | SET_VALID_IOCTL(ops, VIDIOC_ENUM_DV_TIMINGS, vidioc_enum_dv_timings); | 715 | SET_VALID_IOCTL(ops, VIDIOC_ENUM_DV_TIMINGS, vidioc_enum_dv_timings); |
726 | if (is_rx) | ||
727 | SET_VALID_IOCTL(ops, VIDIOC_QUERY_DV_TIMINGS, vidioc_query_dv_timings); | ||
728 | SET_VALID_IOCTL(ops, VIDIOC_DV_TIMINGS_CAP, vidioc_dv_timings_cap); | 716 | SET_VALID_IOCTL(ops, VIDIOC_DV_TIMINGS_CAP, vidioc_dv_timings_cap); |
729 | } | 717 | } |
730 | /* yes, really vidioc_subscribe_event */ | 718 | if (is_tx) { |
731 | SET_VALID_IOCTL(ops, VIDIOC_DQEVENT, vidioc_subscribe_event); | 719 | /* transmitter only ioctls */ |
732 | SET_VALID_IOCTL(ops, VIDIOC_SUBSCRIBE_EVENT, vidioc_subscribe_event); | 720 | SET_VALID_IOCTL(ops, VIDIOC_G_MODULATOR, vidioc_g_modulator); |
733 | SET_VALID_IOCTL(ops, VIDIOC_UNSUBSCRIBE_EVENT, vidioc_unsubscribe_event); | 721 | SET_VALID_IOCTL(ops, VIDIOC_S_MODULATOR, vidioc_s_modulator); |
734 | SET_VALID_IOCTL(ops, VIDIOC_CREATE_BUFS, vidioc_create_bufs); | 722 | } |
735 | SET_VALID_IOCTL(ops, VIDIOC_PREPARE_BUF, vidioc_prepare_buf); | 723 | if (is_rx) { |
736 | if (ops->vidioc_enum_freq_bands || ops->vidioc_g_tuner || ops->vidioc_g_modulator) | 724 | /* receiver only ioctls */ |
737 | set_bit(_IOC_NR(VIDIOC_ENUM_FREQ_BANDS), valid_ioctls); | 725 | SET_VALID_IOCTL(ops, VIDIOC_G_TUNER, vidioc_g_tuner); |
726 | SET_VALID_IOCTL(ops, VIDIOC_S_TUNER, vidioc_s_tuner); | ||
727 | SET_VALID_IOCTL(ops, VIDIOC_S_HW_FREQ_SEEK, vidioc_s_hw_freq_seek); | ||
728 | } | ||
729 | |||
738 | bitmap_andnot(vdev->valid_ioctls, valid_ioctls, vdev->valid_ioctls, | 730 | bitmap_andnot(vdev->valid_ioctls, valid_ioctls, vdev->valid_ioctls, |
739 | BASE_VIDIOC_PRIVATE); | 731 | BASE_VIDIOC_PRIVATE); |
740 | } | 732 | } |