summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorH Hartley Sweeten <hartleys@visionengravers.com>2014-03-13 10:10:00 -0700
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2014-03-17 14:16:16 -0700
commit6632d65e3494f3fb0062b417b6a07086d8a2de70 (patch)
tree5b8a69c16b18efdff63b4964f62204b9c0b93b3f
parent3ecbbb56cb134982c48e8d94d891fd2296af4faa (diff)
staging: comedi: fl512: tidy up fl512_ao_insn_read()
Tidy up this function. Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com> Reviewed-by: Ian Abbott <abbotti@mev.co.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r--drivers/staging/comedi/drivers/fl512.c30
1 files changed, 17 insertions, 13 deletions
diff --git a/drivers/staging/comedi/drivers/fl512.c b/drivers/staging/comedi/drivers/fl512.c
index 90a8fd9a7f1..3bf6d6fa12d 100644
--- a/drivers/staging/comedi/drivers/fl512.c
+++ b/drivers/staging/comedi/drivers/fl512.c
@@ -52,22 +52,26 @@ static int fl512_ai_insn_read(struct comedi_device *dev,
struct comedi_insn *insn,
unsigned int *data)
{
- int n;
- unsigned int lo_byte, hi_byte;
- char chan = CR_CHAN(insn->chanspec);
-
- for (n = 0; n < insn->n; n++) { /* sample n times on selected channel */
- /* XXX probably can move next step out of for() loop -- will
- * make AI a little bit faster. */
- outb(chan, dev->iobase + FL512_AI_MUX_REG);
+ unsigned int chan = CR_CHAN(insn->chanspec);
+ unsigned int val;
+ int i;
+
+ outb(chan, dev->iobase + FL512_AI_MUX_REG);
+
+ for (i = 0; i < insn->n; i++) {
outb(0, dev->iobase + FL512_AI_START_CONV_REG);
+
/* XXX should test "done" flag instead of delay */
- udelay(30); /* sleep 30 usec */
- lo_byte = inb(dev->iobase + FL512_AI_LSB_REG);
- hi_byte = inb(dev->iobase + FL512_AI_MSB_REG) & 0xf;
- data[n] = lo_byte + (hi_byte << 8);
+ udelay(30);
+
+ val = inb(dev->iobase + FL512_AI_LSB_REG);
+ val |= (inb(dev->iobase + FL512_AI_MSB_REG) << 8);
+ val &= s->maxdata;
+
+ data[i] = val;
}
- return n;
+
+ return insn->n;
}
static int fl512_ao_insn_write(struct comedi_device *dev,