1 #include "../comedidev.h"
3 #include "amcc_s5933.h"
5 #include "addi-data/addi_common.h"
7 #include "addi-data/addi_eeprom.c"
8 #include "addi-data/hwdrv_apci3xxx.c"
9 #include "addi-data/addi_common.c"
11 static const struct addi_board apci3xxx_boardtypes[] = {
13 .pc_DriverName = "apci3000-16",
14 .i_VendorId = PCI_VENDOR_ID_ADDIDATA,
16 .i_IorangeBase0 = 256,
17 .i_IorangeBase1 = 256,
18 .i_IorangeBase2 = 256,
19 .i_IorangeBase3 = 256,
20 .i_PCIEeprom = ADDIDATA_NO_EEPROM,
21 .pc_EepromChip = ADDIDATA_9054,
23 .i_NbrAiChannelDiff = 8,
24 .i_AiChannelList = 16,
26 .pr_AiRangelist = &range_apci3XXX_ai,
27 .i_NbrTTLChannel = 24,
28 .b_AvailableConvertUnit = 6,
29 .ui_MinAcquisitiontimeNs = 10000,
30 .interrupt = v_APCI3XXX_Interrupt,
31 .reset = i_APCI3XXX_Reset,
32 .ai_config = i_APCI3XXX_InsnConfigAnalogInput,
33 .ai_read = i_APCI3XXX_InsnReadAnalogInput,
34 .ttl_config = i_APCI3XXX_InsnConfigInitTTLIO,
35 .ttl_bits = i_APCI3XXX_InsnBitsTTLIO,
36 .ttl_read = i_APCI3XXX_InsnReadTTLIO,
37 .ttl_write = i_APCI3XXX_InsnWriteTTLIO,
39 .pc_DriverName = "apci3000-8",
40 .i_VendorId = PCI_VENDOR_ID_ADDIDATA,
42 .i_IorangeBase0 = 256,
43 .i_IorangeBase1 = 256,
44 .i_IorangeBase2 = 256,
45 .i_IorangeBase3 = 256,
46 .i_PCIEeprom = ADDIDATA_NO_EEPROM,
47 .pc_EepromChip = ADDIDATA_9054,
49 .i_NbrAiChannelDiff = 4,
52 .pr_AiRangelist = &range_apci3XXX_ai,
53 .i_NbrTTLChannel = 24,
54 .b_AvailableConvertUnit = 6,
55 .ui_MinAcquisitiontimeNs = 10000,
56 .interrupt = v_APCI3XXX_Interrupt,
57 .reset = i_APCI3XXX_Reset,
58 .ai_config = i_APCI3XXX_InsnConfigAnalogInput,
59 .ai_read = i_APCI3XXX_InsnReadAnalogInput,
60 .ttl_config = i_APCI3XXX_InsnConfigInitTTLIO,
61 .ttl_bits = i_APCI3XXX_InsnBitsTTLIO,
62 .ttl_read = i_APCI3XXX_InsnReadTTLIO,
63 .ttl_write = i_APCI3XXX_InsnWriteTTLIO,
65 .pc_DriverName = "apci3000-4",
66 .i_VendorId = PCI_VENDOR_ID_ADDIDATA,
68 .i_IorangeBase0 = 256,
69 .i_IorangeBase1 = 256,
70 .i_IorangeBase2 = 256,
71 .i_IorangeBase3 = 256,
72 .i_PCIEeprom = ADDIDATA_NO_EEPROM,
73 .pc_EepromChip = ADDIDATA_9054,
75 .i_NbrAiChannelDiff = 2,
78 .pr_AiRangelist = &range_apci3XXX_ai,
79 .i_NbrTTLChannel = 24,
80 .b_AvailableConvertUnit = 6,
81 .ui_MinAcquisitiontimeNs = 10000,
82 .interrupt = v_APCI3XXX_Interrupt,
83 .reset = i_APCI3XXX_Reset,
84 .ai_config = i_APCI3XXX_InsnConfigAnalogInput,
85 .ai_read = i_APCI3XXX_InsnReadAnalogInput,
86 .ttl_config = i_APCI3XXX_InsnConfigInitTTLIO,
87 .ttl_bits = i_APCI3XXX_InsnBitsTTLIO,
88 .ttl_read = i_APCI3XXX_InsnReadTTLIO,
89 .ttl_write = i_APCI3XXX_InsnWriteTTLIO,
91 .pc_DriverName = "apci3006-16",
92 .i_VendorId = PCI_VENDOR_ID_ADDIDATA,
94 .i_IorangeBase0 = 256,
95 .i_IorangeBase1 = 256,
96 .i_IorangeBase2 = 256,
97 .i_IorangeBase3 = 256,
98 .i_PCIEeprom = ADDIDATA_NO_EEPROM,
99 .pc_EepromChip = ADDIDATA_9054,
100 .i_NbrAiChannel = 16,
101 .i_NbrAiChannelDiff = 8,
102 .i_AiChannelList = 16,
103 .i_AiMaxdata = 65535,
104 .pr_AiRangelist = &range_apci3XXX_ai,
105 .i_NbrTTLChannel = 24,
106 .b_AvailableConvertUnit = 6,
107 .ui_MinAcquisitiontimeNs = 10000,
108 .interrupt = v_APCI3XXX_Interrupt,
109 .reset = i_APCI3XXX_Reset,
110 .ai_config = i_APCI3XXX_InsnConfigAnalogInput,
111 .ai_read = i_APCI3XXX_InsnReadAnalogInput,
112 .ttl_config = i_APCI3XXX_InsnConfigInitTTLIO,
113 .ttl_bits = i_APCI3XXX_InsnBitsTTLIO,
114 .ttl_read = i_APCI3XXX_InsnReadTTLIO,
115 .ttl_write = i_APCI3XXX_InsnWriteTTLIO,
117 .pc_DriverName = "apci3006-8",
118 .i_VendorId = PCI_VENDOR_ID_ADDIDATA,
119 .i_DeviceId = 0x3014,
120 .i_IorangeBase0 = 256,
121 .i_IorangeBase1 = 256,
122 .i_IorangeBase2 = 256,
123 .i_IorangeBase3 = 256,
124 .i_PCIEeprom = ADDIDATA_NO_EEPROM,
125 .pc_EepromChip = ADDIDATA_9054,
127 .i_NbrAiChannelDiff = 4,
128 .i_AiChannelList = 8,
129 .i_AiMaxdata = 65535,
130 .pr_AiRangelist = &range_apci3XXX_ai,
131 .i_NbrTTLChannel = 24,
132 .b_AvailableConvertUnit = 6,
133 .ui_MinAcquisitiontimeNs = 10000,
134 .interrupt = v_APCI3XXX_Interrupt,
135 .reset = i_APCI3XXX_Reset,
136 .ai_config = i_APCI3XXX_InsnConfigAnalogInput,
137 .ai_read = i_APCI3XXX_InsnReadAnalogInput,
138 .ttl_config = i_APCI3XXX_InsnConfigInitTTLIO,
139 .ttl_bits = i_APCI3XXX_InsnBitsTTLIO,
140 .ttl_read = i_APCI3XXX_InsnReadTTLIO,
141 .ttl_write = i_APCI3XXX_InsnWriteTTLIO,
143 .pc_DriverName = "apci3006-4",
144 .i_VendorId = PCI_VENDOR_ID_ADDIDATA,
145 .i_DeviceId = 0x3015,
146 .i_IorangeBase0 = 256,
147 .i_IorangeBase1 = 256,
148 .i_IorangeBase2 = 256,
149 .i_IorangeBase3 = 256,
150 .i_PCIEeprom = ADDIDATA_NO_EEPROM,
151 .pc_EepromChip = ADDIDATA_9054,
153 .i_NbrAiChannelDiff = 2,
154 .i_AiChannelList = 4,
155 .i_AiMaxdata = 65535,
156 .pr_AiRangelist = &range_apci3XXX_ai,
157 .i_NbrTTLChannel = 24,
158 .b_AvailableConvertUnit = 6,
159 .ui_MinAcquisitiontimeNs = 10000,
160 .interrupt = v_APCI3XXX_Interrupt,
161 .reset = i_APCI3XXX_Reset,
162 .ai_config = i_APCI3XXX_InsnConfigAnalogInput,
163 .ai_read = i_APCI3XXX_InsnReadAnalogInput,
164 .ttl_config = i_APCI3XXX_InsnConfigInitTTLIO,
165 .ttl_bits = i_APCI3XXX_InsnBitsTTLIO,
166 .ttl_read = i_APCI3XXX_InsnReadTTLIO,
167 .ttl_write = i_APCI3XXX_InsnWriteTTLIO,
169 .pc_DriverName = "apci3010-16",
170 .i_VendorId = PCI_VENDOR_ID_ADDIDATA,
171 .i_DeviceId = 0x3016,
172 .i_IorangeBase0 = 256,
173 .i_IorangeBase1 = 256,
174 .i_IorangeBase2 = 256,
175 .i_IorangeBase3 = 256,
176 .i_PCIEeprom = ADDIDATA_NO_EEPROM,
177 .pc_EepromChip = ADDIDATA_9054,
178 .i_NbrAiChannel = 16,
179 .i_NbrAiChannelDiff = 8,
180 .i_AiChannelList = 16,
182 .pr_AiRangelist = &range_apci3XXX_ai,
186 .i_NbrTTLChannel = 24,
187 .b_AvailableConvertUnit = 6,
188 .ui_MinAcquisitiontimeNs = 5000,
189 .interrupt = v_APCI3XXX_Interrupt,
190 .reset = i_APCI3XXX_Reset,
191 .ai_config = i_APCI3XXX_InsnConfigAnalogInput,
192 .ai_read = i_APCI3XXX_InsnReadAnalogInput,
193 .di_bits = apci3xxx_di_insn_bits,
194 .do_bits = apci3xxx_do_insn_bits,
195 .ttl_config = i_APCI3XXX_InsnConfigInitTTLIO,
196 .ttl_bits = i_APCI3XXX_InsnBitsTTLIO,
197 .ttl_read = i_APCI3XXX_InsnReadTTLIO,
198 .ttl_write = i_APCI3XXX_InsnWriteTTLIO,
200 .pc_DriverName = "apci3010-8",
201 .i_VendorId = PCI_VENDOR_ID_ADDIDATA,
202 .i_DeviceId = 0x3017,
203 .i_IorangeBase0 = 256,
204 .i_IorangeBase1 = 256,
205 .i_IorangeBase2 = 256,
206 .i_IorangeBase3 = 256,
207 .i_PCIEeprom = ADDIDATA_NO_EEPROM,
208 .pc_EepromChip = ADDIDATA_9054,
210 .i_NbrAiChannelDiff = 4,
211 .i_AiChannelList = 8,
213 .pr_AiRangelist = &range_apci3XXX_ai,
217 .i_NbrTTLChannel = 24,
218 .b_AvailableConvertUnit = 6,
219 .ui_MinAcquisitiontimeNs = 5000,
220 .interrupt = v_APCI3XXX_Interrupt,
221 .reset = i_APCI3XXX_Reset,
222 .ai_config = i_APCI3XXX_InsnConfigAnalogInput,
223 .ai_read = i_APCI3XXX_InsnReadAnalogInput,
224 .di_bits = apci3xxx_di_insn_bits,
225 .do_bits = apci3xxx_do_insn_bits,
226 .ttl_config = i_APCI3XXX_InsnConfigInitTTLIO,
227 .ttl_bits = i_APCI3XXX_InsnBitsTTLIO,
228 .ttl_read = i_APCI3XXX_InsnReadTTLIO,
229 .ttl_write = i_APCI3XXX_InsnWriteTTLIO,
231 .pc_DriverName = "apci3010-4",
232 .i_VendorId = PCI_VENDOR_ID_ADDIDATA,
233 .i_DeviceId = 0x3018,
234 .i_IorangeBase0 = 256,
235 .i_IorangeBase1 = 256,
236 .i_IorangeBase2 = 256,
237 .i_IorangeBase3 = 256,
238 .i_PCIEeprom = ADDIDATA_NO_EEPROM,
239 .pc_EepromChip = ADDIDATA_9054,
241 .i_NbrAiChannelDiff = 2,
242 .i_AiChannelList = 4,
244 .pr_AiRangelist = &range_apci3XXX_ai,
248 .i_NbrTTLChannel = 24,
249 .b_AvailableConvertUnit = 6,
250 .ui_MinAcquisitiontimeNs = 5000,
251 .interrupt = v_APCI3XXX_Interrupt,
252 .reset = i_APCI3XXX_Reset,
253 .ai_config = i_APCI3XXX_InsnConfigAnalogInput,
254 .ai_read = i_APCI3XXX_InsnReadAnalogInput,
255 .di_bits = apci3xxx_di_insn_bits,
256 .do_bits = apci3xxx_do_insn_bits,
257 .ttl_config = i_APCI3XXX_InsnConfigInitTTLIO,
258 .ttl_bits = i_APCI3XXX_InsnBitsTTLIO,
259 .ttl_read = i_APCI3XXX_InsnReadTTLIO,
260 .ttl_write = i_APCI3XXX_InsnWriteTTLIO,
262 .pc_DriverName = "apci3016-16",
263 .i_VendorId = PCI_VENDOR_ID_ADDIDATA,
264 .i_DeviceId = 0x3019,
265 .i_IorangeBase0 = 256,
266 .i_IorangeBase1 = 256,
267 .i_IorangeBase2 = 256,
268 .i_IorangeBase3 = 256,
269 .i_PCIEeprom = ADDIDATA_NO_EEPROM,
270 .pc_EepromChip = ADDIDATA_9054,
271 .i_NbrAiChannel = 16,
272 .i_NbrAiChannelDiff = 8,
273 .i_AiChannelList = 16,
274 .i_AiMaxdata = 65535,
275 .pr_AiRangelist = &range_apci3XXX_ai,
279 .i_NbrTTLChannel = 24,
280 .b_AvailableConvertUnit = 6,
281 .ui_MinAcquisitiontimeNs = 5000,
282 .interrupt = v_APCI3XXX_Interrupt,
283 .reset = i_APCI3XXX_Reset,
284 .ai_config = i_APCI3XXX_InsnConfigAnalogInput,
285 .ai_read = i_APCI3XXX_InsnReadAnalogInput,
286 .di_bits = apci3xxx_di_insn_bits,
287 .do_bits = apci3xxx_do_insn_bits,
288 .ttl_config = i_APCI3XXX_InsnConfigInitTTLIO,
289 .ttl_bits = i_APCI3XXX_InsnBitsTTLIO,
290 .ttl_read = i_APCI3XXX_InsnReadTTLIO,
291 .ttl_write = i_APCI3XXX_InsnWriteTTLIO,
293 .pc_DriverName = "apci3016-8",
294 .i_VendorId = PCI_VENDOR_ID_ADDIDATA,
295 .i_DeviceId = 0x301A,
296 .i_IorangeBase0 = 256,
297 .i_IorangeBase1 = 256,
298 .i_IorangeBase2 = 256,
299 .i_IorangeBase3 = 256,
300 .i_PCIEeprom = ADDIDATA_NO_EEPROM,
301 .pc_EepromChip = ADDIDATA_9054,
303 .i_NbrAiChannelDiff = 4,
304 .i_AiChannelList = 8,
305 .i_AiMaxdata = 65535,
306 .pr_AiRangelist = &range_apci3XXX_ai,
310 .i_NbrTTLChannel = 24,
311 .b_AvailableConvertUnit = 6,
312 .ui_MinAcquisitiontimeNs = 5000,
313 .interrupt = v_APCI3XXX_Interrupt,
314 .reset = i_APCI3XXX_Reset,
315 .ai_config = i_APCI3XXX_InsnConfigAnalogInput,
316 .ai_read = i_APCI3XXX_InsnReadAnalogInput,
317 .di_bits = apci3xxx_di_insn_bits,
318 .do_bits = apci3xxx_do_insn_bits,
319 .ttl_config = i_APCI3XXX_InsnConfigInitTTLIO,
320 .ttl_bits = i_APCI3XXX_InsnBitsTTLIO,
321 .ttl_read = i_APCI3XXX_InsnReadTTLIO,
322 .ttl_write = i_APCI3XXX_InsnWriteTTLIO,
324 .pc_DriverName = "apci3016-4",
325 .i_VendorId = PCI_VENDOR_ID_ADDIDATA,
326 .i_DeviceId = 0x301B,
327 .i_IorangeBase0 = 256,
328 .i_IorangeBase1 = 256,
329 .i_IorangeBase2 = 256,
330 .i_IorangeBase3 = 256,
331 .i_PCIEeprom = ADDIDATA_NO_EEPROM,
332 .pc_EepromChip = ADDIDATA_9054,
334 .i_NbrAiChannelDiff = 2,
335 .i_AiChannelList = 4,
336 .i_AiMaxdata = 65535,
337 .pr_AiRangelist = &range_apci3XXX_ai,
341 .i_NbrTTLChannel = 24,
342 .b_AvailableConvertUnit = 6,
343 .ui_MinAcquisitiontimeNs = 5000,
344 .interrupt = v_APCI3XXX_Interrupt,
345 .reset = i_APCI3XXX_Reset,
346 .ai_config = i_APCI3XXX_InsnConfigAnalogInput,
347 .ai_read = i_APCI3XXX_InsnReadAnalogInput,
348 .di_bits = apci3xxx_di_insn_bits,
349 .do_bits = apci3xxx_do_insn_bits,
350 .ttl_config = i_APCI3XXX_InsnConfigInitTTLIO,
351 .ttl_bits = i_APCI3XXX_InsnBitsTTLIO,
352 .ttl_read = i_APCI3XXX_InsnReadTTLIO,
353 .ttl_write = i_APCI3XXX_InsnWriteTTLIO,
355 .pc_DriverName = "apci3100-16-4",
356 .i_VendorId = PCI_VENDOR_ID_ADDIDATA,
357 .i_DeviceId = 0x301C,
358 .i_IorangeBase0 = 256,
359 .i_IorangeBase1 = 256,
360 .i_IorangeBase2 = 256,
361 .i_IorangeBase3 = 256,
362 .i_PCIEeprom = ADDIDATA_NO_EEPROM,
363 .pc_EepromChip = ADDIDATA_9054,
364 .i_NbrAiChannel = 16,
365 .i_NbrAiChannelDiff = 8,
366 .i_AiChannelList = 16,
370 .pr_AiRangelist = &range_apci3XXX_ai,
371 .pr_AoRangelist = &range_apci3XXX_ao,
372 .i_NbrTTLChannel = 24,
373 .b_AvailableConvertUnit = 6,
374 .ui_MinAcquisitiontimeNs = 10000,
375 .interrupt = v_APCI3XXX_Interrupt,
376 .reset = i_APCI3XXX_Reset,
377 .ai_config = i_APCI3XXX_InsnConfigAnalogInput,
378 .ai_read = i_APCI3XXX_InsnReadAnalogInput,
379 .ao_write = i_APCI3XXX_InsnWriteAnalogOutput,
380 .ttl_config = i_APCI3XXX_InsnConfigInitTTLIO,
381 .ttl_bits = i_APCI3XXX_InsnBitsTTLIO,
382 .ttl_read = i_APCI3XXX_InsnReadTTLIO,
383 .ttl_write = i_APCI3XXX_InsnWriteTTLIO,
385 .pc_DriverName = "apci3100-8-4",
386 .i_VendorId = PCI_VENDOR_ID_ADDIDATA,
387 .i_DeviceId = 0x301D,
388 .i_IorangeBase0 = 256,
389 .i_IorangeBase1 = 256,
390 .i_IorangeBase2 = 256,
391 .i_IorangeBase3 = 256,
392 .i_PCIEeprom = ADDIDATA_NO_EEPROM,
393 .pc_EepromChip = ADDIDATA_9054,
395 .i_NbrAiChannelDiff = 4,
396 .i_AiChannelList = 8,
400 .pr_AiRangelist = &range_apci3XXX_ai,
401 .pr_AoRangelist = &range_apci3XXX_ao,
402 .i_NbrTTLChannel = 24,
403 .b_AvailableConvertUnit = 6,
404 .ui_MinAcquisitiontimeNs = 10000,
405 .interrupt = v_APCI3XXX_Interrupt,
406 .reset = i_APCI3XXX_Reset,
407 .ai_config = i_APCI3XXX_InsnConfigAnalogInput,
408 .ai_read = i_APCI3XXX_InsnReadAnalogInput,
409 .ao_write = i_APCI3XXX_InsnWriteAnalogOutput,
410 .ttl_config = i_APCI3XXX_InsnConfigInitTTLIO,
411 .ttl_bits = i_APCI3XXX_InsnBitsTTLIO,
412 .ttl_read = i_APCI3XXX_InsnReadTTLIO,
413 .ttl_write = i_APCI3XXX_InsnWriteTTLIO,
415 .pc_DriverName = "apci3106-16-4",
416 .i_VendorId = PCI_VENDOR_ID_ADDIDATA,
417 .i_DeviceId = 0x301E,
418 .i_IorangeBase0 = 256,
419 .i_IorangeBase1 = 256,
420 .i_IorangeBase2 = 256,
421 .i_IorangeBase3 = 256,
422 .i_PCIEeprom = ADDIDATA_NO_EEPROM,
423 .pc_EepromChip = ADDIDATA_9054,
424 .i_NbrAiChannel = 16,
425 .i_NbrAiChannelDiff = 8,
426 .i_AiChannelList = 16,
428 .i_AiMaxdata = 65535,
430 .pr_AiRangelist = &range_apci3XXX_ai,
431 .pr_AoRangelist = &range_apci3XXX_ao,
432 .i_NbrTTLChannel = 24,
433 .b_AvailableConvertUnit = 6,
434 .ui_MinAcquisitiontimeNs = 10000,
435 .interrupt = v_APCI3XXX_Interrupt,
436 .reset = i_APCI3XXX_Reset,
437 .ai_config = i_APCI3XXX_InsnConfigAnalogInput,
438 .ai_read = i_APCI3XXX_InsnReadAnalogInput,
439 .ao_write = i_APCI3XXX_InsnWriteAnalogOutput,
440 .ttl_config = i_APCI3XXX_InsnConfigInitTTLIO,
441 .ttl_bits = i_APCI3XXX_InsnBitsTTLIO,
442 .ttl_read = i_APCI3XXX_InsnReadTTLIO,
443 .ttl_write = i_APCI3XXX_InsnWriteTTLIO,
445 .pc_DriverName = "apci3106-8-4",
446 .i_VendorId = PCI_VENDOR_ID_ADDIDATA,
447 .i_DeviceId = 0x301F,
448 .i_IorangeBase0 = 256,
449 .i_IorangeBase1 = 256,
450 .i_IorangeBase2 = 256,
451 .i_IorangeBase3 = 256,
452 .i_PCIEeprom = ADDIDATA_NO_EEPROM,
453 .pc_EepromChip = ADDIDATA_9054,
455 .i_NbrAiChannelDiff = 4,
456 .i_AiChannelList = 8,
458 .i_AiMaxdata = 65535,
460 .pr_AiRangelist = &range_apci3XXX_ai,
461 .pr_AoRangelist = &range_apci3XXX_ao,
462 .i_NbrTTLChannel = 24,
463 .b_AvailableConvertUnit = 6,
464 .ui_MinAcquisitiontimeNs = 10000,
465 .interrupt = v_APCI3XXX_Interrupt,
466 .reset = i_APCI3XXX_Reset,
467 .ai_config = i_APCI3XXX_InsnConfigAnalogInput,
468 .ai_read = i_APCI3XXX_InsnReadAnalogInput,
469 .ao_write = i_APCI3XXX_InsnWriteAnalogOutput,
470 .ttl_config = i_APCI3XXX_InsnConfigInitTTLIO,
471 .ttl_bits = i_APCI3XXX_InsnBitsTTLIO,
472 .ttl_read = i_APCI3XXX_InsnReadTTLIO,
473 .ttl_write = i_APCI3XXX_InsnWriteTTLIO,
475 .pc_DriverName = "apci3110-16-4",
476 .i_VendorId = PCI_VENDOR_ID_ADDIDATA,
477 .i_DeviceId = 0x3020,
478 .i_IorangeBase0 = 256,
479 .i_IorangeBase1 = 256,
480 .i_IorangeBase2 = 256,
481 .i_IorangeBase3 = 256,
482 .i_PCIEeprom = ADDIDATA_NO_EEPROM,
483 .pc_EepromChip = ADDIDATA_9054,
484 .i_NbrAiChannel = 16,
485 .i_NbrAiChannelDiff = 8,
486 .i_AiChannelList = 16,
490 .pr_AiRangelist = &range_apci3XXX_ai,
491 .pr_AoRangelist = &range_apci3XXX_ao,
495 .i_NbrTTLChannel = 24,
496 .b_AvailableConvertUnit = 6,
497 .ui_MinAcquisitiontimeNs = 5000,
498 .interrupt = v_APCI3XXX_Interrupt,
499 .reset = i_APCI3XXX_Reset,
500 .ai_config = i_APCI3XXX_InsnConfigAnalogInput,
501 .ai_read = i_APCI3XXX_InsnReadAnalogInput,
502 .ao_write = i_APCI3XXX_InsnWriteAnalogOutput,
503 .di_bits = apci3xxx_di_insn_bits,
504 .do_bits = apci3xxx_do_insn_bits,
505 .ttl_config = i_APCI3XXX_InsnConfigInitTTLIO,
506 .ttl_bits = i_APCI3XXX_InsnBitsTTLIO,
507 .ttl_read = i_APCI3XXX_InsnReadTTLIO,
508 .ttl_write = i_APCI3XXX_InsnWriteTTLIO,
510 .pc_DriverName = "apci3110-8-4",
511 .i_VendorId = PCI_VENDOR_ID_ADDIDATA,
512 .i_DeviceId = 0x3021,
513 .i_IorangeBase0 = 256,
514 .i_IorangeBase1 = 256,
515 .i_IorangeBase2 = 256,
516 .i_IorangeBase3 = 256,
517 .i_PCIEeprom = ADDIDATA_NO_EEPROM,
518 .pc_EepromChip = ADDIDATA_9054,
520 .i_NbrAiChannelDiff = 4,
521 .i_AiChannelList = 8,
525 .pr_AiRangelist = &range_apci3XXX_ai,
526 .pr_AoRangelist = &range_apci3XXX_ao,
530 .i_NbrTTLChannel = 24,
531 .b_AvailableConvertUnit = 6,
532 .ui_MinAcquisitiontimeNs = 5000,
533 .interrupt = v_APCI3XXX_Interrupt,
534 .reset = i_APCI3XXX_Reset,
535 .ai_config = i_APCI3XXX_InsnConfigAnalogInput,
536 .ai_read = i_APCI3XXX_InsnReadAnalogInput,
537 .ao_write = i_APCI3XXX_InsnWriteAnalogOutput,
538 .di_bits = apci3xxx_di_insn_bits,
539 .do_bits = apci3xxx_do_insn_bits,
540 .ttl_config = i_APCI3XXX_InsnConfigInitTTLIO,
541 .ttl_bits = i_APCI3XXX_InsnBitsTTLIO,
542 .ttl_read = i_APCI3XXX_InsnReadTTLIO,
543 .ttl_write = i_APCI3XXX_InsnWriteTTLIO,
545 .pc_DriverName = "apci3116-16-4",
546 .i_VendorId = PCI_VENDOR_ID_ADDIDATA,
547 .i_DeviceId = 0x3022,
548 .i_IorangeBase0 = 256,
549 .i_IorangeBase1 = 256,
550 .i_IorangeBase2 = 256,
551 .i_IorangeBase3 = 256,
552 .i_PCIEeprom = ADDIDATA_NO_EEPROM,
553 .pc_EepromChip = ADDIDATA_9054,
554 .i_NbrAiChannel = 16,
555 .i_NbrAiChannelDiff = 8,
556 .i_AiChannelList = 16,
558 .i_AiMaxdata = 65535,
560 .pr_AiRangelist = &range_apci3XXX_ai,
561 .pr_AoRangelist = &range_apci3XXX_ao,
565 .i_NbrTTLChannel = 24,
566 .b_AvailableConvertUnit = 6,
567 .ui_MinAcquisitiontimeNs = 5000,
568 .interrupt = v_APCI3XXX_Interrupt,
569 .reset = i_APCI3XXX_Reset,
570 .ai_config = i_APCI3XXX_InsnConfigAnalogInput,
571 .ai_read = i_APCI3XXX_InsnReadAnalogInput,
572 .ao_write = i_APCI3XXX_InsnWriteAnalogOutput,
573 .di_bits = apci3xxx_di_insn_bits,
574 .do_bits = apci3xxx_do_insn_bits,
575 .ttl_config = i_APCI3XXX_InsnConfigInitTTLIO,
576 .ttl_bits = i_APCI3XXX_InsnBitsTTLIO,
577 .ttl_read = i_APCI3XXX_InsnReadTTLIO,
578 .ttl_write = i_APCI3XXX_InsnWriteTTLIO,
580 .pc_DriverName = "apci3116-8-4",
581 .i_VendorId = PCI_VENDOR_ID_ADDIDATA,
582 .i_DeviceId = 0x3023,
583 .i_IorangeBase0 = 256,
584 .i_IorangeBase1 = 256,
585 .i_IorangeBase2 = 256,
586 .i_IorangeBase3 = 256,
587 .i_PCIEeprom = ADDIDATA_NO_EEPROM,
588 .pc_EepromChip = ADDIDATA_9054,
590 .i_NbrAiChannelDiff = 4,
591 .i_AiChannelList = 8,
593 .i_AiMaxdata = 65535,
595 .pr_AiRangelist = &range_apci3XXX_ai,
596 .pr_AoRangelist = &range_apci3XXX_ao,
600 .i_NbrTTLChannel = 24,
601 .b_AvailableConvertUnit = 6,
602 .ui_MinAcquisitiontimeNs = 5000,
603 .interrupt = v_APCI3XXX_Interrupt,
604 .reset = i_APCI3XXX_Reset,
605 .ai_config = i_APCI3XXX_InsnConfigAnalogInput,
606 .ai_read = i_APCI3XXX_InsnReadAnalogInput,
607 .ao_write = i_APCI3XXX_InsnWriteAnalogOutput,
608 .di_bits = apci3xxx_di_insn_bits,
609 .do_bits = apci3xxx_do_insn_bits,
610 .ttl_config = i_APCI3XXX_InsnConfigInitTTLIO,
611 .ttl_bits = i_APCI3XXX_InsnBitsTTLIO,
612 .ttl_read = i_APCI3XXX_InsnReadTTLIO,
613 .ttl_write = i_APCI3XXX_InsnWriteTTLIO,
615 .pc_DriverName = "apci3003",
616 .i_VendorId = PCI_VENDOR_ID_ADDIDATA,
617 .i_DeviceId = 0x300B,
618 .i_IorangeBase0 = 256,
619 .i_IorangeBase1 = 256,
620 .i_IorangeBase2 = 256,
621 .i_IorangeBase3 = 256,
622 .i_PCIEeprom = ADDIDATA_NO_EEPROM,
623 .pc_EepromChip = ADDIDATA_9054,
624 .i_NbrAiChannelDiff = 4,
625 .i_AiChannelList = 4,
626 .i_AiMaxdata = 65535,
627 .pr_AiRangelist = &range_apci3XXX_ai,
631 .b_AvailableConvertUnit = 7,
632 .ui_MinAcquisitiontimeNs = 2500,
633 .interrupt = v_APCI3XXX_Interrupt,
634 .reset = i_APCI3XXX_Reset,
635 .ai_config = i_APCI3XXX_InsnConfigAnalogInput,
636 .ai_read = i_APCI3XXX_InsnReadAnalogInput,
637 .di_bits = apci3xxx_di_insn_bits,
638 .do_bits = apci3xxx_do_insn_bits,
640 .pc_DriverName = "apci3002-16",
641 .i_VendorId = PCI_VENDOR_ID_ADDIDATA,
642 .i_DeviceId = 0x3002,
643 .i_IorangeBase0 = 256,
644 .i_IorangeBase1 = 256,
645 .i_IorangeBase2 = 256,
646 .i_IorangeBase3 = 256,
647 .i_PCIEeprom = ADDIDATA_NO_EEPROM,
648 .pc_EepromChip = ADDIDATA_9054,
649 .i_NbrAiChannelDiff = 16,
650 .i_AiChannelList = 16,
651 .i_AiMaxdata = 65535,
652 .pr_AiRangelist = &range_apci3XXX_ai,
656 .b_AvailableConvertUnit = 6,
657 .ui_MinAcquisitiontimeNs = 5000,
658 .interrupt = v_APCI3XXX_Interrupt,
659 .reset = i_APCI3XXX_Reset,
660 .ai_config = i_APCI3XXX_InsnConfigAnalogInput,
661 .ai_read = i_APCI3XXX_InsnReadAnalogInput,
662 .di_bits = apci3xxx_di_insn_bits,
663 .do_bits = apci3xxx_do_insn_bits,
665 .pc_DriverName = "apci3002-8",
666 .i_VendorId = PCI_VENDOR_ID_ADDIDATA,
667 .i_DeviceId = 0x3003,
668 .i_IorangeBase0 = 256,
669 .i_IorangeBase1 = 256,
670 .i_IorangeBase2 = 256,
671 .i_IorangeBase3 = 256,
672 .i_PCIEeprom = ADDIDATA_NO_EEPROM,
673 .pc_EepromChip = ADDIDATA_9054,
674 .i_NbrAiChannelDiff = 8,
675 .i_AiChannelList = 8,
676 .i_AiMaxdata = 65535,
677 .pr_AiRangelist = &range_apci3XXX_ai,
681 .b_AvailableConvertUnit = 6,
682 .ui_MinAcquisitiontimeNs = 5000,
683 .interrupt = v_APCI3XXX_Interrupt,
684 .reset = i_APCI3XXX_Reset,
685 .ai_config = i_APCI3XXX_InsnConfigAnalogInput,
686 .ai_read = i_APCI3XXX_InsnReadAnalogInput,
687 .di_bits = apci3xxx_di_insn_bits,
688 .do_bits = apci3xxx_do_insn_bits,
690 .pc_DriverName = "apci3002-4",
691 .i_VendorId = PCI_VENDOR_ID_ADDIDATA,
692 .i_DeviceId = 0x3004,
693 .i_IorangeBase0 = 256,
694 .i_IorangeBase1 = 256,
695 .i_IorangeBase2 = 256,
696 .i_IorangeBase3 = 256,
697 .i_PCIEeprom = ADDIDATA_NO_EEPROM,
698 .pc_EepromChip = ADDIDATA_9054,
699 .i_NbrAiChannelDiff = 4,
700 .i_AiChannelList = 4,
701 .i_AiMaxdata = 65535,
702 .pr_AiRangelist = &range_apci3XXX_ai,
706 .b_AvailableConvertUnit = 6,
707 .ui_MinAcquisitiontimeNs = 5000,
708 .interrupt = v_APCI3XXX_Interrupt,
709 .reset = i_APCI3XXX_Reset,
710 .ai_config = i_APCI3XXX_InsnConfigAnalogInput,
711 .ai_read = i_APCI3XXX_InsnReadAnalogInput,
712 .di_bits = apci3xxx_di_insn_bits,
713 .do_bits = apci3xxx_do_insn_bits,
715 .pc_DriverName = "apci3500",
716 .i_VendorId = PCI_VENDOR_ID_ADDIDATA,
717 .i_DeviceId = 0x3024,
718 .i_IorangeBase0 = 256,
719 .i_IorangeBase1 = 256,
720 .i_IorangeBase2 = 256,
721 .i_IorangeBase3 = 256,
722 .i_PCIEeprom = ADDIDATA_NO_EEPROM,
723 .pc_EepromChip = ADDIDATA_9054,
726 .pr_AoRangelist = &range_apci3XXX_ao,
727 .i_NbrTTLChannel = 24,
728 .interrupt = v_APCI3XXX_Interrupt,
729 .reset = i_APCI3XXX_Reset,
730 .ao_write = i_APCI3XXX_InsnWriteAnalogOutput,
731 .ttl_config = i_APCI3XXX_InsnConfigInitTTLIO,
732 .ttl_bits = i_APCI3XXX_InsnBitsTTLIO,
733 .ttl_read = i_APCI3XXX_InsnReadTTLIO,
734 .ttl_write = i_APCI3XXX_InsnWriteTTLIO,
738 static struct comedi_driver apci3xxx_driver = {
739 .driver_name = "addi_apci_3xxx",
740 .module = THIS_MODULE,
741 .auto_attach = addi_auto_attach,
742 .detach = i_ADDI_Detach,
743 .num_names = ARRAY_SIZE(apci3xxx_boardtypes),
744 .board_name = &apci3xxx_boardtypes[0].pc_DriverName,
745 .offset = sizeof(struct addi_board),
748 static int apci3xxx_pci_probe(struct pci_dev *dev,
749 const struct pci_device_id *ent)
751 return comedi_pci_auto_config(dev, &apci3xxx_driver);
754 static void apci3xxx_pci_remove(struct pci_dev *dev)
756 comedi_pci_auto_unconfig(dev);
759 static DEFINE_PCI_DEVICE_TABLE(apci3xxx_pci_table) = {
760 { PCI_DEVICE(PCI_VENDOR_ID_ADDIDATA, 0x3010) },
761 { PCI_DEVICE(PCI_VENDOR_ID_ADDIDATA, 0x300f) },
762 { PCI_DEVICE(PCI_VENDOR_ID_ADDIDATA, 0x300e) },
763 { PCI_DEVICE(PCI_VENDOR_ID_ADDIDATA, 0x3013) },
764 { PCI_DEVICE(PCI_VENDOR_ID_ADDIDATA, 0x3014) },
765 { PCI_DEVICE(PCI_VENDOR_ID_ADDIDATA, 0x3015) },
766 { PCI_DEVICE(PCI_VENDOR_ID_ADDIDATA, 0x3016) },
767 { PCI_DEVICE(PCI_VENDOR_ID_ADDIDATA, 0x3017) },
768 { PCI_DEVICE(PCI_VENDOR_ID_ADDIDATA, 0x3018) },
769 { PCI_DEVICE(PCI_VENDOR_ID_ADDIDATA, 0x3019) },
770 { PCI_DEVICE(PCI_VENDOR_ID_ADDIDATA, 0x301a) },
771 { PCI_DEVICE(PCI_VENDOR_ID_ADDIDATA, 0x301b) },
772 { PCI_DEVICE(PCI_VENDOR_ID_ADDIDATA, 0x301c) },
773 { PCI_DEVICE(PCI_VENDOR_ID_ADDIDATA, 0x301d) },
774 { PCI_DEVICE(PCI_VENDOR_ID_ADDIDATA, 0x301e) },
775 { PCI_DEVICE(PCI_VENDOR_ID_ADDIDATA, 0x301f) },
776 { PCI_DEVICE(PCI_VENDOR_ID_ADDIDATA, 0x3020) },
777 { PCI_DEVICE(PCI_VENDOR_ID_ADDIDATA, 0x3021) },
778 { PCI_DEVICE(PCI_VENDOR_ID_ADDIDATA, 0x3022) },
779 { PCI_DEVICE(PCI_VENDOR_ID_ADDIDATA, 0x3023) },
780 { PCI_DEVICE(PCI_VENDOR_ID_ADDIDATA, 0x300B) },
781 { PCI_DEVICE(PCI_VENDOR_ID_ADDIDATA, 0x3002) },
782 { PCI_DEVICE(PCI_VENDOR_ID_ADDIDATA, 0x3003) },
783 { PCI_DEVICE(PCI_VENDOR_ID_ADDIDATA, 0x3004) },
784 { PCI_DEVICE(PCI_VENDOR_ID_ADDIDATA, 0x3024) },
787 MODULE_DEVICE_TABLE(pci, apci3xxx_pci_table);
789 static struct pci_driver apci3xxx_pci_driver = {
790 .name = "addi_apci_3xxx",
791 .id_table = apci3xxx_pci_table,
792 .probe = apci3xxx_pci_probe,
793 .remove = apci3xxx_pci_remove,
795 module_comedi_pci_driver(apci3xxx_driver, apci3xxx_pci_driver);
797 MODULE_AUTHOR("Comedi http://www.comedi.org");
798 MODULE_DESCRIPTION("Comedi low-level driver");
799 MODULE_LICENSE("GPL");