summaryrefslogtreecommitdiff
path: root/drivers/staging/comedi/kcomedilib/kcomedilib_main.c
diff options
context:
space:
mode:
authorGreg Kroah-Hartman <gregkh@suse.de>2010-05-03 21:44:55 (GMT)
committerGreg Kroah-Hartman <gregkh@suse.de>2010-05-11 18:36:02 (GMT)
commita1525758c848aedf590bba3a919321e2d80fcd6e (patch)
treee5a32b23874a63b6dc8f388a7e25e762cb2285ac /drivers/staging/comedi/kcomedilib/kcomedilib_main.c
parent6b18af18d2c48c07864cf38b5475a0f4d1913bc4 (diff)
downloadlinux-fsl-qoriq-a1525758c848aedf590bba3a919321e2d80fcd6e.tar.xz
Staging: comedi: kcomedilib: delete dio.c and get.c
Merge these two files into kcomedilib_main.c as they are tiny. This will also let us get rid of another global symbol in the future. Cc: Ian Abbott <abbotti@mev.co.uk> Cc: Frank Mori Hess <fmhess@users.sourceforge.net> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/staging/comedi/kcomedilib/kcomedilib_main.c')
-rw-r--r--drivers/staging/comedi/kcomedilib/kcomedilib_main.c63
1 files changed, 63 insertions, 0 deletions
diff --git a/drivers/staging/comedi/kcomedilib/kcomedilib_main.c b/drivers/staging/comedi/kcomedilib/kcomedilib_main.c
index addfcd5..7cb29f2 100644
--- a/drivers/staging/comedi/kcomedilib/kcomedilib_main.c
+++ b/drivers/staging/comedi/kcomedilib/kcomedilib_main.c
@@ -206,3 +206,66 @@ error:
return ret;
}
+int comedi_dio_config(void *dev, unsigned int subdev, unsigned int chan,
+ unsigned int io)
+{
+ struct comedi_insn insn;
+
+ memset(&insn, 0, sizeof(insn));
+ insn.insn = INSN_CONFIG;
+ insn.n = 1;
+ insn.data = &io;
+ insn.subdev = subdev;
+ insn.chanspec = CR_PACK(chan, 0, 0);
+
+ return comedi_do_insn(dev, &insn);
+}
+EXPORT_SYMBOL(comedi_dio_config);
+
+int comedi_dio_bitfield(void *dev, unsigned int subdev, unsigned int mask,
+ unsigned int *bits)
+{
+ struct comedi_insn insn;
+ unsigned int data[2];
+ int ret;
+
+ memset(&insn, 0, sizeof(insn));
+ insn.insn = INSN_BITS;
+ insn.n = 2;
+ insn.data = data;
+ insn.subdev = subdev;
+
+ data[0] = mask;
+ data[1] = *bits;
+
+ ret = comedi_do_insn(dev, &insn);
+
+ *bits = data[1];
+
+ return ret;
+}
+EXPORT_SYMBOL(comedi_dio_bitfield);
+
+int comedi_find_subdevice_by_type(void *d, int type, unsigned int subd)
+{
+ struct comedi_device *dev = (struct comedi_device *)d;
+
+ if (subd > dev->n_subdevices)
+ return -ENODEV;
+
+ for (; subd < dev->n_subdevices; subd++) {
+ if (dev->subdevices[subd].type == type)
+ return subd;
+ }
+ return -1;
+}
+EXPORT_SYMBOL(comedi_find_subdevice_by_type);
+
+int comedi_get_n_channels(void *d, unsigned int subdevice)
+{
+ struct comedi_device *dev = (struct comedi_device *)d;
+ struct comedi_subdevice *s = dev->subdevices + subdevice;
+
+ return s->n_chan;
+}
+EXPORT_SYMBOL(comedi_get_n_channels);