diff options
author | H Hartley Sweeten <hartleys@visionengravers.com> | 2012-11-13 19:59:02 -0500 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2012-11-14 19:23:19 -0500 |
commit | 8a2b08ec90c5bde08c1cacfdcfd709aeeed95826 (patch) | |
tree | 76590a2258ffda1855cbf363e02216d5b6eb5857 /drivers/staging/comedi | |
parent | 42cae4a1c030403883277aecc53a726e329f64cf (diff) |
staging: comedi: rtd520: use cfc_check_trigger_arg_*() helpers
Use the new helpers in the step 3 tests of rtd_ai_cmdtest().
Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com>
Cc: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/staging/comedi')
-rw-r--r-- | drivers/staging/comedi/drivers/rtd520.c | 72 |
1 files changed, 30 insertions, 42 deletions
diff --git a/drivers/staging/comedi/drivers/rtd520.c b/drivers/staging/comedi/drivers/rtd520.c index 23b76d0b1a5..5b31e60ffb5 100644 --- a/drivers/staging/comedi/drivers/rtd520.c +++ b/drivers/staging/comedi/drivers/rtd520.c | |||
@@ -745,97 +745,85 @@ static int rtd_ai_cmdtest(struct comedi_device *dev, | |||
745 | if (err) | 745 | if (err) |
746 | return 2; | 746 | return 2; |
747 | 747 | ||
748 | /* step 3: make sure arguments are trivially compatible */ | 748 | /* Step 3: check if arguments are trivially valid */ |
749 | 749 | ||
750 | if (cmd->start_arg != 0) { | 750 | err |= cfc_check_trigger_arg_is(&cmd->start_arg, 0); |
751 | cmd->start_arg = 0; | ||
752 | err++; | ||
753 | } | ||
754 | 751 | ||
755 | if (cmd->scan_begin_src == TRIG_TIMER) { | 752 | if (cmd->scan_begin_src == TRIG_TIMER) { |
756 | /* Note: these are time periods, not actual rates */ | 753 | /* Note: these are time periods, not actual rates */ |
757 | if (1 == cmd->chanlist_len) { /* no scanning */ | 754 | if (1 == cmd->chanlist_len) { /* no scanning */ |
758 | if (cmd->scan_begin_arg < RTD_MAX_SPEED_1) { | 755 | if (cfc_check_trigger_arg_min(&cmd->scan_begin_arg, |
759 | cmd->scan_begin_arg = RTD_MAX_SPEED_1; | 756 | RTD_MAX_SPEED_1)) { |
760 | rtd_ns_to_timer(&cmd->scan_begin_arg, | 757 | rtd_ns_to_timer(&cmd->scan_begin_arg, |
761 | TRIG_ROUND_UP); | 758 | TRIG_ROUND_UP); |
762 | err++; | 759 | err |= -EINVAL; |
763 | } | 760 | } |
764 | if (cmd->scan_begin_arg > RTD_MIN_SPEED_1) { | 761 | if (cfc_check_trigger_arg_max(&cmd->scan_begin_arg, |
765 | cmd->scan_begin_arg = RTD_MIN_SPEED_1; | 762 | RTD_MIN_SPEED_1)) { |
766 | rtd_ns_to_timer(&cmd->scan_begin_arg, | 763 | rtd_ns_to_timer(&cmd->scan_begin_arg, |
767 | TRIG_ROUND_DOWN); | 764 | TRIG_ROUND_DOWN); |
768 | err++; | 765 | err |= -EINVAL; |
769 | } | 766 | } |
770 | } else { | 767 | } else { |
771 | if (cmd->scan_begin_arg < RTD_MAX_SPEED) { | 768 | if (cfc_check_trigger_arg_min(&cmd->scan_begin_arg, |
772 | cmd->scan_begin_arg = RTD_MAX_SPEED; | 769 | RTD_MAX_SPEED)) { |
773 | rtd_ns_to_timer(&cmd->scan_begin_arg, | 770 | rtd_ns_to_timer(&cmd->scan_begin_arg, |
774 | TRIG_ROUND_UP); | 771 | TRIG_ROUND_UP); |
775 | err++; | 772 | err |= -EINVAL; |
776 | } | 773 | } |
777 | if (cmd->scan_begin_arg > RTD_MIN_SPEED) { | 774 | if (cfc_check_trigger_arg_max(&cmd->scan_begin_arg, |
778 | cmd->scan_begin_arg = RTD_MIN_SPEED; | 775 | RTD_MIN_SPEED)) { |
779 | rtd_ns_to_timer(&cmd->scan_begin_arg, | 776 | rtd_ns_to_timer(&cmd->scan_begin_arg, |
780 | TRIG_ROUND_DOWN); | 777 | TRIG_ROUND_DOWN); |
781 | err++; | 778 | err |= -EINVAL; |
782 | } | 779 | } |
783 | } | 780 | } |
784 | } else { | 781 | } else { |
785 | /* external trigger */ | 782 | /* external trigger */ |
786 | /* should be level/edge, hi/lo specification here */ | 783 | /* should be level/edge, hi/lo specification here */ |
787 | /* should specify multiple external triggers */ | 784 | /* should specify multiple external triggers */ |
788 | if (cmd->scan_begin_arg > 9) { | 785 | err |= cfc_check_trigger_arg_max(&cmd->scan_begin_arg, 9); |
789 | cmd->scan_begin_arg = 9; | ||
790 | err++; | ||
791 | } | ||
792 | } | 786 | } |
787 | |||
793 | if (cmd->convert_src == TRIG_TIMER) { | 788 | if (cmd->convert_src == TRIG_TIMER) { |
794 | if (1 == cmd->chanlist_len) { /* no scanning */ | 789 | if (1 == cmd->chanlist_len) { /* no scanning */ |
795 | if (cmd->convert_arg < RTD_MAX_SPEED_1) { | 790 | if (cfc_check_trigger_arg_min(&cmd->convert_arg, |
796 | cmd->convert_arg = RTD_MAX_SPEED_1; | 791 | RTD_MAX_SPEED_1)) { |
797 | rtd_ns_to_timer(&cmd->convert_arg, | 792 | rtd_ns_to_timer(&cmd->convert_arg, |
798 | TRIG_ROUND_UP); | 793 | TRIG_ROUND_UP); |
799 | err++; | 794 | err |= -EINVAL; |
800 | } | 795 | } |
801 | if (cmd->convert_arg > RTD_MIN_SPEED_1) { | 796 | if (cfc_check_trigger_arg_max(&cmd->convert_arg, |
802 | cmd->convert_arg = RTD_MIN_SPEED_1; | 797 | RTD_MIN_SPEED_1)) { |
803 | rtd_ns_to_timer(&cmd->convert_arg, | 798 | rtd_ns_to_timer(&cmd->convert_arg, |
804 | TRIG_ROUND_DOWN); | 799 | TRIG_ROUND_DOWN); |
805 | err++; | 800 | err |= -EINVAL; |
806 | } | 801 | } |
807 | } else { | 802 | } else { |
808 | if (cmd->convert_arg < RTD_MAX_SPEED) { | 803 | if (cfc_check_trigger_arg_min(&cmd->convert_arg, |
809 | cmd->convert_arg = RTD_MAX_SPEED; | 804 | RTD_MAX_SPEED)) { |
810 | rtd_ns_to_timer(&cmd->convert_arg, | 805 | rtd_ns_to_timer(&cmd->convert_arg, |
811 | TRIG_ROUND_UP); | 806 | TRIG_ROUND_UP); |
812 | err++; | 807 | err |= -EINVAL; |
813 | } | 808 | } |
814 | if (cmd->convert_arg > RTD_MIN_SPEED) { | 809 | if (cfc_check_trigger_arg_max(&cmd->convert_arg, |
815 | cmd->convert_arg = RTD_MIN_SPEED; | 810 | RTD_MIN_SPEED)) { |
816 | rtd_ns_to_timer(&cmd->convert_arg, | 811 | rtd_ns_to_timer(&cmd->convert_arg, |
817 | TRIG_ROUND_DOWN); | 812 | TRIG_ROUND_DOWN); |
818 | err++; | 813 | err |= -EINVAL; |
819 | } | 814 | } |
820 | } | 815 | } |
821 | } else { | 816 | } else { |
822 | /* external trigger */ | 817 | /* external trigger */ |
823 | /* see above */ | 818 | /* see above */ |
824 | if (cmd->convert_arg > 9) { | 819 | err |= cfc_check_trigger_arg_max(&cmd->convert_arg, 9); |
825 | cmd->convert_arg = 9; | ||
826 | err++; | ||
827 | } | ||
828 | } | 820 | } |
829 | 821 | ||
830 | if (cmd->stop_src == TRIG_COUNT) { | 822 | if (cmd->stop_src == TRIG_COUNT) { |
831 | /* TODO check for rounding error due to counter wrap */ | 823 | /* TODO check for rounding error due to counter wrap */ |
832 | |||
833 | } else { | 824 | } else { |
834 | /* TRIG_NONE */ | 825 | /* TRIG_NONE */ |
835 | if (cmd->stop_arg != 0) { | 826 | err |= cfc_check_trigger_arg_is(&cmd->stop_arg, 0); |
836 | cmd->stop_arg = 0; | ||
837 | err++; | ||
838 | } | ||
839 | } | 827 | } |
840 | 828 | ||
841 | if (err) | 829 | if (err) |