staging: comedi: addi_apci_3120: set scan length/start after programming chanlist
authorH Hartley Sweeten <hsweeten@visionengravers.com>
Tue, 4 Nov 2014 17:54:55 +0000 (10:54 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 7 Nov 2014 17:34:03 +0000 (09:34 -0800)
The APCI-3120 documentation says that the PR/PA bits should be set after the
chanlist sequence is programmed.

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

index 77499b4..f258ceb 100644 (file)
@@ -286,10 +286,6 @@ static void apci3120_set_chanlist(struct comedi_device *dev,
        struct apci3120_private *devpriv = dev->private;
        int i;
 
-       /* set scan length (PR) and scan start (PA) */
-       devpriv->ctrl = APCI3120_CTRL_PR(n_chan - 1) | APCI3120_CTRL_PA(0);
-       outw(devpriv->ctrl, dev->iobase + APCI3120_CTRL_REG);
-
        /* set chanlist for scan */
        for (i = 0; i < n_chan; i++) {
                unsigned int chan = CR_CHAN(chanlist[i]);
@@ -307,6 +303,10 @@ static void apci3120_set_chanlist(struct comedi_device *dev,
        }
 
        apci3120_ai_reset_fifo(dev);
+
+       /* set scan length (PR) and scan start (PA) */
+       devpriv->ctrl = APCI3120_CTRL_PR(n_chan - 1) | APCI3120_CTRL_PA(0);
+       outw(devpriv->ctrl, dev->iobase + APCI3120_CTRL_REG);
 }
 
 #include "addi-data/hwdrv_apci3120.c"