From df67771aea32e5399bdaef2752a4c46116a239dd Mon Sep 17 00:00:00 2001 From: H Hartley Sweeten Date: Mon, 22 Apr 2013 18:36:28 -0700 Subject: [PATCH] --- yaml --- r: 364196 b: refs/heads/master c: 26234771c1a53b0a3bf69c161d79cd37c77ebd1a h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/staging/comedi/drivers/das800.c | 23 ++++++++++--------- 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/[refs] b/[refs] index 4d3552bb696c..2fe2cc89af35 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 264601c231c9c9dec3da2c665c0b9cbec11d8c9e +refs/heads/master: 26234771c1a53b0a3bf69c161d79cd37c77ebd1a diff --git a/trunk/drivers/staging/comedi/drivers/das800.c b/trunk/drivers/staging/comedi/drivers/das800.c index b68c74106117..4f6698dc76db 100644 --- a/trunk/drivers/staging/comedi/drivers/das800.c +++ b/trunk/drivers/staging/comedi/drivers/das800.c @@ -648,21 +648,22 @@ static int das800_do_insn_bits(struct comedi_device *dev, unsigned int *data) { struct das800_private *devpriv = dev->private; - int wbits; + unsigned int mask = data[0]; + unsigned int bits = data[1]; unsigned long irq_flags; - /* only set bits that have been masked */ - data[0] &= 0xf; - wbits = devpriv->do_bits >> 4; - wbits &= ~data[0]; - wbits |= data[0] & data[1]; - devpriv->do_bits = wbits << 4; + if (mask) { + s->state &= ~mask; + s->state |= (bits & mask); + devpriv->do_bits = s->state << 4; - spin_lock_irqsave(&dev->spinlock, irq_flags); - das800_ind_write(dev, CONTROL1_INTE | devpriv->do_bits, CONTROL1); - spin_unlock_irqrestore(&dev->spinlock, irq_flags); + spin_lock_irqsave(&dev->spinlock, irq_flags); + das800_ind_write(dev, CONTROL1_INTE | devpriv->do_bits, + CONTROL1); + spin_unlock_irqrestore(&dev->spinlock, irq_flags); + } - data[1] = wbits; + data[1] = s->state; return insn->n; }