aboutsummaryrefslogtreecommitdiff
path: root/drivers/staging/comedi/drivers/adl_pci9111.c
diff options
context:
space:
mode:
authorH Hartley Sweeten <hartleys@visionengravers.com>2012-09-10 18:52:58 -0700
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2012-09-10 20:02:23 -0700
commit83dcfee0f2b29e689f79f259bde1c1dc34772b13 (patch)
treea06b666c79e841f141e0f9a5200c064e7cb9e951 /drivers/staging/comedi/drivers/adl_pci9111.c
parentbfa6d3b80fe578d6f930107f75b600920d7e74e0 (diff)
staging: comedi: adl_pci9111: cleanup pci9111_do_insn_bits()
Remove the unnecessary comments. Cleanup the function to follow the comedi standard for digital outputs. The 'mask' does not need to be checked, the comedi core will make sure that it is valid based on the subdevice data. The outputs only need to be updated if the 'mask' indicates something is changing, otherwise we just need to return the current "state" of the outputs. Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com> Cc: Ian Abbott <abbotti@mev.co.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/staging/comedi/drivers/adl_pci9111.c')
-rw-r--r--drivers/staging/comedi/drivers/adl_pci9111.c27
1 files changed, 10 insertions, 17 deletions
diff --git a/drivers/staging/comedi/drivers/adl_pci9111.c b/drivers/staging/comedi/drivers/adl_pci9111.c
index 71eebe58fbc..477aa2ba0f8 100644
--- a/drivers/staging/comedi/drivers/adl_pci9111.c
+++ b/drivers/staging/comedi/drivers/adl_pci9111.c
@@ -108,7 +108,6 @@ TODO:
#define PCI9111_AO_RESOLUTION_MASK 0x0FFF
#define PCI9111_DI_CHANNEL_NBR 16
#define PCI9111_DO_CHANNEL_NBR 16
-#define PCI9111_DO_MASK 0xFFFF
#define PCI9111_RANGE_SETTING_DELAY 10
#define PCI9111_AI_INSTANT_READ_UDELAY_US 2
@@ -1088,28 +1087,22 @@ static int pci9111_di_insn_bits(struct comedi_device *dev,
return insn->n;
}
-/* Digital outputs */
-
static int pci9111_do_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 int bits;
+ unsigned int mask = data[0];
+ unsigned int bits = data[1];
- /* Only set bits that have been masked */
- /* data[0] = mask */
- /* data[1] = bit state */
+ if (mask) {
+ s->state &= ~mask;
+ s->state |= (bits & mask);
- data[0] &= PCI9111_DO_MASK;
-
- bits = s->state;
- bits &= ~data[0];
- bits |= data[0] & data[1];
- s->state = bits;
-
- outw(bits, dev->iobase + PCI9111_DIO_REG);
+ outw(s->state, dev->iobase + PCI9111_DIO_REG);
+ }
- data[1] = bits;
+ data[1] = s->state;
return insn->n;
}