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