staging: comedi: rtd520: cleanup rtd_dio_insn_bits()
authorH Hartley Sweeten <hsweeten@visionengravers.com>
Tue, 26 Mar 2013 21:58:49 +0000 (14:58 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 28 Mar 2013 23:16:21 +0000 (16:16 -0700)
Add some local variables to make this function a bit cleaner and
remove the unnecessary comments.

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>
drivers/staging/comedi/drivers/rtd520.c

index f98ec1467bdd7021387f1830c9b6c12ed49290a0..bfe3832c336dd9487fa3f9cd3ec913576232b3d7 100644 (file)
@@ -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;