Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux
[cascardo/linux.git] / drivers / staging / comedi / drivers / adq12b.c
index 6700320..8b15cbe 100644 (file)
@@ -79,20 +79,20 @@ If you do not specify any options, they will default to
 #include "../comedidev.h"
 
 /* address scheme (page 2.17 of the manual) */
-#define ADQ12B_SIZE     16
-
-#define ADQ12B_CTREG    0x00
-#define ADQ12B_STINR    0x00
-#define ADQ12B_OUTBR    0x04
-#define ADQ12B_ADLOW    0x08
-#define ADQ12B_ADHIG    0x09
-#define ADQ12B_CONT0    0x0c
-#define ADQ12B_CONT1    0x0d
-#define ADQ12B_CONT2    0x0e
-#define ADQ12B_COWORD   0x0f
-
-/* mask of the bit at STINR to check end of conversion */
-#define ADQ12B_EOC     0x20
+#define ADQ12B_CTREG           0x00
+#define ADQ12B_CTREG_MSKP      (1 << 7)        /* enable pacer interrupt */
+#define ADQ12B_CTREG_GTP       (1 << 6)        /* enable pacer */
+#define ADQ12B_CTREG_RANGE(x)  ((x) << 4)
+#define ADQ12B_CTREG_CHAN(x)   ((x) << 0)
+#define ADQ12B_STINR           0x00
+#define ADQ12B_STINR_OUT2      (1 << 7)        /* timer 2 output state */
+#define ADQ12B_STINR_OUTP      (1 << 6)        /* pacer output state */
+#define ADQ12B_STINR_EOC       (1 << 5)        /* A/D end-of-conversion */
+#define ADQ12B_STINR_IN_MASK   (0x1f << 0)
+#define ADQ12B_OUTBR           0x04
+#define ADQ12B_ADLOW           0x08
+#define ADQ12B_ADHIG           0x09
+#define ADQ12B_TIMER_BASE      0x0c
 
 /* available ranges through the PGA gains */
 static const struct comedi_lrange range_adq12b_ai_bipolar = {
@@ -125,7 +125,7 @@ static int adq12b_ai_eoc(struct comedi_device *dev,
        unsigned char status;
 
        status = inb(dev->iobase + ADQ12B_STINR);
-       if (status & ADQ12B_EOC)
+       if (status & ADQ12B_STINR_EOC)
                return 0;
        return -EBUSY;
 }
@@ -143,7 +143,7 @@ static int adq12b_ai_insn_read(struct comedi_device *dev,
        int i;
 
        /* change channel and range only if it is different from the previous */
-       val = (range << 4) | chan;
+       val = ADQ12B_CTREG_RANGE(range) | ADQ12B_CTREG_CHAN(chan);
        if (val != devpriv->last_ctreg) {
                outb(val, dev->iobase + ADQ12B_CTREG);
                devpriv->last_ctreg = val;
@@ -172,7 +172,7 @@ static int adq12b_di_insn_bits(struct comedi_device *dev,
 {
 
        /* only bits 0-4 have information about digital inputs */
-       data[1] = (inb(dev->iobase + ADQ12B_STINR) & (0x1f));
+       data[1] = (inb(dev->iobase + ADQ12B_STINR) & ADQ12B_STINR_IN_MASK);
 
        return insn->n;
 }
@@ -208,7 +208,7 @@ static int adq12b_attach(struct comedi_device *dev, struct comedi_devconfig *it)
        struct comedi_subdevice *s;
        int ret;
 
-       ret = comedi_request_region(dev, it->options[0], ADQ12B_SIZE);
+       ret = comedi_request_region(dev, it->options[0], 0x10);
        if (ret)
                return ret;
 
@@ -222,43 +222,38 @@ static int adq12b_attach(struct comedi_device *dev, struct comedi_devconfig *it)
        if (ret)
                return ret;
 
+       /* Analog Input subdevice */
        s = &dev->subdevices[0];
-       /* analog input subdevice */
-       s->type = COMEDI_SUBD_AI;
+       s->type         = COMEDI_SUBD_AI;
        if (it->options[2]) {
-               s->subdev_flags = SDF_READABLE | SDF_DIFF;
-               s->n_chan = 8;
+               s->subdev_flags = SDF_READABLE | SDF_DIFF;
+               s->n_chan       = 8;
        } else {
-               s->subdev_flags = SDF_READABLE | SDF_GROUND;
-               s->n_chan = 16;
+               s->subdev_flags = SDF_READABLE | SDF_GROUND;
+               s->n_chan       = 16;
        }
+       s->maxdata      = 0xfff;
+       s->range_table  = it->options[1] ? &range_adq12b_ai_unipolar
+                                        : &range_adq12b_ai_bipolar;
+       s->insn_read    = adq12b_ai_insn_read;
 
-       s->range_table = it->options[1] ? &range_adq12b_ai_unipolar
-                                       : &range_adq12b_ai_bipolar;
-
-       s->maxdata = 0xfff;
-
-       s->len_chanlist = 4;    /* This is the maximum chanlist length that
-                                  the board can handle */
-       s->insn_read = adq12b_ai_insn_read;
-
+       /* Digital Input subdevice */
        s = &dev->subdevices[1];
-       /* digital input subdevice */
-       s->type = COMEDI_SUBD_DI;
-       s->subdev_flags = SDF_READABLE;
-       s->n_chan = 5;
-       s->maxdata = 1;
-       s->range_table = &range_digital;
-       s->insn_bits = adq12b_di_insn_bits;
-
+       s->type         = COMEDI_SUBD_DI;
+       s->subdev_flags = SDF_READABLE;
+       s->n_chan       = 5;
+       s->maxdata      = 1;
+       s->range_table  = &range_digital;
+       s->insn_bits    = adq12b_di_insn_bits;
+
+       /* Digital Output subdevice */
        s = &dev->subdevices[2];
-       /* digital output subdevice */
-       s->type = COMEDI_SUBD_DO;
-       s->subdev_flags = SDF_WRITABLE;
-       s->n_chan = 8;
-       s->maxdata = 1;
-       s->range_table = &range_digital;
-       s->insn_bits = adq12b_do_insn_bits;
+       s->type         = COMEDI_SUBD_DO;
+       s->subdev_flags = SDF_WRITABLE;
+       s->n_chan       = 8;
+       s->maxdata      = 1;
+       s->range_table  = &range_digital;
+       s->insn_bits    = adq12b_do_insn_bits;
 
        return 0;
 }