staging: comedi: s626: clarify the cmd->start_arg validation and use
authorH Hartley Sweeten <hsweeten@visionengravers.com>
Thu, 17 Apr 2014 17:08:07 +0000 (10:08 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 22 Apr 2014 17:21:33 +0000 (10:21 -0700)
This driver supports a cmd->start_src of TRIG_NOW, TRIG_INT or TRIG_EXT.

Clarify the cmd->start_arg validation in Step 3 of the (*do_cmdtest).

For a TRIG_INT source, the cmd->start_arg is actually the valid
trig_num that is used by the async (*inttrig) callback.

Refactor the (*inttrig) function so that the cmd->start_arg is used
to check the trig_num instead of the open coded value.

Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com>
Reviewed-by: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/comedi/drivers/s626.c

index 6da43de..647b9e5 100644 (file)
@@ -2076,9 +2076,12 @@ static int s626_ai_load_polllist(uint8_t *ppl, struct comedi_cmd *cmd)
 }
 
 static int s626_ai_inttrig(struct comedi_device *dev,
-                          struct comedi_subdevice *s, unsigned int trignum)
+                          struct comedi_subdevice *s,
+                          unsigned int trig_num)
 {
-       if (trignum != 0)
+       struct comedi_cmd *cmd = &s->async->cmd;
+
+       if (trig_num != cmd->start_arg)
                return -EINVAL;
 
        /* Start executing the RPS program */
@@ -2314,12 +2317,18 @@ static int s626_ai_cmdtest(struct comedi_device *dev,
        if (err)
                return 2;
 
-       /* step 3: make sure arguments are trivially compatible */
+       /* Step 3: check if arguments are trivially valid */
 
-       if (cmd->start_src != TRIG_EXT)
+       switch (cmd->start_src) {
+       case TRIG_NOW:
+       case TRIG_INT:
                err |= cfc_check_trigger_arg_is(&cmd->start_arg, 0);
-       if (cmd->start_src == TRIG_EXT)
+               break;
+       case TRIG_EXT:
                err |= cfc_check_trigger_arg_max(&cmd->start_arg, 39);
+               break;
+       }
+
        if (cmd->scan_begin_src == TRIG_EXT)
                err |= cfc_check_trigger_arg_max(&cmd->scan_begin_arg, 39);
        if (cmd->convert_src == TRIG_EXT)