staging: comedi: rti800: use comedi_offset_munge()
authorH Hartley Sweeten <hsweeten@visionengravers.com>
Wed, 23 Sep 2015 17:43:37 +0000 (10:43 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 29 Sep 2015 01:27:21 +0000 (03:27 +0200)
Use the comedi_offset_munge() helper to do the two's complement
to comedi offset binary and comedi offset binary to two's complement
conversions.

Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com>
Reviewed-by: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/comedi/drivers/rti800.c

index 528e0697c9c7ae038b6a2d0d9e0b521252855493..cd61d2645af452f31e314c8232554499bed189ab 100644 (file)
@@ -189,17 +189,21 @@ static int rti800_ai_insn_read(struct comedi_device *dev,
        }
 
        for (i = 0; i < insn->n; i++) {
+               unsigned int val;
+
                outb(0, dev->iobase + RTI800_CONVERT);
 
                ret = comedi_timeout(dev, s, insn, rti800_ai_eoc, 0);
                if (ret)
                        return ret;
 
-               data[i] = inb(dev->iobase + RTI800_ADCLO);
-               data[i] |= (inb(dev->iobase + RTI800_ADCHI) & 0xf) << 8;
+               val = inb(dev->iobase + RTI800_ADCLO);
+               val |= (inb(dev->iobase + RTI800_ADCHI) & 0xf) << 8;
 
                if (devpriv->adc_2comp)
-                       data[i] ^= 0x800;
+                       val = comedi_offset_munge(s, val);
+
+               data[i] = val;
        }
 
        return insn->n;
@@ -222,7 +226,7 @@ static int rti800_ao_insn_write(struct comedi_device *dev,
                s->readback[chan] = val;
 
                if (devpriv->dac_2comp[chan])
-                       val ^= 0x800;
+                       val = comedi_offset_munge(s, val);
 
                outb(val & 0xff, dev->iobase + reg_lo);
                outb((val >> 8) & 0xff, dev->iobase + reg_hi);