The acl-8112 boards also need to write a value to the software trigger register in order to start an A/D conversion. Remove the if (!board->is_8112) test so that the write is always done. Also, the analog input mode does not need to be set each time for multiple samples. Move the pcl711_ai_set_mode() out of the for loop. Signed-off-by: H Hartley Sweeten <hsweeten@xxxxxxxxxxxxxxxxxxx> Cc: Ian Abbott <abbotti@xxxxxxxxx> Cc: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> --- drivers/staging/comedi/drivers/pcl711.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/drivers/staging/comedi/drivers/pcl711.c b/drivers/staging/comedi/drivers/pcl711.c index 945e0bc..f8401b7 100644 --- a/drivers/staging/comedi/drivers/pcl711.c +++ b/drivers/staging/comedi/drivers/pcl711.c @@ -91,7 +91,8 @@ supported. #define PCL711_MODE_PACER (4 << 0) #define PCL711_MODE_PACER_IRQ (6 << 0) #define PCL711_MODE_IRQ(x) (((x) & 0x7) << 4) -#define PCL711_SOFTTRIG 0x0c +#define PCL711_SOFTTRIG_REG 0x0c +#define PCL711_SOFTTRIG (0 << 0) /* any value will work */ #define PCL711_DO_LO 0x0d #define PCL711_DO_HI 0x0e @@ -280,17 +281,15 @@ static int pcl711_ai_wait_for_eoc(struct comedi_device *dev, static int pcl711_ai_insn(struct comedi_device *dev, struct comedi_subdevice *s, struct comedi_insn *insn, unsigned int *data) { - const struct pcl711_board *board = comedi_board(dev); int ret; int n; pcl711_set_changain(dev, insn->chanspec); - for (n = 0; n < insn->n; n++) { - pcl711_ai_set_mode(dev, PCL711_MODE_SOFTTRIG); + pcl711_ai_set_mode(dev, PCL711_MODE_SOFTTRIG); - if (!board->is_8112) - outb(0, dev->iobase + PCL711_SOFTTRIG); + for (n = 0; n < insn->n; n++) { + outb(PCL711_SOFTTRIG, dev->iobase + PCL711_SOFTTRIG_REG); ret = pcl711_ai_wait_for_eoc(dev, 100); if (ret) -- 1.8.3.2 _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel