]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - drivers/staging/comedi/drivers/ni_daq_700.c
Merge branch 'next' of git://git.kernel.org/pub/scm/virt/kvm/kvm
[karo-tx-linux.git] / drivers / staging / comedi / drivers / ni_daq_700.c
index 3c50e31ecc6070518895114c2769bee0d73dc124..404f83de276da21bd00cb4d17c7b87eb9fd9743d 100644 (file)
@@ -45,9 +45,9 @@ Manuals:      Register level: http://www.ni.com/pdf/manuals/340698.pdf
                User Manual:    http://www.ni.com/pdf/manuals/320676d.pdf
 */
 
-#include <linux/ioport.h>
+#include <linux/module.h>
+#include <linux/delay.h>
 #include <linux/interrupt.h>
-#include <linux/slab.h>
 
 #include "../comedidev.h"
 
@@ -90,21 +90,17 @@ static int daq700_dio_insn_bits(struct comedi_device *dev,
 
 static int daq700_dio_insn_config(struct comedi_device *dev,
                                  struct comedi_subdevice *s,
-                                 struct comedi_insn *insn, unsigned int *data)
+                                 struct comedi_insn *insn,
+                                 unsigned int *data)
 {
-       unsigned int chan = 1 << CR_CHAN(insn->chanspec);
-
-       switch (data[0]) {
-       case INSN_CONFIG_DIO_INPUT:
-               break;
-       case INSN_CONFIG_DIO_OUTPUT:
-               break;
-       case INSN_CONFIG_DIO_QUERY:
-               data[1] = (s->io_bits & chan) ? COMEDI_OUTPUT : COMEDI_INPUT;
-               break;
-       default:
-               return -EINVAL;
-       }
+       int ret;
+
+       ret = comedi_dio_insn_config(dev, s, insn, data, 0);
+       if (ret)
+               return ret;
+
+       /* The DIO channels are not configurable, fix the io_bits */
+       s->io_bits = 0x00ff;
 
        return insn->n;
 }