Commit 3e6cb74f authored by H Hartley Sweeten's avatar H Hartley Sweeten Committed by Greg Kroah-Hartman

staging: comedi: drivers: remove inappropriate COMEDI_CB_EOA events

Hardware errors should be reported with the COMEDI_CB_ERROR event. This event
will cause the async command to cancel. It's not necessary to also set the
COMEDI_CB_EOA event. Remove these events.
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 a3b2ee1d
...@@ -539,7 +539,7 @@ static irqreturn_t pci9111_interrupt(int irq, void *p_device) ...@@ -539,7 +539,7 @@ static irqreturn_t pci9111_interrupt(int irq, void *p_device)
spin_unlock_irqrestore(&dev->spinlock, irq_flags); spin_unlock_irqrestore(&dev->spinlock, irq_flags);
dev_dbg(dev->class_dev, "fifo overflow\n"); dev_dbg(dev->class_dev, "fifo overflow\n");
outb(0, dev->iobase + PCI9111_INT_CLR_REG); outb(0, dev->iobase + PCI9111_INT_CLR_REG);
async->events |= COMEDI_CB_ERROR | COMEDI_CB_EOA; async->events |= COMEDI_CB_ERROR;
comedi_handle_events(dev, s); comedi_handle_events(dev, s);
return IRQ_HANDLED; return IRQ_HANDLED;
......
...@@ -749,13 +749,13 @@ static irqreturn_t pci9118_interrupt(int irq, void *d) ...@@ -749,13 +749,13 @@ static irqreturn_t pci9118_interrupt(int irq, void *d)
if (intcsr & MASTER_ABORT_INT) { if (intcsr & MASTER_ABORT_INT) {
dev_err(dev->class_dev, "AMCC IRQ - MASTER DMA ABORT!\n"); dev_err(dev->class_dev, "AMCC IRQ - MASTER DMA ABORT!\n");
s->async->events |= COMEDI_CB_ERROR | COMEDI_CB_EOA; s->async->events |= COMEDI_CB_ERROR;
goto interrupt_exit; goto interrupt_exit;
} }
if (intcsr & TARGET_ABORT_INT) { if (intcsr & TARGET_ABORT_INT) {
dev_err(dev->class_dev, "AMCC IRQ - TARGET DMA ABORT!\n"); dev_err(dev->class_dev, "AMCC IRQ - TARGET DMA ABORT!\n");
s->async->events |= COMEDI_CB_ERROR | COMEDI_CB_EOA; s->async->events |= COMEDI_CB_ERROR;
goto interrupt_exit; goto interrupt_exit;
} }
......
...@@ -743,14 +743,14 @@ static void pci1710_handle_every_sample(struct comedi_device *dev, ...@@ -743,14 +743,14 @@ static void pci1710_handle_every_sample(struct comedi_device *dev,
status = inw(dev->iobase + PCI171x_STATUS); status = inw(dev->iobase + PCI171x_STATUS);
if (status & Status_FE) { if (status & Status_FE) {
dev_dbg(dev->class_dev, "A/D FIFO empty (%4x)\n", status); dev_dbg(dev->class_dev, "A/D FIFO empty (%4x)\n", status);
s->async->events |= COMEDI_CB_EOA | COMEDI_CB_ERROR; s->async->events |= COMEDI_CB_ERROR;
comedi_handle_events(dev, s); comedi_handle_events(dev, s);
return; return;
} }
if (status & Status_FF) { if (status & Status_FF) {
dev_dbg(dev->class_dev, dev_dbg(dev->class_dev,
"A/D FIFO Full status (Fatal Error!) (%4x)\n", status); "A/D FIFO Full status (Fatal Error!) (%4x)\n", status);
s->async->events |= COMEDI_CB_EOA | COMEDI_CB_ERROR; s->async->events |= COMEDI_CB_ERROR;
comedi_handle_events(dev, s); comedi_handle_events(dev, s);
return; return;
} }
...@@ -761,7 +761,7 @@ static void pci1710_handle_every_sample(struct comedi_device *dev, ...@@ -761,7 +761,7 @@ static void pci1710_handle_every_sample(struct comedi_device *dev,
val = inw(dev->iobase + PCI171x_AD_DATA); val = inw(dev->iobase + PCI171x_AD_DATA);
ret = pci171x_ai_dropout(dev, s, s->async->cur_chan, val); ret = pci171x_ai_dropout(dev, s, s->async->cur_chan, val);
if (ret) { if (ret) {
s->async->events |= COMEDI_CB_EOA | COMEDI_CB_ERROR; s->async->events |= COMEDI_CB_ERROR;
break; break;
} }
...@@ -795,7 +795,7 @@ static int move_block_from_fifo(struct comedi_device *dev, ...@@ -795,7 +795,7 @@ static int move_block_from_fifo(struct comedi_device *dev,
ret = pci171x_ai_dropout(dev, s, s->async->cur_chan, val); ret = pci171x_ai_dropout(dev, s, s->async->cur_chan, val);
if (ret) { if (ret) {
s->async->events |= COMEDI_CB_EOA | COMEDI_CB_ERROR; s->async->events |= COMEDI_CB_ERROR;
return ret; return ret;
} }
...@@ -816,14 +816,14 @@ static void pci1710_handle_fifo(struct comedi_device *dev, ...@@ -816,14 +816,14 @@ static void pci1710_handle_fifo(struct comedi_device *dev,
m = inw(dev->iobase + PCI171x_STATUS); m = inw(dev->iobase + PCI171x_STATUS);
if (!(m & Status_FH)) { if (!(m & Status_FH)) {
dev_dbg(dev->class_dev, "A/D FIFO not half full! (%4x)\n", m); dev_dbg(dev->class_dev, "A/D FIFO not half full! (%4x)\n", m);
s->async->events |= COMEDI_CB_EOA | COMEDI_CB_ERROR; s->async->events |= COMEDI_CB_ERROR;
comedi_handle_events(dev, s); comedi_handle_events(dev, s);
return; return;
} }
if (m & Status_FF) { if (m & Status_FF) {
dev_dbg(dev->class_dev, dev_dbg(dev->class_dev,
"A/D FIFO Full status (Fatal Error!) (%4x)\n", m); "A/D FIFO Full status (Fatal Error!) (%4x)\n", m);
s->async->events |= COMEDI_CB_EOA | COMEDI_CB_ERROR; s->async->events |= COMEDI_CB_ERROR;
comedi_handle_events(dev, s); comedi_handle_events(dev, s);
return; return;
} }
......
...@@ -1355,7 +1355,7 @@ static irqreturn_t cb_pcidas_interrupt(int irq, void *d) ...@@ -1355,7 +1355,7 @@ static irqreturn_t cb_pcidas_interrupt(int irq, void *d)
outw(devpriv->adc_fifo_bits | LADFUL, outw(devpriv->adc_fifo_bits | LADFUL,
devpriv->control_status + INT_ADCFIFO); devpriv->control_status + INT_ADCFIFO);
spin_unlock_irqrestore(&dev->spinlock, flags); spin_unlock_irqrestore(&dev->spinlock, flags);
async->events |= COMEDI_CB_EOA | COMEDI_CB_ERROR; async->events |= COMEDI_CB_ERROR;
} }
comedi_handle_events(dev, s); comedi_handle_events(dev, s);
......
...@@ -2804,7 +2804,7 @@ static void handle_ai_interrupt(struct comedi_device *dev, ...@@ -2804,7 +2804,7 @@ static void handle_ai_interrupt(struct comedi_device *dev,
/* check for fifo overrun */ /* check for fifo overrun */
if (status & ADC_OVERRUN_BIT) { if (status & ADC_OVERRUN_BIT) {
dev_err(dev->class_dev, "fifo overrun\n"); dev_err(dev->class_dev, "fifo overrun\n");
async->events |= COMEDI_CB_EOA | COMEDI_CB_ERROR; async->events |= COMEDI_CB_ERROR;
} }
/* spin lock makes sure no one else changes plx dma control reg */ /* spin lock makes sure no one else changes plx dma control reg */
spin_lock_irqsave(&dev->spinlock, flags); spin_lock_irqsave(&dev->spinlock, flags);
......
...@@ -455,7 +455,7 @@ static void das16m1_handler(struct comedi_device *dev, unsigned int status) ...@@ -455,7 +455,7 @@ static void das16m1_handler(struct comedi_device *dev, unsigned int status)
/* this probably won't catch overruns since the card doesn't generate /* this probably won't catch overruns since the card doesn't generate
* overrun interrupts, but we might as well try */ * overrun interrupts, but we might as well try */
if (status & OVRUN) { if (status & OVRUN) {
async->events |= COMEDI_CB_EOA | COMEDI_CB_ERROR; async->events |= COMEDI_CB_ERROR;
dev_err(dev->class_dev, "fifo overflow\n"); dev_err(dev->class_dev, "fifo overflow\n");
} }
......
...@@ -611,7 +611,7 @@ static void das1800_ai_handler(struct comedi_device *dev) ...@@ -611,7 +611,7 @@ static void das1800_ai_handler(struct comedi_device *dev)
/* clear OVF interrupt bit */ /* clear OVF interrupt bit */
outb(CLEAR_INTR_MASK & ~OVF, dev->iobase + DAS1800_STATUS); outb(CLEAR_INTR_MASK & ~OVF, dev->iobase + DAS1800_STATUS);
dev_err(dev->class_dev, "FIFO overflow\n"); dev_err(dev->class_dev, "FIFO overflow\n");
async->events |= COMEDI_CB_ERROR | COMEDI_CB_EOA; async->events |= COMEDI_CB_ERROR;
comedi_handle_events(dev, s); comedi_handle_events(dev, s);
return; return;
} }
......
...@@ -511,7 +511,7 @@ static irqreturn_t das800_interrupt(int irq, void *d) ...@@ -511,7 +511,7 @@ static irqreturn_t das800_interrupt(int irq, void *d)
if (fifo_overflow) { if (fifo_overflow) {
spin_unlock_irqrestore(&dev->spinlock, irq_flags); spin_unlock_irqrestore(&dev->spinlock, irq_flags);
async->events |= COMEDI_CB_ERROR | COMEDI_CB_EOA; async->events |= COMEDI_CB_ERROR;
comedi_handle_events(dev, s); comedi_handle_events(dev, s);
return IRQ_HANDLED; return IRQ_HANDLED;
} }
......
...@@ -355,7 +355,7 @@ static irqreturn_t dt3k_interrupt(int irq, void *d) ...@@ -355,7 +355,7 @@ static irqreturn_t dt3k_interrupt(int irq, void *d)
dt3k_ai_empty_fifo(dev, s); dt3k_ai_empty_fifo(dev, s);
if (status & (DT3000_ADSWERR | DT3000_ADHWERR)) if (status & (DT3000_ADSWERR | DT3000_ADHWERR))
s->async->events |= COMEDI_CB_ERROR | COMEDI_CB_EOA; s->async->events |= COMEDI_CB_ERROR;
debug_n_ints++; debug_n_ints++;
if (debug_n_ints >= 10) if (debug_n_ints >= 10)
......
...@@ -261,12 +261,12 @@ static irqreturn_t gsc_hpdi_interrupt(int irq, void *d) ...@@ -261,12 +261,12 @@ static irqreturn_t gsc_hpdi_interrupt(int irq, void *d)
if (hpdi_board_status & RX_OVERRUN_BIT) { if (hpdi_board_status & RX_OVERRUN_BIT) {
dev_err(dev->class_dev, "rx fifo overrun\n"); dev_err(dev->class_dev, "rx fifo overrun\n");
async->events |= COMEDI_CB_EOA | COMEDI_CB_ERROR; async->events |= COMEDI_CB_ERROR;
} }
if (hpdi_board_status & RX_UNDERRUN_BIT) { if (hpdi_board_status & RX_UNDERRUN_BIT) {
dev_err(dev->class_dev, "rx fifo underrun\n"); dev_err(dev->class_dev, "rx fifo underrun\n");
async->events |= COMEDI_CB_EOA | COMEDI_CB_ERROR; async->events |= COMEDI_CB_ERROR;
} }
if (devpriv->dio_count == 0) if (devpriv->dio_count == 0)
......
...@@ -1068,7 +1068,7 @@ static irqreturn_t me4000_ai_isr(int irq, void *dev_id) ...@@ -1068,7 +1068,7 @@ static irqreturn_t me4000_ai_isr(int irq, void *dev_id)
ME4000_AI_CTRL_BIT_SC_IRQ); ME4000_AI_CTRL_BIT_SC_IRQ);
outl(tmp, dev->iobase + ME4000_AI_CTRL_REG); outl(tmp, dev->iobase + ME4000_AI_CTRL_REG);
s->async->events |= COMEDI_CB_ERROR | COMEDI_CB_EOA; s->async->events |= COMEDI_CB_ERROR;
dev_err(dev->class_dev, "FIFO overflow\n"); dev_err(dev->class_dev, "FIFO overflow\n");
} else if ((tmp & ME4000_AI_STATUS_BIT_FF_DATA) } else if ((tmp & ME4000_AI_STATUS_BIT_FF_DATA)
...@@ -1089,7 +1089,7 @@ static irqreturn_t me4000_ai_isr(int irq, void *dev_id) ...@@ -1089,7 +1089,7 @@ static irqreturn_t me4000_ai_isr(int irq, void *dev_id)
ME4000_AI_CTRL_BIT_SC_IRQ); ME4000_AI_CTRL_BIT_SC_IRQ);
outl(tmp, dev->iobase + ME4000_AI_CTRL_REG); outl(tmp, dev->iobase + ME4000_AI_CTRL_REG);
s->async->events |= COMEDI_CB_ERROR | COMEDI_CB_EOA; s->async->events |= COMEDI_CB_ERROR;
dev_err(dev->class_dev, "Undefined FIFO state\n"); dev_err(dev->class_dev, "Undefined FIFO state\n");
} }
......
...@@ -175,12 +175,12 @@ static irqreturn_t a2150_interrupt(int irq, void *d) ...@@ -175,12 +175,12 @@ static irqreturn_t a2150_interrupt(int irq, void *d)
return IRQ_NONE; return IRQ_NONE;
if (status & OVFL_BIT) { if (status & OVFL_BIT) {
async->events |= COMEDI_CB_ERROR | COMEDI_CB_EOA; async->events |= COMEDI_CB_ERROR;
comedi_handle_events(dev, s); comedi_handle_events(dev, s);
} }
if ((status & DMA_TC_BIT) == 0) { if ((status & DMA_TC_BIT) == 0) {
async->events |= COMEDI_CB_ERROR | COMEDI_CB_EOA; async->events |= COMEDI_CB_ERROR;
comedi_handle_events(dev, s); comedi_handle_events(dev, s);
return IRQ_HANDLED; return IRQ_HANDLED;
} }
......
...@@ -823,7 +823,7 @@ static int labpc_drain_fifo(struct comedi_device *dev) ...@@ -823,7 +823,7 @@ static int labpc_drain_fifo(struct comedi_device *dev)
} }
if (i == timeout) { if (i == timeout) {
dev_err(dev->class_dev, "ai timeout, fifo never empties\n"); dev_err(dev->class_dev, "ai timeout, fifo never empties\n");
async->events |= COMEDI_CB_ERROR | COMEDI_CB_EOA; async->events |= COMEDI_CB_ERROR;
return -1; return -1;
} }
...@@ -875,7 +875,7 @@ static irqreturn_t labpc_interrupt(int irq, void *d) ...@@ -875,7 +875,7 @@ static irqreturn_t labpc_interrupt(int irq, void *d)
if (devpriv->stat1 & STAT1_OVERRUN) { if (devpriv->stat1 & STAT1_OVERRUN) {
/* clear error interrupt */ /* clear error interrupt */
devpriv->write_byte(dev, 0x1, ADC_FIFO_CLEAR_REG); devpriv->write_byte(dev, 0x1, ADC_FIFO_CLEAR_REG);
async->events |= COMEDI_CB_ERROR | COMEDI_CB_EOA; async->events |= COMEDI_CB_ERROR;
comedi_handle_events(dev, s); comedi_handle_events(dev, s);
dev_err(dev->class_dev, "overrun\n"); dev_err(dev->class_dev, "overrun\n");
return IRQ_HANDLED; return IRQ_HANDLED;
...@@ -895,7 +895,7 @@ static irqreturn_t labpc_interrupt(int irq, void *d) ...@@ -895,7 +895,7 @@ static irqreturn_t labpc_interrupt(int irq, void *d)
if (devpriv->stat1 & STAT1_OVERFLOW) { if (devpriv->stat1 & STAT1_OVERFLOW) {
/* clear error interrupt */ /* clear error interrupt */
devpriv->write_byte(dev, 0x1, ADC_FIFO_CLEAR_REG); devpriv->write_byte(dev, 0x1, ADC_FIFO_CLEAR_REG);
async->events |= COMEDI_CB_ERROR | COMEDI_CB_EOA; async->events |= COMEDI_CB_ERROR;
comedi_handle_events(dev, s); comedi_handle_events(dev, s);
dev_err(dev->class_dev, "overflow\n"); dev_err(dev->class_dev, "overflow\n");
return IRQ_HANDLED; return IRQ_HANDLED;
......
...@@ -1478,7 +1478,7 @@ static void handle_a_interrupt(struct comedi_device *dev, unsigned short status, ...@@ -1478,7 +1478,7 @@ static void handle_a_interrupt(struct comedi_device *dev, unsigned short status,
dev_err(dev->class_dev, dev_err(dev->class_dev,
"unknown mite interrupt (ai_mite_status=%08x)\n", "unknown mite interrupt (ai_mite_status=%08x)\n",
ai_mite_status); ai_mite_status);
s->async->events |= COMEDI_CB_ERROR | COMEDI_CB_EOA; s->async->events |= COMEDI_CB_ERROR;
/* disable_irq(dev->irq); */ /* disable_irq(dev->irq); */
} }
#endif #endif
...@@ -1491,8 +1491,7 @@ static void handle_a_interrupt(struct comedi_device *dev, unsigned short status, ...@@ -1491,8 +1491,7 @@ static void handle_a_interrupt(struct comedi_device *dev, unsigned short status,
/* we probably aren't even running a command now, /* we probably aren't even running a command now,
* so it's a good idea to be careful. */ * so it's a good idea to be careful. */
if (comedi_is_subdevice_running(s)) { if (comedi_is_subdevice_running(s)) {
s->async->events |= s->async->events |= COMEDI_CB_ERROR;
COMEDI_CB_ERROR | COMEDI_CB_EOA;
comedi_handle_events(dev, s); comedi_handle_events(dev, s);
} }
return; return;
...@@ -1579,7 +1578,7 @@ static void handle_b_interrupt(struct comedi_device *dev, ...@@ -1579,7 +1578,7 @@ static void handle_b_interrupt(struct comedi_device *dev,
dev_err(dev->class_dev, dev_err(dev->class_dev,
"unknown mite interrupt (ao_mite_status=%08x)\n", "unknown mite interrupt (ao_mite_status=%08x)\n",
ao_mite_status); ao_mite_status);
s->async->events |= COMEDI_CB_EOA | COMEDI_CB_ERROR; s->async->events |= COMEDI_CB_ERROR;
} }
#endif #endif
......
...@@ -418,7 +418,7 @@ static irqreturn_t nidio_interrupt(int irq, void *d) ...@@ -418,7 +418,7 @@ static irqreturn_t nidio_interrupt(int irq, void *d)
CHSR_DRQ1 | CHSR_MRDY)) { CHSR_DRQ1 | CHSR_MRDY)) {
dev_dbg(dev->class_dev, dev_dbg(dev->class_dev,
"unknown mite interrupt, disabling IRQ\n"); "unknown mite interrupt, disabling IRQ\n");
async->events |= COMEDI_CB_EOA | COMEDI_CB_ERROR; async->events |= COMEDI_CB_ERROR;
disable_irq(dev->irq); disable_irq(dev->irq);
} }
} }
...@@ -460,7 +460,7 @@ static irqreturn_t nidio_interrupt(int irq, void *d) ...@@ -460,7 +460,7 @@ static irqreturn_t nidio_interrupt(int irq, void *d)
break; break;
} else if (flags & Waited) { } else if (flags & Waited) {
writeb(ClearWaited, dev->mmio + Group_1_First_Clear); writeb(ClearWaited, dev->mmio + Group_1_First_Clear);
async->events |= COMEDI_CB_EOA | COMEDI_CB_ERROR; async->events |= COMEDI_CB_ERROR;
break; break;
} else if (flags & PrimaryTC) { } else if (flags & PrimaryTC) {
writeb(ClearPrimaryTC, writeb(ClearPrimaryTC,
......
...@@ -797,7 +797,7 @@ static void pcl812_handle_eoc(struct comedi_device *dev, ...@@ -797,7 +797,7 @@ static void pcl812_handle_eoc(struct comedi_device *dev,
if (pcl812_ai_eoc(dev, s, NULL, 0)) { if (pcl812_ai_eoc(dev, s, NULL, 0)) {
dev_dbg(dev->class_dev, "A/D cmd IRQ without DRDY!\n"); dev_dbg(dev->class_dev, "A/D cmd IRQ without DRDY!\n");
s->async->events |= COMEDI_CB_EOA | COMEDI_CB_ERROR; s->async->events |= COMEDI_CB_ERROR;
return; return;
} }
......
...@@ -468,7 +468,7 @@ static bool pcl818_ai_dropout(struct comedi_device *dev, ...@@ -468,7 +468,7 @@ static bool pcl818_ai_dropout(struct comedi_device *dev,
(devpriv->dma) ? "DMA" : (devpriv->dma) ? "DMA" :
(devpriv->usefifo) ? "FIFO" : "IRQ", (devpriv->usefifo) ? "FIFO" : "IRQ",
chan, expected_chan); chan, expected_chan);
s->async->events |= COMEDI_CB_EOA | COMEDI_CB_ERROR; s->async->events |= COMEDI_CB_ERROR;
return true; return true;
} }
return false; return false;
...@@ -501,7 +501,7 @@ static void pcl818_handle_eoc(struct comedi_device *dev, ...@@ -501,7 +501,7 @@ static void pcl818_handle_eoc(struct comedi_device *dev,
if (pcl818_ai_eoc(dev, s, NULL, 0)) { if (pcl818_ai_eoc(dev, s, NULL, 0)) {
dev_err(dev->class_dev, "A/D mode1/3 IRQ without DRDY!\n"); dev_err(dev->class_dev, "A/D mode1/3 IRQ without DRDY!\n");
s->async->events |= COMEDI_CB_EOA | COMEDI_CB_ERROR; s->async->events |= COMEDI_CB_ERROR;
return; return;
} }
...@@ -558,14 +558,14 @@ static void pcl818_handle_fifo(struct comedi_device *dev, ...@@ -558,14 +558,14 @@ static void pcl818_handle_fifo(struct comedi_device *dev,
if (status & 4) { if (status & 4) {
dev_err(dev->class_dev, "A/D mode1/3 FIFO overflow!\n"); dev_err(dev->class_dev, "A/D mode1/3 FIFO overflow!\n");
s->async->events |= COMEDI_CB_EOA | COMEDI_CB_ERROR; s->async->events |= COMEDI_CB_ERROR;
return; return;
} }
if (status & 1) { if (status & 1) {
dev_err(dev->class_dev, dev_err(dev->class_dev,
"A/D mode1/3 FIFO interrupt without data!\n"); "A/D mode1/3 FIFO interrupt without data!\n");
s->async->events |= COMEDI_CB_EOA | COMEDI_CB_ERROR; s->async->events |= COMEDI_CB_ERROR;
return; return;
} }
......
...@@ -210,8 +210,7 @@ static enum irqreturn daqp_interrupt(int irq, void *dev_id) ...@@ -210,8 +210,7 @@ static enum irqreturn daqp_interrupt(int irq, void *dev_id)
unsigned short data; unsigned short data;
if (status & DAQP_STATUS_DATA_LOST) { if (status & DAQP_STATUS_DATA_LOST) {
s->async->events |= s->async->events |= COMEDI_CB_OVERFLOW;
COMEDI_CB_EOA | COMEDI_CB_OVERFLOW;
dev_warn(dev->class_dev, "data lost\n"); dev_warn(dev->class_dev, "data lost\n");
break; break;
} }
...@@ -239,7 +238,7 @@ static enum irqreturn daqp_interrupt(int irq, void *dev_id) ...@@ -239,7 +238,7 @@ static enum irqreturn daqp_interrupt(int irq, void *dev_id)
if (loop_limit <= 0) { if (loop_limit <= 0) {
dev_warn(dev->class_dev, dev_warn(dev->class_dev,
"loop_limit reached in daqp_interrupt()\n"); "loop_limit reached in daqp_interrupt()\n");
s->async->events |= COMEDI_CB_EOA | COMEDI_CB_ERROR; s->async->events |= COMEDI_CB_ERROR;
} }
comedi_handle_events(dev, s); comedi_handle_events(dev, s);
......
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