These changes are the raw update to linux-4.4.6-rt14. Kernel sources
[kvmfornfv.git] / kernel / drivers / staging / comedi / drivers / rti800.c
index 340ac77..cd61d26 100644 (file)
  * Register map
  */
 #define RTI800_CSR             0x00
-#define RTI800_CSR_BUSY                (1 << 7)
-#define RTI800_CSR_DONE                (1 << 6)
-#define RTI800_CSR_OVERRUN     (1 << 5)
-#define RTI800_CSR_TCR         (1 << 4)
-#define RTI800_CSR_DMA_ENAB    (1 << 3)
-#define RTI800_CSR_INTR_TC     (1 << 2)
-#define RTI800_CSR_INTR_EC     (1 << 1)
-#define RTI800_CSR_INTR_OVRN   (1 << 0)
+#define RTI800_CSR_BUSY                BIT(7)
+#define RTI800_CSR_DONE                BIT(6)
+#define RTI800_CSR_OVERRUN     BIT(5)
+#define RTI800_CSR_TCR         BIT(4)
+#define RTI800_CSR_DMA_ENAB    BIT(3)
+#define RTI800_CSR_INTR_TC     BIT(2)
+#define RTI800_CSR_INTR_EC     BIT(1)
+#define RTI800_CSR_INTR_OVRN   BIT(0)
 #define RTI800_MUXGAIN         0x01
 #define RTI800_CONVERT         0x02
 #define RTI800_ADCLO           0x03
@@ -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);