aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/staging/comedi
diff options
context:
space:
mode:
authorH Hartley Sweeten <hartleys@visionengravers.com>2012-11-13 19:59:02 -0500
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2012-11-14 19:23:19 -0500
commit8a2b08ec90c5bde08c1cacfdcfd709aeeed95826 (patch)
tree76590a2258ffda1855cbf363e02216d5b6eb5857 /drivers/staging/comedi
parent42cae4a1c030403883277aecc53a726e329f64cf (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.c72
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)