staging: comedi: adl_pci9118: use comedi_buf_write_samples()
authorH Hartley Sweeten <hsweeten@visionengravers.com>
Wed, 22 Oct 2014 22:36:34 +0000 (15:36 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 29 Oct 2014 08:03:11 +0000 (16:03 +0800)
Use comedi_buf_write_samples() to add the samples to the async buffer.
The number of bytes to add is determined automatically based on the
number of samples and the bytes_per_sample().

Change the return type of move_block_from_dma() to void and remove the
unnecessary check of the return value of comedi_buf_write_samples().
The callers don't check the return and it's really not necessary. If
comedi_buf_write_samples() fails to allocate enough space in the async
buffer to add all the samples it sets the COMEDI_CB_OVERFLOW event.
This will cause the async command to (*cancel) when the events are
handled.

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

index 7b1720f8fb30f728678825e1cdfc5edbb0803f26..cb2c48522efd81f9e2c4c29a4dc5fe842e9d5150 100644 (file)
@@ -472,26 +472,21 @@ static unsigned int defragment_dma_buffer(struct comedi_device *dev,
        return j;
 }
 
-static int move_block_from_dma(struct comedi_device *dev,
-                              struct comedi_subdevice *s,
-                              unsigned short *dma_buffer,
-                              unsigned int num_samples)
+static void move_block_from_dma(struct comedi_device *dev,
+                               struct comedi_subdevice *s,
+                               unsigned short *dma_buffer,
+                               unsigned int num_samples)
 {
        struct pci9118_private *devpriv = dev->private;
        struct comedi_cmd *cmd = &s->async->cmd;
-       unsigned int num_bytes;
 
        num_samples = defragment_dma_buffer(dev, s, dma_buffer, num_samples);
        devpriv->ai_act_scan +=
            (s->async->cur_chan + num_samples) / cmd->scan_end_arg;
        s->async->cur_chan += num_samples;
        s->async->cur_chan %= cmd->scan_end_arg;
-       num_bytes =
-           cfc_write_array_to_buffer(s, dma_buffer,
-                                     num_samples * sizeof(short));
-       if (num_bytes < num_samples * sizeof(short))
-               return -1;
-       return 0;
+
+       comedi_buf_write_samples(s, dma_buffer, num_samples);
 }
 
 static void pci9118_exttrg_enable(struct comedi_device *dev, bool enable)
@@ -617,7 +612,7 @@ static void interrupt_pci9118_ai_onesample(struct comedi_device *dev,
 
        sampl = inl(dev->iobase + PCI9118_AI_FIFO_REG);
 
-       cfc_write_to_buffer(s, sampl);
+       comedi_buf_write_samples(s, &sampl, 1);
        s->async->cur_chan++;
        if (s->async->cur_chan >= cmd->scan_end_arg) {
                                                        /* one scan done */