From a97d4c358fd89f631f5d3c1efb495286a3d28da3 Mon Sep 17 00:00:00 2001 From: H Hartley Sweeten Date: Mon, 10 Sep 2012 18:52:58 -0700 Subject: [PATCH] --- yaml --- r: 325115 b: refs/heads/master c: 83dcfee0f2b29e689f79f259bde1c1dc34772b13 h: refs/heads/master i: 325113: 397f7524adc01c85eb084dead3b4b0d64c8e0642 325111: d567afb4d8390b173ffe2d76bae3be0885decd04 v: v3 --- [refs] | 2 +- .../staging/comedi/drivers/adl_pci9111.c | 27 +++++++------------ 2 files changed, 11 insertions(+), 18 deletions(-) diff --git a/[refs] b/[refs] index 8a0e03023b34..a3dfe1882c39 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: bfa6d3b80fe578d6f930107f75b600920d7e74e0 +refs/heads/master: 83dcfee0f2b29e689f79f259bde1c1dc34772b13 diff --git a/trunk/drivers/staging/comedi/drivers/adl_pci9111.c b/trunk/drivers/staging/comedi/drivers/adl_pci9111.c index 71eebe58fbc6..477aa2ba0f82 100644 --- a/trunk/drivers/staging/comedi/drivers/adl_pci9111.c +++ b/trunk/drivers/staging/comedi/drivers/adl_pci9111.c @@ -108,7 +108,6 @@ a multiple of chanlist_len*convert_arg. #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; }