Commit 324e213a authored by H Hartley Sweeten's avatar H Hartley Sweeten Committed by Greg Kroah-Hartman

staging: comedi: addi_apci_3120: use comedi_async 'scans_done' to detect EOA

Remove the private data member 'ai_AiActualScan' and use the comedi_async
'scans_done' member to detect the end-of-acquisition.

The function v_APCI3120_InterruptDmaMoveBlock16bit() is then just a wrapper
for comedi_buf_write_samples(). Remove it.
Signed-off-by: default avatarH Hartley Sweeten <hsweeten@visionengravers.com>
Reviewed-by: default avatarIan Abbott <abbotti@mev.co.uk>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 29ee9fba
...@@ -628,7 +628,6 @@ static int apci3120_cancel(struct comedi_device *dev, ...@@ -628,7 +628,6 @@ static int apci3120_cancel(struct comedi_device *dev,
/* Flush FIFO */ /* Flush FIFO */
inb(dev->iobase + APCI3120_RESET_FIFO); inb(dev->iobase + APCI3120_RESET_FIFO);
inw(dev->iobase + APCI3120_RD_STATUS); inw(dev->iobase + APCI3120_RD_STATUS);
devpriv->ui_AiActualScan = 0;
devpriv->ui_DmaActualBuffer = 0; devpriv->ui_DmaActualBuffer = 0;
devpriv->ai_running = 0; devpriv->ai_running = 0;
...@@ -756,7 +755,6 @@ static int apci3120_cyclic_ai(int mode, ...@@ -756,7 +755,6 @@ static int apci3120_cyclic_ai(int mode,
inb(dev->iobase + APCI3120_RESET_FIFO); inb(dev->iobase + APCI3120_RESET_FIFO);
/* END JK 07.05.04: Comparison between WIN32 and Linux driver */ /* END JK 07.05.04: Comparison between WIN32 and Linux driver */
devpriv->ui_AiActualScan = 0;
devpriv->ui_DmaActualBuffer = 0; devpriv->ui_DmaActualBuffer = 0;
/* value for timer2 minus -2 has to be done */ /* value for timer2 minus -2 has to be done */
...@@ -1156,23 +1154,6 @@ static int apci3120_ai_cmd(struct comedi_device *dev, ...@@ -1156,23 +1154,6 @@ static int apci3120_ai_cmd(struct comedi_device *dev,
return apci3120_cyclic_ai(2, dev, s); return apci3120_cyclic_ai(2, dev, s);
} }
/*
* This function copies the data from DMA buffer to the Comedi buffer.
*/
static void v_APCI3120_InterruptDmaMoveBlock16bit(struct comedi_device *dev,
struct comedi_subdevice *s,
unsigned short *dma_buffer,
unsigned int num_samples)
{
struct apci3120_private *devpriv = dev->private;
struct comedi_cmd *cmd = &s->async->cmd;
devpriv->ui_AiActualScan +=
(s->async->cur_chan + num_samples) / cmd->scan_end_arg;
comedi_buf_write_samples(s, dma_buffer, num_samples);
}
/* /*
* This is a handler for the DMA interrupt. * This is a handler for the DMA interrupt.
* This function copies the data to Comedi Buffer. * This function copies the data to Comedi Buffer.
...@@ -1245,15 +1226,13 @@ static void apci3120_interrupt_dma(int irq, void *d) ...@@ -1245,15 +1226,13 @@ static void apci3120_interrupt_dma(int irq, void *d)
} }
if (samplesinbuf) { if (samplesinbuf) {
v_APCI3120_InterruptDmaMoveBlock16bit(dev, s, dmabuf->virt, comedi_buf_write_samples(s, dmabuf->virt, samplesinbuf);
samplesinbuf);
if (!(cmd->flags & CMDF_WAKE_EOS)) if (!(cmd->flags & CMDF_WAKE_EOS))
s->async->events |= COMEDI_CB_EOS; s->async->events |= COMEDI_CB_EOS;
} }
if (cmd->stop_src == TRIG_COUNT) if (cmd->stop_src == TRIG_COUNT &&
if (devpriv->ui_AiActualScan >= cmd->stop_arg) { s->async->scans_done >= cmd->stop_arg) {
/* all data sampled */
s->async->events |= COMEDI_CB_EOA; s->async->events |= COMEDI_CB_EOA;
return; return;
} }
...@@ -1386,7 +1365,6 @@ static irqreturn_t apci3120_interrupt(int irq, void *d) ...@@ -1386,7 +1365,6 @@ static irqreturn_t apci3120_interrupt(int irq, void *d)
if (devpriv->ai_running) { if (devpriv->ai_running) {
ui_Check = 0; ui_Check = 0;
apci3120_interrupt_handle_eos(dev); apci3120_interrupt_handle_eos(dev);
devpriv->ui_AiActualScan++;
devpriv->b_ModeSelectRegister = devpriv->b_ModeSelectRegister =
devpriv-> devpriv->
b_ModeSelectRegister | b_ModeSelectRegister |
......
...@@ -55,7 +55,6 @@ struct apci3120_dmabuf { ...@@ -55,7 +55,6 @@ struct apci3120_dmabuf {
struct apci3120_private { struct apci3120_private {
unsigned long amcc; unsigned long amcc;
unsigned long addon; unsigned long addon;
unsigned int ui_AiActualScan;
unsigned int ui_AiNbrofChannels; unsigned int ui_AiNbrofChannels;
unsigned int ui_AiChannelList[32]; unsigned int ui_AiChannelList[32];
unsigned int ui_AiReadData[32]; unsigned int ui_AiReadData[32];
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment