mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-15 21:21:49 -04:00
staging: comedi: s626: cleanup s626_dio_insn_bits()
Add some local variables to make this function a bit clearer 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>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
e920fad281
commit
1515e52226
@@ -1650,33 +1650,22 @@ static void s626_dio_init(struct comedi_device *dev)
|
||||
}
|
||||
}
|
||||
|
||||
/* 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 s626_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)
|
||||
{
|
||||
unsigned long group = (unsigned long)s->private;
|
||||
unsigned long mask = data[0];
|
||||
unsigned long bits = data[1];
|
||||
|
||||
/*
|
||||
* The insn data consists of a mask in data[0] and the new data in
|
||||
* data[1]. The mask defines which bits we are concerning about.
|
||||
* The new data must be anded with the mask. Each channel
|
||||
* corresponds to a bit.
|
||||
*/
|
||||
if (data[0]) {
|
||||
/* Check if requested ports are configured for output */
|
||||
if ((s->io_bits & data[0]) != data[0])
|
||||
if (mask) {
|
||||
/* Check if requested channels are configured for output */
|
||||
if ((s->io_bits & mask) != mask)
|
||||
return -EIO;
|
||||
|
||||
s->state &= ~data[0];
|
||||
s->state |= data[0] & data[1];
|
||||
|
||||
/* Write out the new digital output lines */
|
||||
s->state &= ~mask;
|
||||
s->state |= (bits & mask);
|
||||
|
||||
DEBIwrite(dev, LP_WRDOUT(group), s->state);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user