staging: comedi: amplc_pci230: use comedi_buf_write_samples()
authorH Hartley Sweeten <hsweeten@visionengravers.com>
Wed, 22 Oct 2014 22:36:52 +0000 (15:36 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 29 Oct 2014 08:03:13 +0000 (16:03 +0800)
Use comedi_buf_write_samples() to add the sample to the async buffer.

The async events will set properly by the core. A dev_warn() message will
also be output by the core if the buffer overflows. Remove the unnecessary
events and dev_err() message in the driver.

The core will also add the COMEDI_CB_BLOCK event when data is written to
the async buffer. Remove the unnecessary event in the driver.

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

index f9b952f7173eac95517853cd708a3810685d6857..44c967f43d9af5904467623ccf959d5cc3148084 100644 (file)
@@ -2053,6 +2053,7 @@ static void pci230_handle_ai(struct comedi_device *dev,
        unsigned int i;
        unsigned int todo;
        unsigned int fifoamount;
+       unsigned short val;
 
        /* Determine number of samples to read. */
        if (cmd->stop_src != TRIG_COUNT) {
@@ -2099,12 +2100,10 @@ static void pci230_handle_ai(struct comedi_device *dev,
                                fifoamount = 1;
                        }
                }
-               /* Read sample and store in Comedi's circular buffer. */
-               if (comedi_buf_put(s, pci230_ai_read(dev)) == 0) {
-                       events |= COMEDI_CB_ERROR | COMEDI_CB_OVERFLOW;
-                       dev_err(dev->class_dev, "AI buffer overflow\n");
-                       break;
-               }
+
+               val = pci230_ai_read(dev);
+               comedi_buf_write_samples(s, &val, 1);
+
                fifoamount--;
                devpriv->ai_scan_pos++;
                if (devpriv->ai_scan_pos == scanlen) {
@@ -2117,9 +2116,6 @@ static void pci230_handle_ai(struct comedi_device *dev,
        if (cmd->stop_src == TRIG_COUNT && devpriv->ai_scan_count == 0) {
                /* End of acquisition. */
                events |= COMEDI_CB_EOA;
-       } else {
-               /* More samples required, tell Comedi to block. */
-               events |= COMEDI_CB_BLOCK;
        }
        async->events |= events;
        if (!(async->events & COMEDI_CB_CANCEL_MASK)) {