Staging: comedi: Remove lsampl_t and sampl_t typedefs
[GitHub/mt8127/android_kernel_alcatel_ttab.git] / drivers / staging / comedi / kcomedilib / dio.c
CommitLineData
b79a7a20
DS
1/*
2 kcomedilib/dio.c
3 implements comedi_dio_*() functions
4
5 COMEDI - Linux Control and Measurement Device Interface
6 Copyright (C) 2000 David A. Schleef <ds@schleef.org>
7
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.
12
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.
17
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.
21
22*/
23
24#include "../comedi.h"
25#include "../comedilib.h"
26
27#include <linux/string.h>
28
0b3fb27f 29int comedi_dio_config(void *dev, unsigned int subdev, unsigned int chan,
b79a7a20
DS
30 unsigned int io)
31{
32 comedi_insn insn;
33
34 memset(&insn, 0, sizeof(insn));
35 insn.insn = INSN_CONFIG;
36 insn.n = 1;
37 insn.data = &io;
38 insn.subdev = subdev;
39 insn.chanspec = CR_PACK(chan, 0, 0);
40
41 return comedi_do_insn(dev, &insn);
42}
43
0b3fb27f 44int comedi_dio_read(void *dev, unsigned int subdev, unsigned int chan,
b79a7a20
DS
45 unsigned int *val)
46{
47 comedi_insn insn;
48
49 memset(&insn, 0, sizeof(insn));
50 insn.insn = INSN_READ;
51 insn.n = 1;
52 insn.data = val;
53 insn.subdev = subdev;
54 insn.chanspec = CR_PACK(chan, 0, 0);
55
56 return comedi_do_insn(dev, &insn);
57}
58
0b3fb27f 59int comedi_dio_write(void *dev, unsigned int subdev, unsigned int chan,
b79a7a20
DS
60 unsigned int val)
61{
62 comedi_insn insn;
63
64 memset(&insn, 0, sizeof(insn));
65 insn.insn = INSN_WRITE;
66 insn.n = 1;
67 insn.data = &val;
68 insn.subdev = subdev;
69 insn.chanspec = CR_PACK(chan, 0, 0);
70
71 return comedi_do_insn(dev, &insn);
72}
73
0b3fb27f 74int comedi_dio_bitfield(void *dev, unsigned int subdev, unsigned int mask,
b79a7a20
DS
75 unsigned int *bits)
76{
77 comedi_insn insn;
790c5541 78 unsigned int data[2];
b79a7a20
DS
79 int ret;
80
81 memset(&insn, 0, sizeof(insn));
82 insn.insn = INSN_BITS;
83 insn.n = 2;
84 insn.data = data;
85 insn.subdev = subdev;
86
87 data[0] = mask;
88 data[1] = *bits;
89
90 ret = comedi_do_insn(dev, &insn);
91
92 *bits = data[1];
93
94 return ret;
95}