staging: comedi: das1800: refactor Step 4 of das1800_ai_do_cmdtest()
authorH Hartley Sweeten <hsweeten@visionengravers.com>
Tue, 29 Apr 2014 19:59:31 +0000 (12:59 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 4 May 2014 00:06:31 +0000 (20:06 -0400)
Refactor this code to reduce the indent level and the > 80 char
lines.

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/das1800.c

index 0335a70..93fd58b 100644 (file)
@@ -731,7 +731,7 @@ static irqreturn_t das1800_interrupt(int irq, void *d)
 /* converts requested conversion timing to timing compatible with
  * hardware, used only when card is in 'burst mode'
  */
-static unsigned int burst_convert_arg(unsigned int convert_arg, int round_mode)
+static unsigned int burst_convert_arg(unsigned int convert_arg, int flags)
 {
        unsigned int micro_sec;
 
@@ -740,7 +740,7 @@ static unsigned int burst_convert_arg(unsigned int convert_arg, int round_mode)
                convert_arg = 64000;
 
        /*  the conversion time must be an integral number of microseconds */
-       switch (round_mode) {
+       switch (flags & TRIG_ROUND_MASK) {
        case TRIG_ROUND_NEAREST:
        default:
                micro_sec = (convert_arg + 500) / 1000;
@@ -785,7 +785,7 @@ static int das1800_ai_do_cmdtest(struct comedi_device *dev,
        const struct das1800_board *thisboard = comedi_board(dev);
        struct das1800_private *devpriv = dev->private;
        int err = 0;
-       unsigned int tmp_arg;
+       unsigned int arg;
 
        /* Step 1 : check if triggers are trivially valid */
 
@@ -843,48 +843,39 @@ static int das1800_ai_do_cmdtest(struct comedi_device *dev,
 
        /* step 4: fix up any arguments */
 
-       if (cmd->convert_src == TRIG_TIMER) {
-               /*  if we are not in burst mode */
-               if (cmd->scan_begin_src == TRIG_FOLLOW) {
-                       tmp_arg = cmd->convert_arg;
-                       /* calculate counter values that give desired timing */
+       if (cmd->scan_begin_src == TRIG_FOLLOW &&
+           cmd->convert_src == TRIG_TIMER) {
+               /* we are not in burst mode */
+               arg = cmd->convert_arg;
+               i8253_cascade_ns_to_timer(I8254_OSC_BASE_5MHZ,
+                                         &devpriv->divisor1,
+                                         &devpriv->divisor2,
+                                         &cmd->convert_arg, cmd->flags);
+               if (arg != cmd->convert_arg)
+                       err++;
+       } else if (cmd->convert_src == TRIG_TIMER) {
+               /* we are in burst mode */
+               arg = cmd->convert_arg;
+               cmd->convert_arg = burst_convert_arg(cmd->convert_arg,
+                                                    cmd->flags);
+               if (arg != cmd->convert_arg)
+                       err++;
+
+               if (cmd->scan_begin_src == TRIG_TIMER) {
+                       arg = cmd->convert_arg * cmd->chanlist_len;
+                       if (arg > cmd->scan_begin_arg) {
+                               cmd->scan_begin_arg = arg;
+                               err++;
+                       }
+
+                       arg = cmd->scan_begin_arg;
                        i8253_cascade_ns_to_timer(I8254_OSC_BASE_5MHZ,
                                                  &devpriv->divisor1,
                                                  &devpriv->divisor2,
-                                                 &cmd->convert_arg,
+                                                 &cmd->scan_begin_arg,
                                                  cmd->flags);
-                       if (tmp_arg != cmd->convert_arg)
-                               err++;
-               }
-               /*  if we are in burst mode */
-               else {
-                       /*  check that convert_arg is compatible */
-                       tmp_arg = cmd->convert_arg;
-                       cmd->convert_arg =
-                           burst_convert_arg(cmd->convert_arg,
-                                             cmd->flags & TRIG_ROUND_MASK);
-                       if (tmp_arg != cmd->convert_arg)
+                       if (arg != cmd->scan_begin_arg)
                                err++;
-
-                       if (cmd->scan_begin_src == TRIG_TIMER) {
-                               /*  if scans are timed faster than conversion rate allows */
-                               if (cmd->convert_arg * cmd->chanlist_len >
-                                   cmd->scan_begin_arg) {
-                                       cmd->scan_begin_arg =
-                                           cmd->convert_arg *
-                                           cmd->chanlist_len;
-                                       err++;
-                               }
-                               tmp_arg = cmd->scan_begin_arg;
-                               /* calculate counter values that give desired timing */
-                               i8253_cascade_ns_to_timer(I8254_OSC_BASE_5MHZ,
-                                                         &devpriv->divisor1,
-                                                         &devpriv->divisor2,
-                                                         &cmd->scan_begin_arg,
-                                                         cmd->flags);
-                               if (tmp_arg != cmd->scan_begin_arg)
-                                       err++;
-                       }
                }
        }