]> git.openfabrics.org - ~emulex/infiniband.git/commitdiff
staging: comedi: dt282x: tidy up dt282x_ai_dma_interrupt()
authorH Hartley Sweeten <hsweeten@visionengravers.com>
Fri, 20 Jun 2014 20:12:49 +0000 (13:12 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 27 Jun 2014 00:08:19 +0000 (20:08 -0400)
The main interrupt handler already has the comedi_subdevice pointer
needed in this function. Pass that subdevice pointer so that it does
not need to be fetched as a local variable.

Tidy up the function a bit.

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

index 40c5794ec5c4bc037711147fe14e2acf1efa8777..d4164ced8185b51b9a62ab1f9311e1728f4bcc68 100644 (file)
@@ -484,24 +484,20 @@ static void dt282x_ao_dma_interrupt(struct comedi_device *dev,
        }
 }
 
-static void dt282x_ai_dma_interrupt(struct comedi_device *dev)
+static void dt282x_ai_dma_interrupt(struct comedi_device *dev,
+                                   struct comedi_subdevice *s)
 {
        struct dt282x_private *devpriv = dev->private;
-       struct comedi_subdevice *s = dev->read_subdev;
-       void *ptr;
-       int size;
-       int i;
+       int cur_dma = devpriv->current_dma_index;
+       void *ptr = devpriv->dma[cur_dma].buf;
+       int size = devpriv->dma[cur_dma].size;
        int ret;
 
        outw(devpriv->supcsr | DT2821_CLRDMADNE, dev->iobase + DT2821_SUPCSR);
 
-       i = devpriv->current_dma_index;
-       ptr = devpriv->dma[i].buf;
-       size = devpriv->dma[i].size;
-
-       disable_dma(devpriv->dma[i].chan);
+       disable_dma(devpriv->dma[cur_dma].chan);
 
-       devpriv->current_dma_index = 1 - i;
+       devpriv->current_dma_index = 1 - cur_dma;
 
        dt282x_munge(dev, s, ptr, size);
        ret = cfc_write_array_to_buffer(s, ptr, size);
@@ -509,8 +505,8 @@ static void dt282x_ai_dma_interrupt(struct comedi_device *dev)
                s->async->events |= COMEDI_CB_OVERFLOW;
                return;
        }
-       devpriv->nread -= size / 2;
 
+       devpriv->nread -= size / 2;
        if (devpriv->nread < 0) {
                dev_info(dev->class_dev, "nread off by one\n");
                devpriv->nread = 0;
@@ -528,7 +524,7 @@ static void dt282x_ai_dma_interrupt(struct comedi_device *dev)
        }
 #endif
        /* restart the channel */
-       dt282x_prep_ai_dma(dev, i, 0);
+       dt282x_prep_ai_dma(dev, cur_dma, 0);
 }
 
 static irqreturn_t dt282x_interrupt(int irq, void *d)
@@ -550,7 +546,7 @@ static irqreturn_t dt282x_interrupt(int irq, void *d)
        supcsr = inw(dev->iobase + DT2821_SUPCSR);
        if (supcsr & DT2821_DMAD) {
                if (devpriv->dma_dir == DMA_MODE_READ)
-                       dt282x_ai_dma_interrupt(dev);
+                       dt282x_ai_dma_interrupt(dev, s);
                else
                        dt282x_ao_dma_interrupt(dev, s_ao);
                handled = 1;