Commit 365dae93 authored by H Hartley Sweeten's avatar H Hartley Sweeten Committed by Greg Kroah-Hartman

staging: comedi: s626: use comedi_handle_events()

Use comedi_handle_events() to automatically (*cancel) the async command
for an end-of-acquisition or if an error/overflow occurs.

The s626_mc_disable() call when the end-of-acquisition is detected can
then be removed. The (*cancel) does the same thing.

For aesthetics, also remove the 'finished' local variable and just return
the ai_cmd_running state.
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 bc43ae06
...@@ -1480,7 +1480,6 @@ static bool s626_handle_eos_interrupt(struct comedi_device *dev) ...@@ -1480,7 +1480,6 @@ static bool s626_handle_eos_interrupt(struct comedi_device *dev)
* from the final ADC of the previous poll list scan. * from the final ADC of the previous poll list scan.
*/ */
uint32_t *readaddr = (uint32_t *)devpriv->ana_buf.logical_base + 1; uint32_t *readaddr = (uint32_t *)devpriv->ana_buf.logical_base + 1;
bool finished = false;
int i; int i;
/* get the data and hand it over to comedi */ /* get the data and hand it over to comedi */
...@@ -1505,25 +1504,16 @@ static bool s626_handle_eos_interrupt(struct comedi_device *dev) ...@@ -1505,25 +1504,16 @@ static bool s626_handle_eos_interrupt(struct comedi_device *dev)
devpriv->ai_sample_count--; devpriv->ai_sample_count--;
if (devpriv->ai_sample_count <= 0) { if (devpriv->ai_sample_count <= 0) {
devpriv->ai_cmd_running = 0; devpriv->ai_cmd_running = 0;
/* Stop RPS program */
s626_mc_disable(dev, S626_MC1_ERPS1, S626_P_MC1);
/* send end of acquisition */
async->events |= COMEDI_CB_EOA; async->events |= COMEDI_CB_EOA;
/* disable master interrupt */
finished = true;
} }
} }
if (devpriv->ai_cmd_running && cmd->scan_begin_src == TRIG_EXT) if (devpriv->ai_cmd_running && cmd->scan_begin_src == TRIG_EXT)
s626_dio_set_irq(dev, cmd->scan_begin_arg); s626_dio_set_irq(dev, cmd->scan_begin_arg);
/* tell comedi that data is there */ comedi_handle_events(dev, s);
comedi_event(dev, s);
return finished; return !devpriv->ai_cmd_running;
} }
static irqreturn_t s626_irq_handler(int irq, void *d) static irqreturn_t s626_irq_handler(int irq, void *d)
......
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