1 #include "../comedidev.h"
4 #include "addi-data/addi_common.h"
5 #include "addi-data/addi_amcc_s5933.h"
7 #define CONFIG_APCI_3XXX 1
9 #define ADDIDATA_DRIVER_NAME "addi_apci_3xxx"
11 #include "addi-data/addi_eeprom.c"
12 #include "addi-data/hwdrv_apci3xxx.c"
14 static const struct addi_board boardtypes[] = {
16 .pc_DriverName = "apci3000-16",
17 .i_VendorId = PCI_VENDOR_ID_ADDIDATA,
19 .i_IorangeBase0 = 256,
20 .i_IorangeBase1 = 256,
21 .i_IorangeBase2 = 256,
22 .i_IorangeBase3 = 256,
23 .i_PCIEeprom = ADDIDATA_NO_EEPROM,
24 .pc_EepromChip = ADDIDATA_9054,
26 .i_NbrAiChannelDiff = 8,
27 .i_AiChannelList = 16,
29 .pr_AiRangelist = &range_apci3XXX_ai,
30 .i_NbrTTLChannel = 24,
31 .b_AvailableConvertUnit = 6,
32 .ui_MinAcquisitiontimeNs = 10000,
33 .interrupt = v_APCI3XXX_Interrupt,
34 .reset = i_APCI3XXX_Reset,
35 .ai_config = i_APCI3XXX_InsnConfigAnalogInput,
36 .ai_read = i_APCI3XXX_InsnReadAnalogInput,
37 .ttl_config = i_APCI3XXX_InsnConfigInitTTLIO,
38 .ttl_bits = i_APCI3XXX_InsnBitsTTLIO,
39 .ttl_read = i_APCI3XXX_InsnReadTTLIO,
40 .ttl_write = i_APCI3XXX_InsnWriteTTLIO,
42 .pc_DriverName = "apci3000-8",
43 .i_VendorId = PCI_VENDOR_ID_ADDIDATA,
45 .i_IorangeBase0 = 256,
46 .i_IorangeBase1 = 256,
47 .i_IorangeBase2 = 256,
48 .i_IorangeBase3 = 256,
49 .i_PCIEeprom = ADDIDATA_NO_EEPROM,
50 .pc_EepromChip = ADDIDATA_9054,
52 .i_NbrAiChannelDiff = 4,
55 .pr_AiRangelist = &range_apci3XXX_ai,
56 .i_NbrTTLChannel = 24,
57 .b_AvailableConvertUnit = 6,
58 .ui_MinAcquisitiontimeNs = 10000,
59 .interrupt = v_APCI3XXX_Interrupt,
60 .reset = i_APCI3XXX_Reset,
61 .ai_config = i_APCI3XXX_InsnConfigAnalogInput,
62 .ai_read = i_APCI3XXX_InsnReadAnalogInput,
63 .ttl_config = i_APCI3XXX_InsnConfigInitTTLIO,
64 .ttl_bits = i_APCI3XXX_InsnBitsTTLIO,
65 .ttl_read = i_APCI3XXX_InsnReadTTLIO,
66 .ttl_write = i_APCI3XXX_InsnWriteTTLIO,
68 .pc_DriverName = "apci3000-4",
69 .i_VendorId = PCI_VENDOR_ID_ADDIDATA,
71 .i_IorangeBase0 = 256,
72 .i_IorangeBase1 = 256,
73 .i_IorangeBase2 = 256,
74 .i_IorangeBase3 = 256,
75 .i_PCIEeprom = ADDIDATA_NO_EEPROM,
76 .pc_EepromChip = ADDIDATA_9054,
78 .i_NbrAiChannelDiff = 2,
81 .pr_AiRangelist = &range_apci3XXX_ai,
82 .i_NbrTTLChannel = 24,
83 .b_AvailableConvertUnit = 6,
84 .ui_MinAcquisitiontimeNs = 10000,
85 .interrupt = v_APCI3XXX_Interrupt,
86 .reset = i_APCI3XXX_Reset,
87 .ai_config = i_APCI3XXX_InsnConfigAnalogInput,
88 .ai_read = i_APCI3XXX_InsnReadAnalogInput,
89 .ttl_config = i_APCI3XXX_InsnConfigInitTTLIO,
90 .ttl_bits = i_APCI3XXX_InsnBitsTTLIO,
91 .ttl_read = i_APCI3XXX_InsnReadTTLIO,
92 .ttl_write = i_APCI3XXX_InsnWriteTTLIO,
94 .pc_DriverName = "apci3006-16",
95 .i_VendorId = PCI_VENDOR_ID_ADDIDATA,
97 .i_IorangeBase0 = 256,
98 .i_IorangeBase1 = 256,
99 .i_IorangeBase2 = 256,
100 .i_IorangeBase3 = 256,
101 .i_PCIEeprom = ADDIDATA_NO_EEPROM,
102 .pc_EepromChip = ADDIDATA_9054,
103 .i_NbrAiChannel = 16,
104 .i_NbrAiChannelDiff = 8,
105 .i_AiChannelList = 16,
106 .i_AiMaxdata = 65535,
107 .pr_AiRangelist = &range_apci3XXX_ai,
108 .i_NbrTTLChannel = 24,
109 .b_AvailableConvertUnit = 6,
110 .ui_MinAcquisitiontimeNs = 10000,
111 .interrupt = v_APCI3XXX_Interrupt,
112 .reset = i_APCI3XXX_Reset,
113 .ai_config = i_APCI3XXX_InsnConfigAnalogInput,
114 .ai_read = i_APCI3XXX_InsnReadAnalogInput,
115 .ttl_config = i_APCI3XXX_InsnConfigInitTTLIO,
116 .ttl_bits = i_APCI3XXX_InsnBitsTTLIO,
117 .ttl_read = i_APCI3XXX_InsnReadTTLIO,
118 .ttl_write = i_APCI3XXX_InsnWriteTTLIO,
120 .pc_DriverName = "apci3006-8",
121 .i_VendorId = PCI_VENDOR_ID_ADDIDATA,
122 .i_DeviceId = 0x3014,
123 .i_IorangeBase0 = 256,
124 .i_IorangeBase1 = 256,
125 .i_IorangeBase2 = 256,
126 .i_IorangeBase3 = 256,
127 .i_PCIEeprom = ADDIDATA_NO_EEPROM,
128 .pc_EepromChip = ADDIDATA_9054,
130 .i_NbrAiChannelDiff = 4,
131 .i_AiChannelList = 8,
132 .i_AiMaxdata = 65535,
133 .pr_AiRangelist = &range_apci3XXX_ai,
134 .i_NbrTTLChannel = 24,
135 .b_AvailableConvertUnit = 6,
136 .ui_MinAcquisitiontimeNs = 10000,
137 .interrupt = v_APCI3XXX_Interrupt,
138 .reset = i_APCI3XXX_Reset,
139 .ai_config = i_APCI3XXX_InsnConfigAnalogInput,
140 .ai_read = i_APCI3XXX_InsnReadAnalogInput,
141 .ttl_config = i_APCI3XXX_InsnConfigInitTTLIO,
142 .ttl_bits = i_APCI3XXX_InsnBitsTTLIO,
143 .ttl_read = i_APCI3XXX_InsnReadTTLIO,
144 .ttl_write = i_APCI3XXX_InsnWriteTTLIO,
146 .pc_DriverName = "apci3006-4",
147 .i_VendorId = PCI_VENDOR_ID_ADDIDATA,
148 .i_DeviceId = 0x3015,
149 .i_IorangeBase0 = 256,
150 .i_IorangeBase1 = 256,
151 .i_IorangeBase2 = 256,
152 .i_IorangeBase3 = 256,
153 .i_PCIEeprom = ADDIDATA_NO_EEPROM,
154 .pc_EepromChip = ADDIDATA_9054,
156 .i_NbrAiChannelDiff = 2,
157 .i_AiChannelList = 4,
158 .i_AiMaxdata = 65535,
159 .pr_AiRangelist = &range_apci3XXX_ai,
160 .i_NbrTTLChannel = 24,
161 .b_AvailableConvertUnit = 6,
162 .ui_MinAcquisitiontimeNs = 10000,
163 .interrupt = v_APCI3XXX_Interrupt,
164 .reset = i_APCI3XXX_Reset,
165 .ai_config = i_APCI3XXX_InsnConfigAnalogInput,
166 .ai_read = i_APCI3XXX_InsnReadAnalogInput,
167 .ttl_config = i_APCI3XXX_InsnConfigInitTTLIO,
168 .ttl_bits = i_APCI3XXX_InsnBitsTTLIO,
169 .ttl_read = i_APCI3XXX_InsnReadTTLIO,
170 .ttl_write = i_APCI3XXX_InsnWriteTTLIO,
172 .pc_DriverName = "apci3010-16",
173 .i_VendorId = PCI_VENDOR_ID_ADDIDATA,
174 .i_DeviceId = 0x3016,
175 .i_IorangeBase0 = 256,
176 .i_IorangeBase1 = 256,
177 .i_IorangeBase2 = 256,
178 .i_IorangeBase3 = 256,
179 .i_PCIEeprom = ADDIDATA_NO_EEPROM,
180 .pc_EepromChip = ADDIDATA_9054,
181 .i_NbrAiChannel = 16,
182 .i_NbrAiChannelDiff = 8,
183 .i_AiChannelList = 16,
185 .pr_AiRangelist = &range_apci3XXX_ai,
189 .i_NbrTTLChannel = 24,
190 .b_AvailableConvertUnit = 6,
191 .ui_MinAcquisitiontimeNs = 5000,
192 .interrupt = v_APCI3XXX_Interrupt,
193 .reset = i_APCI3XXX_Reset,
194 .ai_config = i_APCI3XXX_InsnConfigAnalogInput,
195 .ai_read = i_APCI3XXX_InsnReadAnalogInput,
196 .di_read = i_APCI3XXX_InsnReadDigitalInput,
197 .di_bits = i_APCI3XXX_InsnBitsDigitalInput,
198 .do_write = i_APCI3XXX_InsnWriteDigitalOutput,
199 .do_bits = i_APCI3XXX_InsnBitsDigitalOutput,
200 .do_read = i_APCI3XXX_InsnReadDigitalOutput,
201 .ttl_config = i_APCI3XXX_InsnConfigInitTTLIO,
202 .ttl_bits = i_APCI3XXX_InsnBitsTTLIO,
203 .ttl_read = i_APCI3XXX_InsnReadTTLIO,
204 .ttl_write = i_APCI3XXX_InsnWriteTTLIO,
206 .pc_DriverName = "apci3010-8",
207 .i_VendorId = PCI_VENDOR_ID_ADDIDATA,
208 .i_DeviceId = 0x3017,
209 .i_IorangeBase0 = 256,
210 .i_IorangeBase1 = 256,
211 .i_IorangeBase2 = 256,
212 .i_IorangeBase3 = 256,
213 .i_PCIEeprom = ADDIDATA_NO_EEPROM,
214 .pc_EepromChip = ADDIDATA_9054,
216 .i_NbrAiChannelDiff = 4,
217 .i_AiChannelList = 8,
219 .pr_AiRangelist = &range_apci3XXX_ai,
223 .i_NbrTTLChannel = 24,
224 .b_AvailableConvertUnit = 6,
225 .ui_MinAcquisitiontimeNs = 5000,
226 .interrupt = v_APCI3XXX_Interrupt,
227 .reset = i_APCI3XXX_Reset,
228 .ai_config = i_APCI3XXX_InsnConfigAnalogInput,
229 .ai_read = i_APCI3XXX_InsnReadAnalogInput,
230 .di_read = i_APCI3XXX_InsnReadDigitalInput,
231 .di_bits = i_APCI3XXX_InsnBitsDigitalInput,
232 .do_write = i_APCI3XXX_InsnWriteDigitalOutput,
233 .do_bits = i_APCI3XXX_InsnBitsDigitalOutput,
234 .do_read = i_APCI3XXX_InsnReadDigitalOutput,
235 .ttl_config = i_APCI3XXX_InsnConfigInitTTLIO,
236 .ttl_bits = i_APCI3XXX_InsnBitsTTLIO,
237 .ttl_read = i_APCI3XXX_InsnReadTTLIO,
238 .ttl_write = i_APCI3XXX_InsnWriteTTLIO,
240 .pc_DriverName = "apci3010-4",
241 .i_VendorId = PCI_VENDOR_ID_ADDIDATA,
242 .i_DeviceId = 0x3018,
243 .i_IorangeBase0 = 256,
244 .i_IorangeBase1 = 256,
245 .i_IorangeBase2 = 256,
246 .i_IorangeBase3 = 256,
247 .i_PCIEeprom = ADDIDATA_NO_EEPROM,
248 .pc_EepromChip = ADDIDATA_9054,
250 .i_NbrAiChannelDiff = 2,
251 .i_AiChannelList = 4,
253 .pr_AiRangelist = &range_apci3XXX_ai,
257 .i_NbrTTLChannel = 24,
258 .b_AvailableConvertUnit = 6,
259 .ui_MinAcquisitiontimeNs = 5000,
260 .interrupt = v_APCI3XXX_Interrupt,
261 .reset = i_APCI3XXX_Reset,
262 .ai_config = i_APCI3XXX_InsnConfigAnalogInput,
263 .ai_read = i_APCI3XXX_InsnReadAnalogInput,
264 .di_read = i_APCI3XXX_InsnReadDigitalInput,
265 .di_bits = i_APCI3XXX_InsnBitsDigitalInput,
266 .do_write = i_APCI3XXX_InsnWriteDigitalOutput,
267 .do_bits = i_APCI3XXX_InsnBitsDigitalOutput,
268 .do_read = i_APCI3XXX_InsnReadDigitalOutput,
269 .ttl_config = i_APCI3XXX_InsnConfigInitTTLIO,
270 .ttl_bits = i_APCI3XXX_InsnBitsTTLIO,
271 .ttl_read = i_APCI3XXX_InsnReadTTLIO,
272 .ttl_write = i_APCI3XXX_InsnWriteTTLIO,
274 .pc_DriverName = "apci3016-16",
275 .i_VendorId = PCI_VENDOR_ID_ADDIDATA,
276 .i_DeviceId = 0x3019,
277 .i_IorangeBase0 = 256,
278 .i_IorangeBase1 = 256,
279 .i_IorangeBase2 = 256,
280 .i_IorangeBase3 = 256,
281 .i_PCIEeprom = ADDIDATA_NO_EEPROM,
282 .pc_EepromChip = ADDIDATA_9054,
283 .i_NbrAiChannel = 16,
284 .i_NbrAiChannelDiff = 8,
285 .i_AiChannelList = 16,
286 .i_AiMaxdata = 65535,
287 .pr_AiRangelist = &range_apci3XXX_ai,
291 .i_NbrTTLChannel = 24,
292 .b_AvailableConvertUnit = 6,
293 .ui_MinAcquisitiontimeNs = 5000,
294 .interrupt = v_APCI3XXX_Interrupt,
295 .reset = i_APCI3XXX_Reset,
296 .ai_config = i_APCI3XXX_InsnConfigAnalogInput,
297 .ai_read = i_APCI3XXX_InsnReadAnalogInput,
298 .di_read = i_APCI3XXX_InsnReadDigitalInput,
299 .di_bits = i_APCI3XXX_InsnBitsDigitalInput,
300 .do_write = i_APCI3XXX_InsnWriteDigitalOutput,
301 .do_bits = i_APCI3XXX_InsnBitsDigitalOutput,
302 .do_read = i_APCI3XXX_InsnReadDigitalOutput,
303 .ttl_config = i_APCI3XXX_InsnConfigInitTTLIO,
304 .ttl_bits = i_APCI3XXX_InsnBitsTTLIO,
305 .ttl_read = i_APCI3XXX_InsnReadTTLIO,
306 .ttl_write = i_APCI3XXX_InsnWriteTTLIO,
308 .pc_DriverName = "apci3016-8",
309 .i_VendorId = PCI_VENDOR_ID_ADDIDATA,
310 .i_DeviceId = 0x301A,
311 .i_IorangeBase0 = 256,
312 .i_IorangeBase1 = 256,
313 .i_IorangeBase2 = 256,
314 .i_IorangeBase3 = 256,
315 .i_PCIEeprom = ADDIDATA_NO_EEPROM,
316 .pc_EepromChip = ADDIDATA_9054,
318 .i_NbrAiChannelDiff = 4,
319 .i_AiChannelList = 8,
320 .i_AiMaxdata = 65535,
321 .pr_AiRangelist = &range_apci3XXX_ai,
325 .i_NbrTTLChannel = 24,
326 .b_AvailableConvertUnit = 6,
327 .ui_MinAcquisitiontimeNs = 5000,
328 .interrupt = v_APCI3XXX_Interrupt,
329 .reset = i_APCI3XXX_Reset,
330 .ai_config = i_APCI3XXX_InsnConfigAnalogInput,
331 .ai_read = i_APCI3XXX_InsnReadAnalogInput,
332 .di_read = i_APCI3XXX_InsnReadDigitalInput,
333 .di_bits = i_APCI3XXX_InsnBitsDigitalInput,
334 .do_write = i_APCI3XXX_InsnWriteDigitalOutput,
335 .do_bits = i_APCI3XXX_InsnBitsDigitalOutput,
336 .do_read = i_APCI3XXX_InsnReadDigitalOutput,
337 .ttl_config = i_APCI3XXX_InsnConfigInitTTLIO,
338 .ttl_bits = i_APCI3XXX_InsnBitsTTLIO,
339 .ttl_read = i_APCI3XXX_InsnReadTTLIO,
340 .ttl_write = i_APCI3XXX_InsnWriteTTLIO,
342 .pc_DriverName = "apci3016-4",
343 .i_VendorId = PCI_VENDOR_ID_ADDIDATA,
344 .i_DeviceId = 0x301B,
345 .i_IorangeBase0 = 256,
346 .i_IorangeBase1 = 256,
347 .i_IorangeBase2 = 256,
348 .i_IorangeBase3 = 256,
349 .i_PCIEeprom = ADDIDATA_NO_EEPROM,
350 .pc_EepromChip = ADDIDATA_9054,
352 .i_NbrAiChannelDiff = 2,
353 .i_AiChannelList = 4,
354 .i_AiMaxdata = 65535,
355 .pr_AiRangelist = &range_apci3XXX_ai,
359 .i_NbrTTLChannel = 24,
360 .b_AvailableConvertUnit = 6,
361 .ui_MinAcquisitiontimeNs = 5000,
362 .interrupt = v_APCI3XXX_Interrupt,
363 .reset = i_APCI3XXX_Reset,
364 .ai_config = i_APCI3XXX_InsnConfigAnalogInput,
365 .ai_read = i_APCI3XXX_InsnReadAnalogInput,
366 .di_read = i_APCI3XXX_InsnReadDigitalInput,
367 .di_bits = i_APCI3XXX_InsnBitsDigitalInput,
368 .do_write = i_APCI3XXX_InsnWriteDigitalOutput,
369 .do_bits = i_APCI3XXX_InsnBitsDigitalOutput,
370 .do_read = i_APCI3XXX_InsnReadDigitalOutput,
371 .ttl_config = i_APCI3XXX_InsnConfigInitTTLIO,
372 .ttl_bits = i_APCI3XXX_InsnBitsTTLIO,
373 .ttl_read = i_APCI3XXX_InsnReadTTLIO,
374 .ttl_write = i_APCI3XXX_InsnWriteTTLIO,
376 .pc_DriverName = "apci3100-16-4",
377 .i_VendorId = PCI_VENDOR_ID_ADDIDATA,
378 .i_DeviceId = 0x301C,
379 .i_IorangeBase0 = 256,
380 .i_IorangeBase1 = 256,
381 .i_IorangeBase2 = 256,
382 .i_IorangeBase3 = 256,
383 .i_PCIEeprom = ADDIDATA_NO_EEPROM,
384 .pc_EepromChip = ADDIDATA_9054,
385 .i_NbrAiChannel = 16,
386 .i_NbrAiChannelDiff = 8,
387 .i_AiChannelList = 16,
391 .pr_AiRangelist = &range_apci3XXX_ai,
392 .pr_AoRangelist = &range_apci3XXX_ao,
393 .i_NbrTTLChannel = 24,
394 .b_AvailableConvertUnit = 6,
395 .ui_MinAcquisitiontimeNs = 10000,
396 .interrupt = v_APCI3XXX_Interrupt,
397 .reset = i_APCI3XXX_Reset,
398 .ai_config = i_APCI3XXX_InsnConfigAnalogInput,
399 .ai_read = i_APCI3XXX_InsnReadAnalogInput,
400 .ao_write = i_APCI3XXX_InsnWriteAnalogOutput,
401 .ttl_config = i_APCI3XXX_InsnConfigInitTTLIO,
402 .ttl_bits = i_APCI3XXX_InsnBitsTTLIO,
403 .ttl_read = i_APCI3XXX_InsnReadTTLIO,
404 .ttl_write = i_APCI3XXX_InsnWriteTTLIO,
406 .pc_DriverName = "apci3100-8-4",
407 .i_VendorId = PCI_VENDOR_ID_ADDIDATA,
408 .i_DeviceId = 0x301D,
409 .i_IorangeBase0 = 256,
410 .i_IorangeBase1 = 256,
411 .i_IorangeBase2 = 256,
412 .i_IorangeBase3 = 256,
413 .i_PCIEeprom = ADDIDATA_NO_EEPROM,
414 .pc_EepromChip = ADDIDATA_9054,
416 .i_NbrAiChannelDiff = 4,
417 .i_AiChannelList = 8,
421 .pr_AiRangelist = &range_apci3XXX_ai,
422 .pr_AoRangelist = &range_apci3XXX_ao,
423 .i_NbrTTLChannel = 24,
424 .b_AvailableConvertUnit = 6,
425 .ui_MinAcquisitiontimeNs = 10000,
426 .interrupt = v_APCI3XXX_Interrupt,
427 .reset = i_APCI3XXX_Reset,
428 .ai_config = i_APCI3XXX_InsnConfigAnalogInput,
429 .ai_read = i_APCI3XXX_InsnReadAnalogInput,
430 .ao_write = i_APCI3XXX_InsnWriteAnalogOutput,
431 .ttl_config = i_APCI3XXX_InsnConfigInitTTLIO,
432 .ttl_bits = i_APCI3XXX_InsnBitsTTLIO,
433 .ttl_read = i_APCI3XXX_InsnReadTTLIO,
434 .ttl_write = i_APCI3XXX_InsnWriteTTLIO,
436 .pc_DriverName = "apci3106-16-4",
437 .i_VendorId = PCI_VENDOR_ID_ADDIDATA,
438 .i_DeviceId = 0x301E,
439 .i_IorangeBase0 = 256,
440 .i_IorangeBase1 = 256,
441 .i_IorangeBase2 = 256,
442 .i_IorangeBase3 = 256,
443 .i_PCIEeprom = ADDIDATA_NO_EEPROM,
444 .pc_EepromChip = ADDIDATA_9054,
445 .i_NbrAiChannel = 16,
446 .i_NbrAiChannelDiff = 8,
447 .i_AiChannelList = 16,
449 .i_AiMaxdata = 65535,
451 .pr_AiRangelist = &range_apci3XXX_ai,
452 .pr_AoRangelist = &range_apci3XXX_ao,
453 .i_NbrTTLChannel = 24,
454 .b_AvailableConvertUnit = 6,
455 .ui_MinAcquisitiontimeNs = 10000,
456 .interrupt = v_APCI3XXX_Interrupt,
457 .reset = i_APCI3XXX_Reset,
458 .ai_config = i_APCI3XXX_InsnConfigAnalogInput,
459 .ai_read = i_APCI3XXX_InsnReadAnalogInput,
460 .ao_write = i_APCI3XXX_InsnWriteAnalogOutput,
461 .ttl_config = i_APCI3XXX_InsnConfigInitTTLIO,
462 .ttl_bits = i_APCI3XXX_InsnBitsTTLIO,
463 .ttl_read = i_APCI3XXX_InsnReadTTLIO,
464 .ttl_write = i_APCI3XXX_InsnWriteTTLIO,
466 .pc_DriverName = "apci3106-8-4",
467 .i_VendorId = PCI_VENDOR_ID_ADDIDATA,
468 .i_DeviceId = 0x301F,
469 .i_IorangeBase0 = 256,
470 .i_IorangeBase1 = 256,
471 .i_IorangeBase2 = 256,
472 .i_IorangeBase3 = 256,
473 .i_PCIEeprom = ADDIDATA_NO_EEPROM,
474 .pc_EepromChip = ADDIDATA_9054,
476 .i_NbrAiChannelDiff = 4,
477 .i_AiChannelList = 8,
479 .i_AiMaxdata = 65535,
481 .pr_AiRangelist = &range_apci3XXX_ai,
482 .pr_AoRangelist = &range_apci3XXX_ao,
483 .i_NbrTTLChannel = 24,
484 .b_AvailableConvertUnit = 6,
485 .ui_MinAcquisitiontimeNs = 10000,
486 .interrupt = v_APCI3XXX_Interrupt,
487 .reset = i_APCI3XXX_Reset,
488 .ai_config = i_APCI3XXX_InsnConfigAnalogInput,
489 .ai_read = i_APCI3XXX_InsnReadAnalogInput,
490 .ao_write = i_APCI3XXX_InsnWriteAnalogOutput,
491 .ttl_config = i_APCI3XXX_InsnConfigInitTTLIO,
492 .ttl_bits = i_APCI3XXX_InsnBitsTTLIO,
493 .ttl_read = i_APCI3XXX_InsnReadTTLIO,
494 .ttl_write = i_APCI3XXX_InsnWriteTTLIO,
496 .pc_DriverName = "apci3110-16-4",
497 .i_VendorId = PCI_VENDOR_ID_ADDIDATA,
498 .i_DeviceId = 0x3020,
499 .i_IorangeBase0 = 256,
500 .i_IorangeBase1 = 256,
501 .i_IorangeBase2 = 256,
502 .i_IorangeBase3 = 256,
503 .i_PCIEeprom = ADDIDATA_NO_EEPROM,
504 .pc_EepromChip = ADDIDATA_9054,
505 .i_NbrAiChannel = 16,
506 .i_NbrAiChannelDiff = 8,
507 .i_AiChannelList = 16,
511 .pr_AiRangelist = &range_apci3XXX_ai,
512 .pr_AoRangelist = &range_apci3XXX_ao,
516 .i_NbrTTLChannel = 24,
517 .b_AvailableConvertUnit = 6,
518 .ui_MinAcquisitiontimeNs = 5000,
519 .interrupt = v_APCI3XXX_Interrupt,
520 .reset = i_APCI3XXX_Reset,
521 .ai_config = i_APCI3XXX_InsnConfigAnalogInput,
522 .ai_read = i_APCI3XXX_InsnReadAnalogInput,
523 .ao_write = i_APCI3XXX_InsnWriteAnalogOutput,
524 .di_read = i_APCI3XXX_InsnReadDigitalInput,
525 .di_bits = i_APCI3XXX_InsnBitsDigitalInput,
526 .do_write = i_APCI3XXX_InsnWriteDigitalOutput,
527 .do_bits = i_APCI3XXX_InsnBitsDigitalOutput,
528 .do_read = i_APCI3XXX_InsnReadDigitalOutput,
529 .ttl_config = i_APCI3XXX_InsnConfigInitTTLIO,
530 .ttl_bits = i_APCI3XXX_InsnBitsTTLIO,
531 .ttl_read = i_APCI3XXX_InsnReadTTLIO,
532 .ttl_write = i_APCI3XXX_InsnWriteTTLIO,
534 .pc_DriverName = "apci3110-8-4",
535 .i_VendorId = PCI_VENDOR_ID_ADDIDATA,
536 .i_DeviceId = 0x3021,
537 .i_IorangeBase0 = 256,
538 .i_IorangeBase1 = 256,
539 .i_IorangeBase2 = 256,
540 .i_IorangeBase3 = 256,
541 .i_PCIEeprom = ADDIDATA_NO_EEPROM,
542 .pc_EepromChip = ADDIDATA_9054,
544 .i_NbrAiChannelDiff = 4,
545 .i_AiChannelList = 8,
549 .pr_AiRangelist = &range_apci3XXX_ai,
550 .pr_AoRangelist = &range_apci3XXX_ao,
554 .i_NbrTTLChannel = 24,
555 .b_AvailableConvertUnit = 6,
556 .ui_MinAcquisitiontimeNs = 5000,
557 .interrupt = v_APCI3XXX_Interrupt,
558 .reset = i_APCI3XXX_Reset,
559 .ai_config = i_APCI3XXX_InsnConfigAnalogInput,
560 .ai_read = i_APCI3XXX_InsnReadAnalogInput,
561 .ao_write = i_APCI3XXX_InsnWriteAnalogOutput,
562 .di_read = i_APCI3XXX_InsnReadDigitalInput,
563 .di_bits = i_APCI3XXX_InsnBitsDigitalInput,
564 .do_write = i_APCI3XXX_InsnWriteDigitalOutput,
565 .do_bits = i_APCI3XXX_InsnBitsDigitalOutput,
566 .do_read = i_APCI3XXX_InsnReadDigitalOutput,
567 .ttl_config = i_APCI3XXX_InsnConfigInitTTLIO,
568 .ttl_bits = i_APCI3XXX_InsnBitsTTLIO,
569 .ttl_read = i_APCI3XXX_InsnReadTTLIO,
570 .ttl_write = i_APCI3XXX_InsnWriteTTLIO,
572 .pc_DriverName = "apci3116-16-4",
573 .i_VendorId = PCI_VENDOR_ID_ADDIDATA,
574 .i_DeviceId = 0x3022,
575 .i_IorangeBase0 = 256,
576 .i_IorangeBase1 = 256,
577 .i_IorangeBase2 = 256,
578 .i_IorangeBase3 = 256,
579 .i_PCIEeprom = ADDIDATA_NO_EEPROM,
580 .pc_EepromChip = ADDIDATA_9054,
581 .i_NbrAiChannel = 16,
582 .i_NbrAiChannelDiff = 8,
583 .i_AiChannelList = 16,
585 .i_AiMaxdata = 65535,
587 .pr_AiRangelist = &range_apci3XXX_ai,
588 .pr_AoRangelist = &range_apci3XXX_ao,
592 .i_NbrTTLChannel = 24,
593 .b_AvailableConvertUnit = 6,
594 .ui_MinAcquisitiontimeNs = 5000,
595 .interrupt = v_APCI3XXX_Interrupt,
596 .reset = i_APCI3XXX_Reset,
597 .ai_config = i_APCI3XXX_InsnConfigAnalogInput,
598 .ai_read = i_APCI3XXX_InsnReadAnalogInput,
599 .ao_write = i_APCI3XXX_InsnWriteAnalogOutput,
600 .di_read = i_APCI3XXX_InsnReadDigitalInput,
601 .di_bits = i_APCI3XXX_InsnBitsDigitalInput,
602 .do_write = i_APCI3XXX_InsnWriteDigitalOutput,
603 .do_bits = i_APCI3XXX_InsnBitsDigitalOutput,
604 .do_read = i_APCI3XXX_InsnReadDigitalOutput,
605 .ttl_config = i_APCI3XXX_InsnConfigInitTTLIO,
606 .ttl_bits = i_APCI3XXX_InsnBitsTTLIO,
607 .ttl_read = i_APCI3XXX_InsnReadTTLIO,
608 .ttl_write = i_APCI3XXX_InsnWriteTTLIO,
610 .pc_DriverName = "apci3116-8-4",
611 .i_VendorId = PCI_VENDOR_ID_ADDIDATA,
612 .i_DeviceId = 0x3023,
613 .i_IorangeBase0 = 256,
614 .i_IorangeBase1 = 256,
615 .i_IorangeBase2 = 256,
616 .i_IorangeBase3 = 256,
617 .i_PCIEeprom = ADDIDATA_NO_EEPROM,
618 .pc_EepromChip = ADDIDATA_9054,
620 .i_NbrAiChannelDiff = 4,
621 .i_AiChannelList = 8,
623 .i_AiMaxdata = 65535,
625 .pr_AiRangelist = &range_apci3XXX_ai,
626 .pr_AoRangelist = &range_apci3XXX_ao,
630 .i_NbrTTLChannel = 24,
631 .b_AvailableConvertUnit = 6,
632 .ui_MinAcquisitiontimeNs = 5000,
633 .interrupt = v_APCI3XXX_Interrupt,
634 .reset = i_APCI3XXX_Reset,
635 .ai_config = i_APCI3XXX_InsnConfigAnalogInput,
636 .ai_read = i_APCI3XXX_InsnReadAnalogInput,
637 .ao_write = i_APCI3XXX_InsnWriteAnalogOutput,
638 .di_read = i_APCI3XXX_InsnReadDigitalInput,
639 .di_bits = i_APCI3XXX_InsnBitsDigitalInput,
640 .do_write = i_APCI3XXX_InsnWriteDigitalOutput,
641 .do_bits = i_APCI3XXX_InsnBitsDigitalOutput,
642 .do_read = i_APCI3XXX_InsnReadDigitalOutput,
643 .ttl_config = i_APCI3XXX_InsnConfigInitTTLIO,
644 .ttl_bits = i_APCI3XXX_InsnBitsTTLIO,
645 .ttl_read = i_APCI3XXX_InsnReadTTLIO,
646 .ttl_write = i_APCI3XXX_InsnWriteTTLIO,
648 .pc_DriverName = "apci3003",
649 .i_VendorId = PCI_VENDOR_ID_ADDIDATA,
650 .i_DeviceId = 0x300B,
651 .i_IorangeBase0 = 256,
652 .i_IorangeBase1 = 256,
653 .i_IorangeBase2 = 256,
654 .i_IorangeBase3 = 256,
655 .i_PCIEeprom = ADDIDATA_NO_EEPROM,
656 .pc_EepromChip = ADDIDATA_9054,
657 .i_NbrAiChannelDiff = 4,
658 .i_AiChannelList = 4,
659 .i_AiMaxdata = 65535,
660 .pr_AiRangelist = &range_apci3XXX_ai,
664 .b_AvailableConvertUnit = 7,
665 .ui_MinAcquisitiontimeNs = 2500,
666 .interrupt = v_APCI3XXX_Interrupt,
667 .reset = i_APCI3XXX_Reset,
668 .ai_config = i_APCI3XXX_InsnConfigAnalogInput,
669 .ai_read = i_APCI3XXX_InsnReadAnalogInput,
670 .di_read = i_APCI3XXX_InsnReadDigitalInput,
671 .di_bits = i_APCI3XXX_InsnBitsDigitalInput,
672 .do_write = i_APCI3XXX_InsnWriteDigitalOutput,
673 .do_bits = i_APCI3XXX_InsnBitsDigitalOutput,
674 .do_read = i_APCI3XXX_InsnReadDigitalOutput,
676 .pc_DriverName = "apci3002-16",
677 .i_VendorId = PCI_VENDOR_ID_ADDIDATA,
678 .i_DeviceId = 0x3002,
679 .i_IorangeBase0 = 256,
680 .i_IorangeBase1 = 256,
681 .i_IorangeBase2 = 256,
682 .i_IorangeBase3 = 256,
683 .i_PCIEeprom = ADDIDATA_NO_EEPROM,
684 .pc_EepromChip = ADDIDATA_9054,
685 .i_NbrAiChannelDiff = 16,
686 .i_AiChannelList = 16,
687 .i_AiMaxdata = 65535,
688 .pr_AiRangelist = &range_apci3XXX_ai,
692 .b_AvailableConvertUnit = 6,
693 .ui_MinAcquisitiontimeNs = 5000,
694 .interrupt = v_APCI3XXX_Interrupt,
695 .reset = i_APCI3XXX_Reset,
696 .ai_config = i_APCI3XXX_InsnConfigAnalogInput,
697 .ai_read = i_APCI3XXX_InsnReadAnalogInput,
698 .di_read = i_APCI3XXX_InsnReadDigitalInput,
699 .di_bits = i_APCI3XXX_InsnBitsDigitalInput,
700 .do_write = i_APCI3XXX_InsnWriteDigitalOutput,
701 .do_bits = i_APCI3XXX_InsnBitsDigitalOutput,
702 .do_read = i_APCI3XXX_InsnReadDigitalOutput,
704 .pc_DriverName = "apci3002-8",
705 .i_VendorId = PCI_VENDOR_ID_ADDIDATA,
706 .i_DeviceId = 0x3003,
707 .i_IorangeBase0 = 256,
708 .i_IorangeBase1 = 256,
709 .i_IorangeBase2 = 256,
710 .i_IorangeBase3 = 256,
711 .i_PCIEeprom = ADDIDATA_NO_EEPROM,
712 .pc_EepromChip = ADDIDATA_9054,
713 .i_NbrAiChannelDiff = 8,
714 .i_AiChannelList = 8,
715 .i_AiMaxdata = 65535,
716 .pr_AiRangelist = &range_apci3XXX_ai,
720 .b_AvailableConvertUnit = 6,
721 .ui_MinAcquisitiontimeNs = 5000,
722 .interrupt = v_APCI3XXX_Interrupt,
723 .reset = i_APCI3XXX_Reset,
724 .ai_config = i_APCI3XXX_InsnConfigAnalogInput,
725 .ai_read = i_APCI3XXX_InsnReadAnalogInput,
726 .di_read = i_APCI3XXX_InsnReadDigitalInput,
727 .di_bits = i_APCI3XXX_InsnBitsDigitalInput,
728 .do_write = i_APCI3XXX_InsnWriteDigitalOutput,
729 .do_bits = i_APCI3XXX_InsnBitsDigitalOutput,
730 .do_read = i_APCI3XXX_InsnReadDigitalOutput,
732 .pc_DriverName = "apci3002-4",
733 .i_VendorId = PCI_VENDOR_ID_ADDIDATA,
734 .i_DeviceId = 0x3004,
735 .i_IorangeBase0 = 256,
736 .i_IorangeBase1 = 256,
737 .i_IorangeBase2 = 256,
738 .i_IorangeBase3 = 256,
739 .i_PCIEeprom = ADDIDATA_NO_EEPROM,
740 .pc_EepromChip = ADDIDATA_9054,
741 .i_NbrAiChannelDiff = 4,
742 .i_AiChannelList = 4,
743 .i_AiMaxdata = 65535,
744 .pr_AiRangelist = &range_apci3XXX_ai,
748 .b_AvailableConvertUnit = 6,
749 .ui_MinAcquisitiontimeNs = 5000,
750 .interrupt = v_APCI3XXX_Interrupt,
751 .reset = i_APCI3XXX_Reset,
752 .ai_config = i_APCI3XXX_InsnConfigAnalogInput,
753 .ai_read = i_APCI3XXX_InsnReadAnalogInput,
754 .di_read = i_APCI3XXX_InsnReadDigitalInput,
755 .di_bits = i_APCI3XXX_InsnBitsDigitalInput,
756 .do_write = i_APCI3XXX_InsnWriteDigitalOutput,
757 .do_bits = i_APCI3XXX_InsnBitsDigitalOutput,
758 .do_read = i_APCI3XXX_InsnReadDigitalOutput,
760 .pc_DriverName = "apci3500",
761 .i_VendorId = PCI_VENDOR_ID_ADDIDATA,
762 .i_DeviceId = 0x3024,
763 .i_IorangeBase0 = 256,
764 .i_IorangeBase1 = 256,
765 .i_IorangeBase2 = 256,
766 .i_IorangeBase3 = 256,
767 .i_PCIEeprom = ADDIDATA_NO_EEPROM,
768 .pc_EepromChip = ADDIDATA_9054,
771 .pr_AoRangelist = &range_apci3XXX_ao,
772 .i_NbrTTLChannel = 24,
773 .interrupt = v_APCI3XXX_Interrupt,
774 .reset = i_APCI3XXX_Reset,
775 .ao_write = i_APCI3XXX_InsnWriteAnalogOutput,
776 .ttl_config = i_APCI3XXX_InsnConfigInitTTLIO,
777 .ttl_bits = i_APCI3XXX_InsnBitsTTLIO,
778 .ttl_read = i_APCI3XXX_InsnReadTTLIO,
779 .ttl_write = i_APCI3XXX_InsnWriteTTLIO,
783 static DEFINE_PCI_DEVICE_TABLE(addi_apci_tbl) = {
784 { PCI_DEVICE(PCI_VENDOR_ID_ADDIDATA, 0x3010) },
785 { PCI_DEVICE(PCI_VENDOR_ID_ADDIDATA, 0x300f) },
786 { PCI_DEVICE(PCI_VENDOR_ID_ADDIDATA, 0x300e) },
787 { PCI_DEVICE(PCI_VENDOR_ID_ADDIDATA, 0x3013) },
788 { PCI_DEVICE(PCI_VENDOR_ID_ADDIDATA, 0x3014) },
789 { PCI_DEVICE(PCI_VENDOR_ID_ADDIDATA, 0x3015) },
790 { PCI_DEVICE(PCI_VENDOR_ID_ADDIDATA, 0x3016) },
791 { PCI_DEVICE(PCI_VENDOR_ID_ADDIDATA, 0x3017) },
792 { PCI_DEVICE(PCI_VENDOR_ID_ADDIDATA, 0x3018) },
793 { PCI_DEVICE(PCI_VENDOR_ID_ADDIDATA, 0x3019) },
794 { PCI_DEVICE(PCI_VENDOR_ID_ADDIDATA, 0x301a) },
795 { PCI_DEVICE(PCI_VENDOR_ID_ADDIDATA, 0x301b) },
796 { PCI_DEVICE(PCI_VENDOR_ID_ADDIDATA, 0x301c) },
797 { PCI_DEVICE(PCI_VENDOR_ID_ADDIDATA, 0x301d) },
798 { PCI_DEVICE(PCI_VENDOR_ID_ADDIDATA, 0x301e) },
799 { PCI_DEVICE(PCI_VENDOR_ID_ADDIDATA, 0x301f) },
800 { PCI_DEVICE(PCI_VENDOR_ID_ADDIDATA, 0x3020) },
801 { PCI_DEVICE(PCI_VENDOR_ID_ADDIDATA, 0x3021) },
802 { PCI_DEVICE(PCI_VENDOR_ID_ADDIDATA, 0x3022) },
803 { PCI_DEVICE(PCI_VENDOR_ID_ADDIDATA, 0x3023) },
804 { PCI_DEVICE(PCI_VENDOR_ID_ADDIDATA, 0x300B) },
805 { PCI_DEVICE(PCI_VENDOR_ID_ADDIDATA, 0x3002) },
806 { PCI_DEVICE(PCI_VENDOR_ID_ADDIDATA, 0x3003) },
807 { PCI_DEVICE(PCI_VENDOR_ID_ADDIDATA, 0x3004) },
808 { PCI_DEVICE(PCI_VENDOR_ID_ADDIDATA, 0x3024) },
811 MODULE_DEVICE_TABLE(pci, addi_apci_tbl);
813 #include "addi-data/addi_common.c"
815 MODULE_AUTHOR("Comedi http://www.comedi.org");
816 MODULE_DESCRIPTION("Comedi low-level driver");
817 MODULE_LICENSE("GPL");