From: H Hartley Sweeten Date: Wed, 5 Jun 2013 22:37:06 +0000 (-0700) Subject: staging: comedi: pcmad: tidy up pcmad_ai_insn_read() X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=3275b4d3db1f087c67fa115b150a9d2f9d8429f9;p=linux-beck.git 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 Cc: Ian Abbott Signed-off-by: Greg Kroah-Hartman --- diff --git a/drivers/staging/comedi/drivers/pcmad.c b/drivers/staging/comedi/drivers/pcmad.c index a05b5d488f7d..6b31e43335cc 100644 --- a/drivers/staging/comedi/drivers/pcmad.c +++ b/drivers/staging/comedi/drivers/pcmad.c @@ -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, 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; - int chan; - int n; + unsigned int chan = CR_CHAN(insn->chanspec); + unsigned int val; int ret; + int i; - chan = CR_CHAN(insn->chanspec); - - for (n = 0; n < insn->n; n++) { + for (i = 0; i < insn->n; i++) { outb(chan, dev->iobase + PCMAD_CONVERT); ret = pcmad_ai_wait_for_eoc(dev, TIMEOUT); if (ret) return ret; - data[n] = inb(dev->iobase + PCMAD_LSB); - data[n] |= (inb(dev->iobase + PCMAD_MSB) << 8); + val = inb(dev->iobase + PCMAD_LSB) | + (inb(dev->iobase + PCMAD_MSB) << 8); if (devpriv->twos_comp) - data[n] ^= ((s->maxdata + 1) >> 1); + val ^= ((s->maxdata + 1) >> 1); + + data[i] = val; } - return n; + return insn->n; } /*