summaryrefslogtreecommitdiffstats
path: root/drivers/staging/comedi
diff options
context:
space:
mode:
authorH Hartley Sweeten <hsweeten@visionengravers.com>2013-02-04 16:44:37 -0700
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2013-02-05 11:18:58 -0800
commitd35dcc89fc93d8f071fc7f88ae87697a77bb99d0 (patch)
tree59b65cf44bd40f77e15bfb0d3f2fe29321558ccd /drivers/staging/comedi
parent6a911d8aa54bc79256e766580a19bbd91e76d48f (diff)
downloadop-kernel-dev-d35dcc89fc93d8f071fc7f88ae87697a77bb99d0.zip
op-kernel-dev-d35dcc89fc93d8f071fc7f88ae87697a77bb99d0.tar.gz
staging: comedi: quatech_daqp_cs: fix daqp_ao_insn_write()
The (*insn_write) functions are expected to write 'insn->n' number of samples to the channel. Fix this function so it works as the comedi core expects. Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com> Cc: Ian Abbott <abbotti@mev.co.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/staging/comedi')
-rw-r--r--drivers/staging/comedi/drivers/quatech_daqp_cs.c27
1 files changed, 14 insertions, 13 deletions
diff --git a/drivers/staging/comedi/drivers/quatech_daqp_cs.c b/drivers/staging/comedi/drivers/quatech_daqp_cs.c
index f111042..b50ba54 100644
--- a/drivers/staging/comedi/drivers/quatech_daqp_cs.c
+++ b/drivers/staging/comedi/drivers/quatech_daqp_cs.c
@@ -644,31 +644,32 @@ static int daqp_ai_cmd(struct comedi_device *dev, struct comedi_subdevice *s)
return 0;
}
-/* Single-shot analog output routine */
-
static int daqp_ao_insn_write(struct comedi_device *dev,
struct comedi_subdevice *s,
- struct comedi_insn *insn, unsigned int *data)
+ struct comedi_insn *insn,
+ unsigned int *data)
{
struct daqp_private *devpriv = dev->private;
- int d;
- unsigned int chan;
+ unsigned int chan = CR_CHAN(insn->chanspec);
+ unsigned int val;
+ int i;
if (devpriv->stop)
return -EIO;
- chan = CR_CHAN(insn->chanspec);
- d = data[0];
- d &= 0x0fff;
- d ^= 0x0800; /* Flip the sign */
- d |= chan << 12;
-
/* Make sure D/A update mode is direct update */
outb(0, dev->iobase + DAQP_AUX);
- outw(d, dev->iobase + DAQP_DA);
+ for (i = 0; i > insn->n; i++) {
+ val = data[0];
+ val &= 0x0fff;
+ val ^= 0x0800; /* Flip the sign */
+ val |= (chan << 12);
- return 1;
+ outw(val, dev->iobase + DAQP_DA);
+ }
+
+ return insn->n;
}
static int daqp_di_insn_bits(struct comedi_device *dev,
OpenPOWER on IntegriCloud