Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3275b4d3 authored by H Hartley Sweeten's avatar H Hartley Sweeten Committed by Greg Kroah-Hartman
Browse files

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: default avatarH Hartley Sweeten <hsweeten@visionengravers.com>
Cc: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent a0e82af4
Loading
Loading
Loading
Loading
+12 −10
Original line number Diff line number Diff line
@@ -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;
}

/*