The comedi core will only call the (*insn_read) and (*do_cmd) functions if the subdevice is not "busy". All async commands are terminated by a (*cancel) operation which clears the INTE and PACER_MASK bits in the interrupt control register. These bits are also cleared when the driver first attaches. There is no need for the (*insn_read) or (*do_cmd) to duplicate the cancel. Signed-off-by: H Hartley Sweeten <hsweeten@xxxxxxxxxxxxxxxxxxx> Cc: Ian Abbott <abbotti@xxxxxxxxx> Cc: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> --- drivers/staging/comedi/drivers/das16m1.c | 9 --------- 1 file changed, 9 deletions(-) diff --git a/drivers/staging/comedi/drivers/das16m1.c b/drivers/staging/comedi/drivers/das16m1.c index dcec4e2..ce788ae 100644 --- a/drivers/staging/comedi/drivers/das16m1.c +++ b/drivers/staging/comedi/drivers/das16m1.c @@ -226,10 +226,6 @@ static int das16m1_cmd_exec(struct comedi_device *dev, struct comedi_cmd *cmd = &async->cmd; unsigned int byte, i; - /* disable interrupts and internal pacer */ - devpriv->control_state &= ~INTE & ~PACER_MASK; - outb(devpriv->control_state, dev->iobase + DAS16M1_INTR_CONTROL); - /* set software count */ devpriv->adc_count = 0; @@ -313,15 +309,10 @@ static int das16m1_ai_rinsn(struct comedi_device *dev, struct comedi_subdevice *s, struct comedi_insn *insn, unsigned int *data) { - struct das16m1_private_struct *devpriv = dev->private; int ret; int n; int byte; - /* disable interrupts and internal pacer */ - devpriv->control_state &= ~INTE & ~PACER_MASK; - outb(devpriv->control_state, dev->iobase + DAS16M1_INTR_CONTROL); - /* setup channel/gain queue */ outb(0, dev->iobase + DAS16M1_QUEUE_ADDR); byte = -- 2.6.3 _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel