Staging: comedi: delete kcomedilib/data.c
[linux-2.6.git] / drivers / staging / comedi / kcomedilib / dio.c
blobe37aa53081414b64817951b11bcb5356135663ac
1 /*
2 kcomedilib/dio.c
3 implements comedi_dio_*() functions
5 COMEDI - Linux Control and Measurement Device Interface
6 Copyright (C) 2000 David A. Schleef <ds@schleef.org>
8 This program is free software; you can redistribute it and/or modify
9 it under the terms of the GNU General Public License as published by
10 the Free Software Foundation; either version 2 of the License, or
11 (at your option) any later version.
13 This program is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU General Public License for more details.
18 You should have received a copy of the GNU General Public License
19 along with this program; if not, write to the Free Software
20 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
24 #include "../comedi.h"
25 #include "../comedilib.h"
27 #include <linux/string.h>
28 #include <linux/module.h>
30 int comedi_dio_config(void *dev, unsigned int subdev, unsigned int chan,
31 unsigned int io)
33 struct comedi_insn insn;
35 memset(&insn, 0, sizeof(insn));
36 insn.insn = INSN_CONFIG;
37 insn.n = 1;
38 insn.data = &io;
39 insn.subdev = subdev;
40 insn.chanspec = CR_PACK(chan, 0, 0);
42 return comedi_do_insn(dev, &insn);
44 EXPORT_SYMBOL(comedi_dio_config);
46 int comedi_dio_read(void *dev, unsigned int subdev, unsigned int chan,
47 unsigned int *val)
49 struct comedi_insn insn;
51 memset(&insn, 0, sizeof(insn));
52 insn.insn = INSN_READ;
53 insn.n = 1;
54 insn.data = val;
55 insn.subdev = subdev;
56 insn.chanspec = CR_PACK(chan, 0, 0);
58 return comedi_do_insn(dev, &insn);
61 int comedi_dio_write(void *dev, unsigned int subdev, unsigned int chan,
62 unsigned int val)
64 struct comedi_insn insn;
66 memset(&insn, 0, sizeof(insn));
67 insn.insn = INSN_WRITE;
68 insn.n = 1;
69 insn.data = &val;
70 insn.subdev = subdev;
71 insn.chanspec = CR_PACK(chan, 0, 0);
73 return comedi_do_insn(dev, &insn);
76 int comedi_dio_bitfield(void *dev, unsigned int subdev, unsigned int mask,
77 unsigned int *bits)
79 struct comedi_insn insn;
80 unsigned int data[2];
81 int ret;
83 memset(&insn, 0, sizeof(insn));
84 insn.insn = INSN_BITS;
85 insn.n = 2;
86 insn.data = data;
87 insn.subdev = subdev;
89 data[0] = mask;
90 data[1] = *bits;
92 ret = comedi_do_insn(dev, &insn);
94 *bits = data[1];
96 return ret;
98 EXPORT_SYMBOL(comedi_dio_bitfield);