aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/v4l2-core
diff options
context:
space:
mode:
authorHans Verkuil <hans.verkuil@cisco.com>2012-09-14 06:06:08 -0400
committerMauro Carvalho Chehab <mchehab@redhat.com>2012-09-26 13:52:07 -0400
commit90d0fc4985e72c1d09af2078d9e84454b43495f0 (patch)
tree7d564c70576f46eb623f0d6cb5d69ff53beb08ca /drivers/media/v4l2-core
parent4b20259fa642d6f7a2dabef0b3adc14ca9dadbde (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.c156
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}