diff --git a/[refs] b/[refs] index 76e2c5dfcc76..7f0f537ea5a6 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: cd8de2ea012c94fb4d0fa385082d9dce26438265 +refs/heads/master: 64592df26f47a5b5512da2e23475bba5d918fbf6 diff --git a/trunk/drivers/staging/comedi/drivers/acl7225b.c b/trunk/drivers/staging/comedi/drivers/acl7225b.c index ae7ac950c6de..80cfa817dd45 100644 --- a/trunk/drivers/staging/comedi/drivers/acl7225b.c +++ b/trunk/drivers/staging/comedi/drivers/acl7225b.c @@ -40,15 +40,19 @@ static int acl7225b_do_insn_bits(struct comedi_device *dev, struct comedi_insn *insn, unsigned int *data) { - if (data[0]) { - s->state &= ~data[0]; - s->state |= (data[0] & data[1]); + unsigned long reg = (unsigned long)s->private; + unsigned int mask = data[0]; + unsigned int bits = data[1]; + + if (mask) { + s->state &= ~mask; + s->state |= (bits & mask); + + if (mask & 0x00ff) + outb(s->state & 0xff, dev->iobase + reg); + if (mask & 0xff00) + outb((s->state >> 8), dev->iobase + reg + 1); } - if (data[0] & 0x00ff) - outb(s->state & 0xff, dev->iobase + (unsigned long)s->private); - if (data[0] & 0xff00) - outb((s->state >> 8), - dev->iobase + (unsigned long)s->private + 1); data[1] = s->state;