This member of the private data is not needed. We can check the stop_src
to determine this information:

  ai_neverending -> cmd->stop_src == TRIG_NONE
  !ai_neverending -> cmd->stop_src == TRIG_COUNT

Signed-off-by: H Hartley Sweeten <hswee...@visionengravers.com>
Cc: Ian Abbott <abbo...@mev.co.uk>
Cc: Greg Kroah-Hartman <gre...@linuxfoundation.org>
---
 drivers/staging/comedi/drivers/pcl816.c | 43 ++++++++++++++-------------------
 1 file changed, 18 insertions(+), 25 deletions(-)

diff --git a/drivers/staging/comedi/drivers/pcl816.c 
b/drivers/staging/comedi/drivers/pcl816.c
index c0ad0f1..1a8f65e 100644
--- a/drivers/staging/comedi/drivers/pcl816.c
+++ b/drivers/staging/comedi/drivers/pcl816.c
@@ -124,7 +124,6 @@ struct pcl816_private {
        unsigned int divisor2;
        unsigned int ai_cmd_running:1;
        unsigned int irq_was_now_closed:1;
-       unsigned int ai_neverending:1;
 };
 
 static int check_channel_list(struct comedi_device *dev,
@@ -247,13 +246,12 @@ static irqreturn_t interrupt_pcl816_ai_mode13_int(int 
irq, void *d)
                devpriv->ai_act_scan++;
        }
 
-       if (!devpriv->ai_neverending)
-                                       /* all data sampled */
-               if (devpriv->ai_act_scan >= cmd->stop_arg) {
-                       /* all data sampled */
-                       s->cancel(dev, s);
-                       s->async->events |= COMEDI_CB_EOA;
-               }
+       if (cmd->stop_src == TRIG_COUNT &&
+           devpriv->ai_act_scan >= cmd->stop_arg) {
+               /* all data sampled */
+               s->cancel(dev, s);
+               s->async->events |= COMEDI_CB_EOA;
+       }
        comedi_event(dev, s);
        return IRQ_HANDLED;
 }
@@ -279,14 +277,14 @@ static void transfer_from_dma_buf(struct comedi_device 
*dev,
                        devpriv->ai_act_scan++;
                }
 
-               if (!devpriv->ai_neverending)
-                                               /*  all data sampled */
-                       if (devpriv->ai_act_scan >= cmd->stop_arg) {
-                               s->cancel(dev, s);
-                               s->async->events |= COMEDI_CB_EOA;
-                               s->async->events |= COMEDI_CB_BLOCK;
-                               break;
-                       }
+               if (cmd->stop_src == TRIG_COUNT &&
+                   devpriv->ai_act_scan >= cmd->stop_arg) {
+                       /* all data sampled */
+                       s->cancel(dev, s);
+                       s->async->events |= COMEDI_CB_EOA;
+                       s->async->events |= COMEDI_CB_BLOCK;
+                       break;
+               }
        }
 
        comedi_event(dev, s);
@@ -297,6 +295,7 @@ static irqreturn_t interrupt_pcl816_ai_mode13_dma(int irq, 
void *d)
        struct comedi_device *dev = d;
        struct pcl816_private *devpriv = dev->private;
        struct comedi_subdevice *s = dev->read_subdev;
+       struct comedi_cmd *cmd = &s->async->cmd;
        int len, bufptr, this_dma_buf;
        unsigned long dma_flags;
        unsigned short *ptr;
@@ -304,9 +303,8 @@ static irqreturn_t interrupt_pcl816_ai_mode13_dma(int irq, 
void *d)
        disable_dma(devpriv->dma);
        this_dma_buf = devpriv->next_dma_buf;
 
-       /*  switch dma bufs */
-       if ((devpriv->dma_runs_to_end > -1) || devpriv->ai_neverending) {
-
+       if (devpriv->dma_runs_to_end > -1 || cmd->stop_src == TRIG_NONE) {
+               /* switch dma bufs */
                devpriv->next_dma_buf = 1 - devpriv->next_dma_buf;
                set_dma_mode(devpriv->dma, DMA_MODE_READ);
                dma_flags = claim_dma_lock();
@@ -469,14 +467,9 @@ static int pcl816_ai_cmd(struct comedi_device *dev, struct 
comedi_subdevice *s)
        devpriv->ai_poll_ptr = 0;
        devpriv->irq_was_now_closed = 0;
 
-       if (cmd->stop_src == TRIG_COUNT)
-               devpriv->ai_neverending = 0;
-       else
-               devpriv->ai_neverending = 1;
-
        if (devpriv->dma) {
                bytes = devpriv->hwdmasize;
-               if (!devpriv->ai_neverending) {
+               if (cmd->stop_src == TRIG_COUNT) {
                        /*  how many */
                        bytes = s->async->cmd.chanlist_len *
                        s->async->cmd.chanlist_len *
-- 
1.8.5.2

_______________________________________________
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel

Reply via email to