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

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

staging: comedi: rtd520: cleanup rtd_dio_insn_bits()



Add some local variables to make this function a bit cleaner and
remove the unnecessary comments.

Signed-off-by: default avatarH Hartley Sweeten <hsweeten@visionengravers.com>
Reviewed-by: default avatarIan Abbott <abbotti@mev.co.uk>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent dde4196e
Loading
Loading
Loading
Loading
+8 −19
Original line number Diff line number Diff line
@@ -1128,33 +1128,22 @@ static int rtd_ao_rinsn(struct comedi_device *dev,
	return i;
}

/*
   Write a masked set of bits and the read back the port.
   We track what the bits should be (i.e. we don't read the port first).

   DIO devices are slightly special.  Although it is possible to
 * implement the insn_read/insn_write interface, it is much more
 * useful to applications if you implement the insn_bits interface.
 * This allows packed reading/writing of the DIO channels.  The
 * comedi core can convert between insn_bits and insn_read/write
 */
static int rtd_dio_insn_bits(struct comedi_device *dev,
			     struct comedi_subdevice *s,
			     struct comedi_insn *insn, unsigned int *data)
			     struct comedi_insn *insn,
			     unsigned int *data)
{
	struct rtdPrivate *devpriv = dev->private;
	unsigned int mask = data[0];
	unsigned int bits = data[1];

	/* The insn data is a mask in data[0] and the new data
	 * in data[1], each channel cooresponding to a bit. */
	if (data[0]) {
		s->state &= ~data[0];
		s->state |= data[0] & data[1];
	if (mask) {
		s->state &= ~mask;
		s->state |= (bits & mask);

		/* Write out the new digital output lines */
		writew(s->state & 0xff, devpriv->las0 + LAS0_DIO0);
	}
	/* on return, data[1] contains the value of the digital
	 * input lines. */

	data[1] = readw(devpriv->las0 + LAS0_DIO0) & 0xff;

	return insn->n;