From ac7d909706542d4516eb5bff17de59df683b0fa9 Mon Sep 17 00:00:00 2001 From: H Hartley Sweeten Date: Mon, 8 Apr 2013 14:31:23 -0700 Subject: [PATCH] --- yaml --- r: 363987 b: refs/heads/master c: 64592df26f47a5b5512da2e23475bba5d918fbf6 h: refs/heads/master i: 363985: a1823705aedde51821aae219d206bb00f3417aa1 363983: 162911ba8166dc01729fa6c1291dddd63bcd109d v: v3 --- [refs] | 2 +- .../drivers/staging/comedi/drivers/acl7225b.c | 20 +++++++++++-------- 2 files changed, 13 insertions(+), 9 deletions(-) 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;