diff options
author | Greg Kroah-Hartman <gregkh@suse.de> | 2010-05-03 21:44:55 (GMT) |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2010-05-11 18:36:02 (GMT) |
commit | a1525758c848aedf590bba3a919321e2d80fcd6e (patch) | |
tree | e5a32b23874a63b6dc8f388a7e25e762cb2285ac /drivers/staging/comedi/kcomedilib/kcomedilib_main.c | |
parent | 6b18af18d2c48c07864cf38b5475a0f4d1913bc4 (diff) | |
download | linux-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.c | 63 |
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); |