staging: comedi: pcmad: tidy up pcmad_ai_insn_read()

Use a local variable to read and munge the analog input data instead
of directly using the 'data' pointer passed to the function.

(*insn_read) functions either return an errno or the number of data
values read. Change the final return to insn->n to make this clearer.

Tidy up the function.

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>
This commit is contained in:
H Hartley Sweeten 2013-06-05 15:37:06 -07:00 committed by Greg Kroah-Hartman
parent a0e82af4c5
commit 3275b4d3db

View File

@ -86,30 +86,32 @@ static int pcmad_ai_wait_for_eoc(struct comedi_device *dev,
static int pcmad_ai_insn_read(struct comedi_device *dev, static int pcmad_ai_insn_read(struct comedi_device *dev,
struct comedi_subdevice *s, struct comedi_subdevice *s,
struct comedi_insn *insn, unsigned int *data) struct comedi_insn *insn,
unsigned int *data)
{ {
struct pcmad_priv_struct *devpriv = dev->private; struct pcmad_priv_struct *devpriv = dev->private;
int chan; unsigned int chan = CR_CHAN(insn->chanspec);
int n; unsigned int val;
int ret; int ret;
int i;
chan = CR_CHAN(insn->chanspec); for (i = 0; i < insn->n; i++) {
for (n = 0; n < insn->n; n++) {
outb(chan, dev->iobase + PCMAD_CONVERT); outb(chan, dev->iobase + PCMAD_CONVERT);
ret = pcmad_ai_wait_for_eoc(dev, TIMEOUT); ret = pcmad_ai_wait_for_eoc(dev, TIMEOUT);
if (ret) if (ret)
return ret; return ret;
data[n] = inb(dev->iobase + PCMAD_LSB); val = inb(dev->iobase + PCMAD_LSB) |
data[n] |= (inb(dev->iobase + PCMAD_MSB) << 8); (inb(dev->iobase + PCMAD_MSB) << 8);
if (devpriv->twos_comp) if (devpriv->twos_comp)
data[n] ^= ((s->maxdata + 1) >> 1); val ^= ((s->maxdata + 1) >> 1);
data[i] = val;
} }
return n; return insn->n;
} }
/* /*