1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46#include <linux/module.h>
47#include "../comedidev.h"
48
49#include "das08.h"
50
51static const struct das08_board_struct das08_isa_boards[] = {
52 {
53
54 .name = "isa-das08",
55 .ai_nbits = 12,
56 .ai_pg = das08_pg_none,
57 .ai_encoding = das08_encode12,
58 .di_nchan = 3,
59 .do_nchan = 4,
60 .i8255_offset = 8,
61 .i8254_offset = 4,
62 .iosize = 16,
63 }, {
64
65 .name = "das08-pgm",
66 .ai_nbits = 12,
67 .ai_pg = das08_pgm,
68 .ai_encoding = das08_encode12,
69 .di_nchan = 3,
70 .do_nchan = 4,
71 .i8255_offset = 0,
72 .i8254_offset = 0x04,
73 .iosize = 16,
74 }, {
75
76 .name = "das08-pgh",
77 .ai_nbits = 12,
78 .ai_pg = das08_pgh,
79 .ai_encoding = das08_encode12,
80 .di_nchan = 3,
81 .do_nchan = 4,
82 .i8254_offset = 0x04,
83 .iosize = 16,
84 }, {
85
86 .name = "das08-pgl",
87 .ai_nbits = 12,
88 .ai_pg = das08_pgl,
89 .ai_encoding = das08_encode12,
90 .di_nchan = 3,
91 .do_nchan = 4,
92 .i8254_offset = 0x04,
93 .iosize = 16,
94 }, {
95
96 .name = "das08-aoh",
97 .ai_nbits = 12,
98 .ai_pg = das08_pgh,
99 .ai_encoding = das08_encode12,
100 .ao_nbits = 12,
101 .di_nchan = 3,
102 .do_nchan = 4,
103 .i8255_offset = 0x0c,
104 .i8254_offset = 0x04,
105 .iosize = 16,
106 }, {
107
108 .name = "das08-aol",
109 .ai_nbits = 12,
110 .ai_pg = das08_pgl,
111 .ai_encoding = das08_encode12,
112 .ao_nbits = 12,
113 .di_nchan = 3,
114 .do_nchan = 4,
115 .i8255_offset = 0x0c,
116 .i8254_offset = 0x04,
117 .iosize = 16,
118 }, {
119
120 .name = "das08-aom",
121 .ai_nbits = 12,
122 .ai_pg = das08_pgm,
123 .ai_encoding = das08_encode12,
124 .ao_nbits = 12,
125 .di_nchan = 3,
126 .do_nchan = 4,
127 .i8255_offset = 0x0c,
128 .i8254_offset = 0x04,
129 .iosize = 16,
130 }, {
131
132 .name = "das08/jr-ao",
133 .is_jr = true,
134 .ai_nbits = 12,
135 .ai_pg = das08_pg_none,
136 .ai_encoding = das08_encode12,
137 .ao_nbits = 12,
138 .di_nchan = 8,
139 .do_nchan = 8,
140 .iosize = 16,
141 }, {
142
143 .name = "das08jr-16-ao",
144 .is_jr = true,
145 .ai_nbits = 16,
146 .ai_pg = das08_pg_none,
147 .ai_encoding = das08_encode16,
148 .ao_nbits = 16,
149 .di_nchan = 8,
150 .do_nchan = 8,
151 .i8254_offset = 0x04,
152 .iosize = 16,
153 }, {
154 .name = "pc104-das08",
155 .ai_nbits = 12,
156 .ai_pg = das08_pg_none,
157 .ai_encoding = das08_encode12,
158 .di_nchan = 3,
159 .do_nchan = 4,
160 .i8254_offset = 4,
161 .iosize = 16,
162 }, {
163 .name = "das08jr/16",
164 .is_jr = true,
165 .ai_nbits = 16,
166 .ai_pg = das08_pg_none,
167 .ai_encoding = das08_encode16,
168 .di_nchan = 8,
169 .do_nchan = 8,
170 .iosize = 16,
171 },
172};
173
174static int das08_isa_attach(struct comedi_device *dev,
175 struct comedi_devconfig *it)
176{
177 const struct das08_board_struct *thisboard = dev->board_ptr;
178 struct das08_private_struct *devpriv;
179 int ret;
180
181 devpriv = comedi_alloc_devpriv(dev, sizeof(*devpriv));
182 if (!devpriv)
183 return -ENOMEM;
184
185 ret = comedi_request_region(dev, it->options[0], thisboard->iosize);
186 if (ret)
187 return ret;
188
189 return das08_common_attach(dev, dev->iobase);
190}
191
192static struct comedi_driver das08_isa_driver = {
193 .driver_name = "isa-das08",
194 .module = THIS_MODULE,
195 .attach = das08_isa_attach,
196 .detach = comedi_legacy_detach,
197 .board_name = &das08_isa_boards[0].name,
198 .num_names = ARRAY_SIZE(das08_isa_boards),
199 .offset = sizeof(das08_isa_boards[0]),
200};
201module_comedi_driver(das08_isa_driver);
202
203MODULE_AUTHOR("Comedi http://www.comedi.org");
204MODULE_DESCRIPTION("Comedi low-level driver");
205MODULE_LICENSE("GPL");
206