addi_apci_3xxx.c revision 9901a4d75d007686e8f6473189cafc4b216b7449
13d41c44370a9a1e78e53c9997289347ec97d46eeH Hartley Sweeten#include "../comedidev.h"
23d41c44370a9a1e78e53c9997289347ec97d46eeH Hartley Sweeten#include "comedi_fc.h"
3bf36f012c7ddaff083bb0ef187feddf4d85507a0H Hartley Sweeten#include "amcc_s5933.h"
43d41c44370a9a1e78e53c9997289347ec97d46eeH Hartley Sweeten
53d41c44370a9a1e78e53c9997289347ec97d46eeH Hartley Sweeten#include "addi-data/addi_common.h"
63d41c44370a9a1e78e53c9997289347ec97d46eeH Hartley Sweeten
7bf6a1578c10a4f3ef94a3c744267f18f9c3642bdH Hartley Sweeten#include "addi-data/addi_eeprom.c"
8bf6a1578c10a4f3ef94a3c744267f18f9c3642bdH Hartley Sweeten#include "addi-data/hwdrv_apci3xxx.c"
920a22b706b8ee37d1a2282f2c9bf7f2c73a5a7a5H Hartley Sweeten#include "addi-data/addi_common.c"
10c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten
1120a22b706b8ee37d1a2282f2c9bf7f2c73a5a7a5H Hartley Sweetenstatic const struct addi_board apci3xxx_boardtypes[] = {
12c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten	{
13c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.pc_DriverName		= "apci3000-16",
14c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_VendorId		= PCI_VENDOR_ID_ADDIDATA,
15c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_DeviceId		= 0x3010,
16c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_IorangeBase0		= 256,
17c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_IorangeBase1		= 256,
18c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_IorangeBase2		= 256,
19c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_IorangeBase3		= 256,
20c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_PCIEeprom		= ADDIDATA_NO_EEPROM,
21c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.pc_EepromChip		= ADDIDATA_9054,
22c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_NbrAiChannel		= 16,
23c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_NbrAiChannelDiff	= 8,
24c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_AiChannelList	= 16,
25c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_AiMaxdata		= 4095,
26c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.pr_AiRangelist		= &range_apci3XXX_ai,
27c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_NbrTTLChannel	= 24,
28c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.b_AvailableConvertUnit	= 6,
29c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ui_MinAcquisitiontimeNs = 10000,
30c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.interrupt		= v_APCI3XXX_Interrupt,
31c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.reset			= i_APCI3XXX_Reset,
32c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ai_config		= i_APCI3XXX_InsnConfigAnalogInput,
33c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ai_read		= i_APCI3XXX_InsnReadAnalogInput,
34c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ttl_config		= i_APCI3XXX_InsnConfigInitTTLIO,
35c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ttl_bits		= i_APCI3XXX_InsnBitsTTLIO,
36c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ttl_read		= i_APCI3XXX_InsnReadTTLIO,
37c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ttl_write		= i_APCI3XXX_InsnWriteTTLIO,
38c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten	}, {
39c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.pc_DriverName		= "apci3000-8",
40c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_VendorId		= PCI_VENDOR_ID_ADDIDATA,
41c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_DeviceId		= 0x300F,
42c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_IorangeBase0		= 256,
43c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_IorangeBase1		= 256,
44c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_IorangeBase2		= 256,
45c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_IorangeBase3		= 256,
46c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_PCIEeprom		= ADDIDATA_NO_EEPROM,
47c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.pc_EepromChip		= ADDIDATA_9054,
48c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_NbrAiChannel		= 8,
49c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_NbrAiChannelDiff	= 4,
50c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_AiChannelList	= 8,
51c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_AiMaxdata		= 4095,
52c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.pr_AiRangelist		= &range_apci3XXX_ai,
53c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_NbrTTLChannel	= 24,
54c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.b_AvailableConvertUnit	= 6,
55c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ui_MinAcquisitiontimeNs = 10000,
56c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.interrupt		= v_APCI3XXX_Interrupt,
57c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.reset			= i_APCI3XXX_Reset,
58c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ai_config		= i_APCI3XXX_InsnConfigAnalogInput,
59c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ai_read		= i_APCI3XXX_InsnReadAnalogInput,
60c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ttl_config		= i_APCI3XXX_InsnConfigInitTTLIO,
61c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ttl_bits		= i_APCI3XXX_InsnBitsTTLIO,
62c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ttl_read		= i_APCI3XXX_InsnReadTTLIO,
63c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ttl_write		= i_APCI3XXX_InsnWriteTTLIO,
64c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten	}, {
65c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.pc_DriverName		= "apci3000-4",
66c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_VendorId		= PCI_VENDOR_ID_ADDIDATA,
67c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_DeviceId		= 0x300E,
68c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_IorangeBase0		= 256,
69c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_IorangeBase1		= 256,
70c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_IorangeBase2		= 256,
71c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_IorangeBase3		= 256,
72c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_PCIEeprom		= ADDIDATA_NO_EEPROM,
73c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.pc_EepromChip		= ADDIDATA_9054,
74c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_NbrAiChannel		= 4,
75c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_NbrAiChannelDiff	= 2,
76c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_AiChannelList	= 4,
77c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_AiMaxdata		= 4095,
78c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.pr_AiRangelist		= &range_apci3XXX_ai,
79c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_NbrTTLChannel	= 24,
80c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.b_AvailableConvertUnit	= 6,
81c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ui_MinAcquisitiontimeNs = 10000,
82c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.interrupt		= v_APCI3XXX_Interrupt,
83c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.reset			= i_APCI3XXX_Reset,
84c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ai_config		= i_APCI3XXX_InsnConfigAnalogInput,
85c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ai_read		= i_APCI3XXX_InsnReadAnalogInput,
86c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ttl_config		= i_APCI3XXX_InsnConfigInitTTLIO,
87c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ttl_bits		= i_APCI3XXX_InsnBitsTTLIO,
88c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ttl_read		= i_APCI3XXX_InsnReadTTLIO,
89c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ttl_write		= i_APCI3XXX_InsnWriteTTLIO,
90c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten	}, {
91c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.pc_DriverName		= "apci3006-16",
92c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_VendorId		= PCI_VENDOR_ID_ADDIDATA,
93c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_DeviceId		= 0x3013,
94c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_IorangeBase0		= 256,
95c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_IorangeBase1		= 256,
96c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_IorangeBase2		= 256,
97c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_IorangeBase3		= 256,
98c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_PCIEeprom		= ADDIDATA_NO_EEPROM,
99c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.pc_EepromChip		= ADDIDATA_9054,
100c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_NbrAiChannel		= 16,
101c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_NbrAiChannelDiff	= 8,
102c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_AiChannelList	= 16,
103c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_AiMaxdata		= 65535,
104c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.pr_AiRangelist		= &range_apci3XXX_ai,
105c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_NbrTTLChannel	= 24,
106c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.b_AvailableConvertUnit	= 6,
107c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ui_MinAcquisitiontimeNs = 10000,
108c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.interrupt		= v_APCI3XXX_Interrupt,
109c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.reset			= i_APCI3XXX_Reset,
110c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ai_config		= i_APCI3XXX_InsnConfigAnalogInput,
111c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ai_read		= i_APCI3XXX_InsnReadAnalogInput,
112c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ttl_config		= i_APCI3XXX_InsnConfigInitTTLIO,
113c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ttl_bits		= i_APCI3XXX_InsnBitsTTLIO,
114c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ttl_read		= i_APCI3XXX_InsnReadTTLIO,
115c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ttl_write		= i_APCI3XXX_InsnWriteTTLIO,
116c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten	}, {
117c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.pc_DriverName		= "apci3006-8",
118c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_VendorId		= PCI_VENDOR_ID_ADDIDATA,
119c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_DeviceId		= 0x3014,
120c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_IorangeBase0		= 256,
121c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_IorangeBase1		= 256,
122c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_IorangeBase2		= 256,
123c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_IorangeBase3		= 256,
124c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_PCIEeprom		= ADDIDATA_NO_EEPROM,
125c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.pc_EepromChip		= ADDIDATA_9054,
126c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_NbrAiChannel		= 8,
127c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_NbrAiChannelDiff	= 4,
128c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_AiChannelList	= 8,
129c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_AiMaxdata		= 65535,
130c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.pr_AiRangelist		= &range_apci3XXX_ai,
131c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_NbrTTLChannel	= 24,
132c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.b_AvailableConvertUnit	= 6,
133c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ui_MinAcquisitiontimeNs = 10000,
134c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.interrupt		= v_APCI3XXX_Interrupt,
135c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.reset			= i_APCI3XXX_Reset,
136c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ai_config		= i_APCI3XXX_InsnConfigAnalogInput,
137c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ai_read		= i_APCI3XXX_InsnReadAnalogInput,
138c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ttl_config		= i_APCI3XXX_InsnConfigInitTTLIO,
139c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ttl_bits		= i_APCI3XXX_InsnBitsTTLIO,
140c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ttl_read		= i_APCI3XXX_InsnReadTTLIO,
141c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ttl_write		= i_APCI3XXX_InsnWriteTTLIO,
142c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten	}, {
143c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.pc_DriverName		= "apci3006-4",
144c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_VendorId		= PCI_VENDOR_ID_ADDIDATA,
145c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_DeviceId		= 0x3015,
146c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_IorangeBase0		= 256,
147c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_IorangeBase1		= 256,
148c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_IorangeBase2		= 256,
149c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_IorangeBase3		= 256,
150c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_PCIEeprom		= ADDIDATA_NO_EEPROM,
151c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.pc_EepromChip		= ADDIDATA_9054,
152c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_NbrAiChannel		= 4,
153c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_NbrAiChannelDiff	= 2,
154c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_AiChannelList	= 4,
155c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_AiMaxdata		= 65535,
156c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.pr_AiRangelist		= &range_apci3XXX_ai,
157c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_NbrTTLChannel	= 24,
158c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.b_AvailableConvertUnit	= 6,
159c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ui_MinAcquisitiontimeNs = 10000,
160c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.interrupt		= v_APCI3XXX_Interrupt,
161c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.reset			= i_APCI3XXX_Reset,
162c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ai_config		= i_APCI3XXX_InsnConfigAnalogInput,
163c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ai_read		= i_APCI3XXX_InsnReadAnalogInput,
164c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ttl_config		= i_APCI3XXX_InsnConfigInitTTLIO,
165c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ttl_bits		= i_APCI3XXX_InsnBitsTTLIO,
166c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ttl_read		= i_APCI3XXX_InsnReadTTLIO,
167c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ttl_write		= i_APCI3XXX_InsnWriteTTLIO,
168c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten	}, {
169c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.pc_DriverName		= "apci3010-16",
170c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_VendorId		= PCI_VENDOR_ID_ADDIDATA,
171c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_DeviceId		= 0x3016,
172c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_IorangeBase0		= 256,
173c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_IorangeBase1		= 256,
174c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_IorangeBase2		= 256,
175c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_IorangeBase3		= 256,
176c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_PCIEeprom		= ADDIDATA_NO_EEPROM,
177c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.pc_EepromChip		= ADDIDATA_9054,
178c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_NbrAiChannel		= 16,
179c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_NbrAiChannelDiff	= 8,
180c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_AiChannelList	= 16,
181c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_AiMaxdata		= 4095,
182c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.pr_AiRangelist		= &range_apci3XXX_ai,
183c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_NbrDiChannel		= 4,
184c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_NbrDoChannel		= 4,
185c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_DoMaxdata		= 1,
186c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_NbrTTLChannel	= 24,
187c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.b_AvailableConvertUnit	= 6,
188c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ui_MinAcquisitiontimeNs = 5000,
189c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.interrupt		= v_APCI3XXX_Interrupt,
190c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.reset			= i_APCI3XXX_Reset,
191c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ai_config		= i_APCI3XXX_InsnConfigAnalogInput,
192c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ai_read		= i_APCI3XXX_InsnReadAnalogInput,
19310f71c7845686b7f93113f1fe6dbc3718d8a8673H Hartley Sweeten		.di_bits		= apci3xxx_di_insn_bits,
1942b70a4f4f97b70e8cd9d8a16983758aa4fc3450bH Hartley Sweeten		.do_bits		= apci3xxx_do_insn_bits,
195c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ttl_config		= i_APCI3XXX_InsnConfigInitTTLIO,
196c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ttl_bits		= i_APCI3XXX_InsnBitsTTLIO,
197c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ttl_read		= i_APCI3XXX_InsnReadTTLIO,
198c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ttl_write		= i_APCI3XXX_InsnWriteTTLIO,
199c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten	}, {
200c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.pc_DriverName		= "apci3010-8",
201c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_VendorId		= PCI_VENDOR_ID_ADDIDATA,
202c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_DeviceId		= 0x3017,
203c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_IorangeBase0		= 256,
204c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_IorangeBase1		= 256,
205c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_IorangeBase2		= 256,
206c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_IorangeBase3		= 256,
207c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_PCIEeprom		= ADDIDATA_NO_EEPROM,
208c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.pc_EepromChip		= ADDIDATA_9054,
209c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_NbrAiChannel		= 8,
210c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_NbrAiChannelDiff	= 4,
211c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_AiChannelList	= 8,
212c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_AiMaxdata		= 4095,
213c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.pr_AiRangelist		= &range_apci3XXX_ai,
214c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_NbrDiChannel		= 4,
215c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_NbrDoChannel		= 4,
216c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_DoMaxdata		= 1,
217c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_NbrTTLChannel	= 24,
218c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.b_AvailableConvertUnit	= 6,
219c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ui_MinAcquisitiontimeNs = 5000,
220c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.interrupt		= v_APCI3XXX_Interrupt,
221c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.reset			= i_APCI3XXX_Reset,
222c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ai_config		= i_APCI3XXX_InsnConfigAnalogInput,
223c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ai_read		= i_APCI3XXX_InsnReadAnalogInput,
22410f71c7845686b7f93113f1fe6dbc3718d8a8673H Hartley Sweeten		.di_bits		= apci3xxx_di_insn_bits,
2252b70a4f4f97b70e8cd9d8a16983758aa4fc3450bH Hartley Sweeten		.do_bits		= apci3xxx_do_insn_bits,
226c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ttl_config		= i_APCI3XXX_InsnConfigInitTTLIO,
227c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ttl_bits		= i_APCI3XXX_InsnBitsTTLIO,
228c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ttl_read		= i_APCI3XXX_InsnReadTTLIO,
229c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ttl_write		= i_APCI3XXX_InsnWriteTTLIO,
230c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten	}, {
231c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.pc_DriverName		= "apci3010-4",
232c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_VendorId		= PCI_VENDOR_ID_ADDIDATA,
233c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_DeviceId		= 0x3018,
234c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_IorangeBase0		= 256,
235c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_IorangeBase1		= 256,
236c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_IorangeBase2		= 256,
237c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_IorangeBase3		= 256,
238c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_PCIEeprom		= ADDIDATA_NO_EEPROM,
239c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.pc_EepromChip		= ADDIDATA_9054,
240c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_NbrAiChannel		= 4,
241c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_NbrAiChannelDiff	= 2,
242c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_AiChannelList	= 4,
243c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_AiMaxdata		= 4095,
244c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.pr_AiRangelist		= &range_apci3XXX_ai,
245c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_NbrDiChannel		= 4,
246c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_NbrDoChannel		= 4,
247c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_DoMaxdata		= 1,
248c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_NbrTTLChannel	= 24,
249c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.b_AvailableConvertUnit	= 6,
250c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ui_MinAcquisitiontimeNs = 5000,
251c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.interrupt		= v_APCI3XXX_Interrupt,
252c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.reset			= i_APCI3XXX_Reset,
253c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ai_config		= i_APCI3XXX_InsnConfigAnalogInput,
254c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ai_read		= i_APCI3XXX_InsnReadAnalogInput,
25510f71c7845686b7f93113f1fe6dbc3718d8a8673H Hartley Sweeten		.di_bits		= apci3xxx_di_insn_bits,
2562b70a4f4f97b70e8cd9d8a16983758aa4fc3450bH Hartley Sweeten		.do_bits		= apci3xxx_do_insn_bits,
257c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ttl_config		= i_APCI3XXX_InsnConfigInitTTLIO,
258c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ttl_bits		= i_APCI3XXX_InsnBitsTTLIO,
259c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ttl_read		= i_APCI3XXX_InsnReadTTLIO,
260c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ttl_write		= i_APCI3XXX_InsnWriteTTLIO,
261c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten	}, {
262c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.pc_DriverName		= "apci3016-16",
263c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_VendorId		= PCI_VENDOR_ID_ADDIDATA,
264c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_DeviceId		= 0x3019,
265c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_IorangeBase0		= 256,
266c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_IorangeBase1		= 256,
267c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_IorangeBase2		= 256,
268c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_IorangeBase3		= 256,
269c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_PCIEeprom		= ADDIDATA_NO_EEPROM,
270c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.pc_EepromChip		= ADDIDATA_9054,
271c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_NbrAiChannel		= 16,
272c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_NbrAiChannelDiff	= 8,
273c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_AiChannelList	= 16,
274c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_AiMaxdata		= 65535,
275c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.pr_AiRangelist		= &range_apci3XXX_ai,
276c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_NbrDiChannel		= 4,
277c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_NbrDoChannel		= 4,
278c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_DoMaxdata		= 1,
279c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_NbrTTLChannel	= 24,
280c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.b_AvailableConvertUnit	= 6,
281c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ui_MinAcquisitiontimeNs = 5000,
282c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.interrupt		= v_APCI3XXX_Interrupt,
283c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.reset			= i_APCI3XXX_Reset,
284c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ai_config		= i_APCI3XXX_InsnConfigAnalogInput,
285c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ai_read		= i_APCI3XXX_InsnReadAnalogInput,
28610f71c7845686b7f93113f1fe6dbc3718d8a8673H Hartley Sweeten		.di_bits		= apci3xxx_di_insn_bits,
2872b70a4f4f97b70e8cd9d8a16983758aa4fc3450bH Hartley Sweeten		.do_bits		= apci3xxx_do_insn_bits,
288c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ttl_config		= i_APCI3XXX_InsnConfigInitTTLIO,
289c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ttl_bits		= i_APCI3XXX_InsnBitsTTLIO,
290c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ttl_read		= i_APCI3XXX_InsnReadTTLIO,
291c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ttl_write		= i_APCI3XXX_InsnWriteTTLIO,
292c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten	}, {
293c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.pc_DriverName		= "apci3016-8",
294c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_VendorId		= PCI_VENDOR_ID_ADDIDATA,
295c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_DeviceId		= 0x301A,
296c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_IorangeBase0		= 256,
297c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_IorangeBase1		= 256,
298c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_IorangeBase2		= 256,
299c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_IorangeBase3		= 256,
300c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_PCIEeprom		= ADDIDATA_NO_EEPROM,
301c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.pc_EepromChip		= ADDIDATA_9054,
302c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_NbrAiChannel		= 8,
303c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_NbrAiChannelDiff	= 4,
304c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_AiChannelList	= 8,
305c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_AiMaxdata		= 65535,
306c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.pr_AiRangelist		= &range_apci3XXX_ai,
307c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_NbrDiChannel		= 4,
308c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_NbrDoChannel		= 4,
309c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_DoMaxdata		= 1,
310c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_NbrTTLChannel	= 24,
311c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.b_AvailableConvertUnit	= 6,
312c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ui_MinAcquisitiontimeNs = 5000,
313c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.interrupt		= v_APCI3XXX_Interrupt,
314c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.reset			= i_APCI3XXX_Reset,
315c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ai_config		= i_APCI3XXX_InsnConfigAnalogInput,
316c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ai_read		= i_APCI3XXX_InsnReadAnalogInput,
31710f71c7845686b7f93113f1fe6dbc3718d8a8673H Hartley Sweeten		.di_bits		= apci3xxx_di_insn_bits,
3182b70a4f4f97b70e8cd9d8a16983758aa4fc3450bH Hartley Sweeten		.do_bits		= apci3xxx_do_insn_bits,
319c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ttl_config		= i_APCI3XXX_InsnConfigInitTTLIO,
320c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ttl_bits		= i_APCI3XXX_InsnBitsTTLIO,
321c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ttl_read		= i_APCI3XXX_InsnReadTTLIO,
322c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ttl_write		= i_APCI3XXX_InsnWriteTTLIO,
323c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten	}, {
324c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.pc_DriverName		= "apci3016-4",
325c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_VendorId		= PCI_VENDOR_ID_ADDIDATA,
326c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_DeviceId		= 0x301B,
327c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_IorangeBase0		= 256,
328c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_IorangeBase1		= 256,
329c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_IorangeBase2		= 256,
330c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_IorangeBase3		= 256,
331c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_PCIEeprom		= ADDIDATA_NO_EEPROM,
332c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.pc_EepromChip		= ADDIDATA_9054,
333c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_NbrAiChannel		= 4,
334c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_NbrAiChannelDiff	= 2,
335c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_AiChannelList	= 4,
336c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_AiMaxdata		= 65535,
337c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.pr_AiRangelist		= &range_apci3XXX_ai,
338c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_NbrDiChannel		= 4,
339c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_NbrDoChannel		= 4,
340c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_DoMaxdata		= 1,
341c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_NbrTTLChannel	= 24,
342c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.b_AvailableConvertUnit	= 6,
343c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ui_MinAcquisitiontimeNs = 5000,
344c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.interrupt		= v_APCI3XXX_Interrupt,
345c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.reset			= i_APCI3XXX_Reset,
346c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ai_config		= i_APCI3XXX_InsnConfigAnalogInput,
347c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ai_read		= i_APCI3XXX_InsnReadAnalogInput,
34810f71c7845686b7f93113f1fe6dbc3718d8a8673H Hartley Sweeten		.di_bits		= apci3xxx_di_insn_bits,
3492b70a4f4f97b70e8cd9d8a16983758aa4fc3450bH Hartley Sweeten		.do_bits		= apci3xxx_do_insn_bits,
350c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ttl_config		= i_APCI3XXX_InsnConfigInitTTLIO,
351c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ttl_bits		= i_APCI3XXX_InsnBitsTTLIO,
352c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ttl_read		= i_APCI3XXX_InsnReadTTLIO,
353c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ttl_write		= i_APCI3XXX_InsnWriteTTLIO,
354c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten	}, {
355c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.pc_DriverName		= "apci3100-16-4",
356c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_VendorId		= PCI_VENDOR_ID_ADDIDATA,
357c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_DeviceId		= 0x301C,
358c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_IorangeBase0		= 256,
359c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_IorangeBase1		= 256,
360c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_IorangeBase2		= 256,
361c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_IorangeBase3		= 256,
362c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_PCIEeprom		= ADDIDATA_NO_EEPROM,
363c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.pc_EepromChip		= ADDIDATA_9054,
364c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_NbrAiChannel		= 16,
365c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_NbrAiChannelDiff	= 8,
366c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_AiChannelList	= 16,
367c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_NbrAoChannel		= 4,
368c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_AiMaxdata		= 4095,
369c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_AoMaxdata		= 4095,
370c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.pr_AiRangelist		= &range_apci3XXX_ai,
371c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.pr_AoRangelist		= &range_apci3XXX_ao,
372c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_NbrTTLChannel	= 24,
373c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.b_AvailableConvertUnit	= 6,
374c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ui_MinAcquisitiontimeNs = 10000,
375c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.interrupt		= v_APCI3XXX_Interrupt,
376c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.reset			= i_APCI3XXX_Reset,
377c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ai_config		= i_APCI3XXX_InsnConfigAnalogInput,
378c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ai_read		= i_APCI3XXX_InsnReadAnalogInput,
379c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ao_write		= i_APCI3XXX_InsnWriteAnalogOutput,
380c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ttl_config		= i_APCI3XXX_InsnConfigInitTTLIO,
381c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ttl_bits		= i_APCI3XXX_InsnBitsTTLIO,
382c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ttl_read		= i_APCI3XXX_InsnReadTTLIO,
383c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ttl_write		= i_APCI3XXX_InsnWriteTTLIO,
384c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten	}, {
385c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.pc_DriverName		= "apci3100-8-4",
386c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_VendorId		= PCI_VENDOR_ID_ADDIDATA,
387c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_DeviceId		= 0x301D,
388c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_IorangeBase0		= 256,
389c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_IorangeBase1		= 256,
390c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_IorangeBase2		= 256,
391c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_IorangeBase3		= 256,
392c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_PCIEeprom		= ADDIDATA_NO_EEPROM,
393c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.pc_EepromChip		= ADDIDATA_9054,
394c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_NbrAiChannel		= 8,
395c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_NbrAiChannelDiff	= 4,
396c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_AiChannelList	= 8,
397c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_NbrAoChannel		= 4,
398c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_AiMaxdata		= 4095,
399c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_AoMaxdata		= 4095,
400c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.pr_AiRangelist		= &range_apci3XXX_ai,
401c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.pr_AoRangelist		= &range_apci3XXX_ao,
402c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_NbrTTLChannel	= 24,
403c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.b_AvailableConvertUnit	= 6,
404c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ui_MinAcquisitiontimeNs = 10000,
405c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.interrupt		= v_APCI3XXX_Interrupt,
406c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.reset			= i_APCI3XXX_Reset,
407c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ai_config		= i_APCI3XXX_InsnConfigAnalogInput,
408c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ai_read		= i_APCI3XXX_InsnReadAnalogInput,
409c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ao_write		= i_APCI3XXX_InsnWriteAnalogOutput,
410c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ttl_config		= i_APCI3XXX_InsnConfigInitTTLIO,
411c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ttl_bits		= i_APCI3XXX_InsnBitsTTLIO,
412c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ttl_read		= i_APCI3XXX_InsnReadTTLIO,
413c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ttl_write		= i_APCI3XXX_InsnWriteTTLIO,
414c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten	}, {
415c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.pc_DriverName		= "apci3106-16-4",
416c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_VendorId		= PCI_VENDOR_ID_ADDIDATA,
417c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_DeviceId		= 0x301E,
418c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_IorangeBase0		= 256,
419c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_IorangeBase1		= 256,
420c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_IorangeBase2		= 256,
421c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_IorangeBase3		= 256,
422c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_PCIEeprom		= ADDIDATA_NO_EEPROM,
423c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.pc_EepromChip		= ADDIDATA_9054,
424c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_NbrAiChannel		= 16,
425c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_NbrAiChannelDiff	= 8,
426c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_AiChannelList	= 16,
427c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_NbrAoChannel		= 4,
428c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_AiMaxdata		= 65535,
429c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_AoMaxdata		= 4095,
430c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.pr_AiRangelist		= &range_apci3XXX_ai,
431c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.pr_AoRangelist		= &range_apci3XXX_ao,
432c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_NbrTTLChannel	= 24,
433c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.b_AvailableConvertUnit	= 6,
434c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ui_MinAcquisitiontimeNs = 10000,
435c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.interrupt		= v_APCI3XXX_Interrupt,
436c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.reset			= i_APCI3XXX_Reset,
437c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ai_config		= i_APCI3XXX_InsnConfigAnalogInput,
438c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ai_read		= i_APCI3XXX_InsnReadAnalogInput,
439c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ao_write		= i_APCI3XXX_InsnWriteAnalogOutput,
440c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ttl_config		= i_APCI3XXX_InsnConfigInitTTLIO,
441c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ttl_bits		= i_APCI3XXX_InsnBitsTTLIO,
442c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ttl_read		= i_APCI3XXX_InsnReadTTLIO,
443c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ttl_write		= i_APCI3XXX_InsnWriteTTLIO,
444c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten	}, {
445c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.pc_DriverName		= "apci3106-8-4",
446c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_VendorId		= PCI_VENDOR_ID_ADDIDATA,
447c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_DeviceId		= 0x301F,
448c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_IorangeBase0		= 256,
449c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_IorangeBase1		= 256,
450c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_IorangeBase2		= 256,
451c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_IorangeBase3		= 256,
452c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_PCIEeprom		= ADDIDATA_NO_EEPROM,
453c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.pc_EepromChip		= ADDIDATA_9054,
454c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_NbrAiChannel		= 8,
455c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_NbrAiChannelDiff	= 4,
456c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_AiChannelList	= 8,
457c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_NbrAoChannel		= 4,
458c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_AiMaxdata		= 65535,
459c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_AoMaxdata		= 4095,
460c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.pr_AiRangelist		= &range_apci3XXX_ai,
461c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.pr_AoRangelist		= &range_apci3XXX_ao,
462c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_NbrTTLChannel	= 24,
463c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.b_AvailableConvertUnit	= 6,
464c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ui_MinAcquisitiontimeNs = 10000,
465c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.interrupt		= v_APCI3XXX_Interrupt,
466c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.reset			= i_APCI3XXX_Reset,
467c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ai_config		= i_APCI3XXX_InsnConfigAnalogInput,
468c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ai_read		= i_APCI3XXX_InsnReadAnalogInput,
469c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ao_write		= i_APCI3XXX_InsnWriteAnalogOutput,
470c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ttl_config		= i_APCI3XXX_InsnConfigInitTTLIO,
471c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ttl_bits		= i_APCI3XXX_InsnBitsTTLIO,
472c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ttl_read		= i_APCI3XXX_InsnReadTTLIO,
473c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ttl_write		= i_APCI3XXX_InsnWriteTTLIO,
474c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten	}, {
475c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.pc_DriverName		= "apci3110-16-4",
476c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_VendorId		= PCI_VENDOR_ID_ADDIDATA,
477c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_DeviceId		= 0x3020,
478c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_IorangeBase0		= 256,
479c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_IorangeBase1		= 256,
480c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_IorangeBase2		= 256,
481c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_IorangeBase3		= 256,
482c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_PCIEeprom		= ADDIDATA_NO_EEPROM,
483c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.pc_EepromChip		= ADDIDATA_9054,
484c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_NbrAiChannel		= 16,
485c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_NbrAiChannelDiff	= 8,
486c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_AiChannelList	= 16,
487c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_NbrAoChannel		= 4,
488c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_AiMaxdata		= 4095,
489c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_AoMaxdata		= 4095,
490c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.pr_AiRangelist		= &range_apci3XXX_ai,
491c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.pr_AoRangelist		= &range_apci3XXX_ao,
492c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_NbrDiChannel		= 4,
493c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_NbrDoChannel		= 4,
494c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_DoMaxdata		= 1,
495c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_NbrTTLChannel	= 24,
496c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.b_AvailableConvertUnit	= 6,
497c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ui_MinAcquisitiontimeNs = 5000,
498c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.interrupt		= v_APCI3XXX_Interrupt,
499c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.reset			= i_APCI3XXX_Reset,
500c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ai_config		= i_APCI3XXX_InsnConfigAnalogInput,
501c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ai_read		= i_APCI3XXX_InsnReadAnalogInput,
502c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ao_write		= i_APCI3XXX_InsnWriteAnalogOutput,
50310f71c7845686b7f93113f1fe6dbc3718d8a8673H Hartley Sweeten		.di_bits		= apci3xxx_di_insn_bits,
5042b70a4f4f97b70e8cd9d8a16983758aa4fc3450bH Hartley Sweeten		.do_bits		= apci3xxx_do_insn_bits,
505c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ttl_config		= i_APCI3XXX_InsnConfigInitTTLIO,
506c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ttl_bits		= i_APCI3XXX_InsnBitsTTLIO,
507c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ttl_read		= i_APCI3XXX_InsnReadTTLIO,
508c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ttl_write		= i_APCI3XXX_InsnWriteTTLIO,
509c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten	}, {
510c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.pc_DriverName		= "apci3110-8-4",
511c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_VendorId		= PCI_VENDOR_ID_ADDIDATA,
512c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_DeviceId		= 0x3021,
513c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_IorangeBase0		= 256,
514c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_IorangeBase1		= 256,
515c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_IorangeBase2		= 256,
516c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_IorangeBase3		= 256,
517c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_PCIEeprom		= ADDIDATA_NO_EEPROM,
518c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.pc_EepromChip		= ADDIDATA_9054,
519c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_NbrAiChannel		= 8,
520c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_NbrAiChannelDiff	= 4,
521c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_AiChannelList	= 8,
522c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_NbrAoChannel		= 4,
523c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_AiMaxdata		= 4095,
524c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_AoMaxdata		= 4095,
525c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.pr_AiRangelist		= &range_apci3XXX_ai,
526c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.pr_AoRangelist		= &range_apci3XXX_ao,
527c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_NbrDiChannel		= 4,
528c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_NbrDoChannel		= 4,
529c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_DoMaxdata		= 1,
530c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_NbrTTLChannel	= 24,
531c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.b_AvailableConvertUnit	= 6,
532c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ui_MinAcquisitiontimeNs = 5000,
533c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.interrupt		= v_APCI3XXX_Interrupt,
534c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.reset			= i_APCI3XXX_Reset,
535c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ai_config		= i_APCI3XXX_InsnConfigAnalogInput,
536c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ai_read		= i_APCI3XXX_InsnReadAnalogInput,
537c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ao_write		= i_APCI3XXX_InsnWriteAnalogOutput,
53810f71c7845686b7f93113f1fe6dbc3718d8a8673H Hartley Sweeten		.di_bits		= apci3xxx_di_insn_bits,
5392b70a4f4f97b70e8cd9d8a16983758aa4fc3450bH Hartley Sweeten		.do_bits		= apci3xxx_do_insn_bits,
540c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ttl_config		= i_APCI3XXX_InsnConfigInitTTLIO,
541c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ttl_bits		= i_APCI3XXX_InsnBitsTTLIO,
542c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ttl_read		= i_APCI3XXX_InsnReadTTLIO,
543c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ttl_write		= i_APCI3XXX_InsnWriteTTLIO,
544c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten	}, {
545c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.pc_DriverName		= "apci3116-16-4",
546c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_VendorId		= PCI_VENDOR_ID_ADDIDATA,
547c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_DeviceId		= 0x3022,
548c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_IorangeBase0		= 256,
549c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_IorangeBase1		= 256,
550c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_IorangeBase2		= 256,
551c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_IorangeBase3		= 256,
552c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_PCIEeprom		= ADDIDATA_NO_EEPROM,
553c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.pc_EepromChip		= ADDIDATA_9054,
554c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_NbrAiChannel		= 16,
555c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_NbrAiChannelDiff	= 8,
556c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_AiChannelList	= 16,
557c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_NbrAoChannel		= 4,
558c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_AiMaxdata		= 65535,
559c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_AoMaxdata		= 4095,
560c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.pr_AiRangelist		= &range_apci3XXX_ai,
561c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.pr_AoRangelist		= &range_apci3XXX_ao,
562c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_NbrDiChannel		= 4,
563c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_NbrDoChannel		= 4,
564c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_DoMaxdata		= 1,
565c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_NbrTTLChannel	= 24,
566c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.b_AvailableConvertUnit	= 6,
567c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ui_MinAcquisitiontimeNs = 5000,
568c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.interrupt		= v_APCI3XXX_Interrupt,
569c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.reset			= i_APCI3XXX_Reset,
570c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ai_config		= i_APCI3XXX_InsnConfigAnalogInput,
571c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ai_read		= i_APCI3XXX_InsnReadAnalogInput,
572c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ao_write		= i_APCI3XXX_InsnWriteAnalogOutput,
57310f71c7845686b7f93113f1fe6dbc3718d8a8673H Hartley Sweeten		.di_bits		= apci3xxx_di_insn_bits,
5742b70a4f4f97b70e8cd9d8a16983758aa4fc3450bH Hartley Sweeten		.do_bits		= apci3xxx_do_insn_bits,
575c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ttl_config		= i_APCI3XXX_InsnConfigInitTTLIO,
576c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ttl_bits		= i_APCI3XXX_InsnBitsTTLIO,
577c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ttl_read		= i_APCI3XXX_InsnReadTTLIO,
578c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ttl_write		= i_APCI3XXX_InsnWriteTTLIO,
579c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten	}, {
580c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.pc_DriverName		= "apci3116-8-4",
581c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_VendorId		= PCI_VENDOR_ID_ADDIDATA,
582c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_DeviceId		= 0x3023,
583c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_IorangeBase0		= 256,
584c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_IorangeBase1		= 256,
585c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_IorangeBase2		= 256,
586c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_IorangeBase3		= 256,
587c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_PCIEeprom		= ADDIDATA_NO_EEPROM,
588c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.pc_EepromChip		= ADDIDATA_9054,
589c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_NbrAiChannel		= 8,
590c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_NbrAiChannelDiff	= 4,
591c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_AiChannelList	= 8,
592c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_NbrAoChannel		= 4,
593c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_AiMaxdata		= 65535,
594c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_AoMaxdata		= 4095,
595c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.pr_AiRangelist		= &range_apci3XXX_ai,
596c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.pr_AoRangelist		= &range_apci3XXX_ao,
597c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_NbrDiChannel		= 4,
598c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_NbrDoChannel		= 4,
599c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_DoMaxdata		= 1,
600c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_NbrTTLChannel	= 24,
601c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.b_AvailableConvertUnit	= 6,
602c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ui_MinAcquisitiontimeNs = 5000,
603c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.interrupt		= v_APCI3XXX_Interrupt,
604c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.reset			= i_APCI3XXX_Reset,
605c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ai_config		= i_APCI3XXX_InsnConfigAnalogInput,
606c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ai_read		= i_APCI3XXX_InsnReadAnalogInput,
607c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ao_write		= i_APCI3XXX_InsnWriteAnalogOutput,
60810f71c7845686b7f93113f1fe6dbc3718d8a8673H Hartley Sweeten		.di_bits		= apci3xxx_di_insn_bits,
6092b70a4f4f97b70e8cd9d8a16983758aa4fc3450bH Hartley Sweeten		.do_bits		= apci3xxx_do_insn_bits,
610c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ttl_config		= i_APCI3XXX_InsnConfigInitTTLIO,
611c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ttl_bits		= i_APCI3XXX_InsnBitsTTLIO,
612c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ttl_read		= i_APCI3XXX_InsnReadTTLIO,
613c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ttl_write		= i_APCI3XXX_InsnWriteTTLIO,
614c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten	}, {
615c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.pc_DriverName		= "apci3003",
616c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_VendorId		= PCI_VENDOR_ID_ADDIDATA,
617c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_DeviceId		= 0x300B,
618c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_IorangeBase0		= 256,
619c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_IorangeBase1		= 256,
620c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_IorangeBase2		= 256,
621c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_IorangeBase3		= 256,
622c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_PCIEeprom		= ADDIDATA_NO_EEPROM,
623c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.pc_EepromChip		= ADDIDATA_9054,
624c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_NbrAiChannelDiff	= 4,
625c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_AiChannelList	= 4,
626c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_AiMaxdata		= 65535,
627c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.pr_AiRangelist		= &range_apci3XXX_ai,
628c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_NbrDiChannel		= 4,
629c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_NbrDoChannel		= 4,
630c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_DoMaxdata		= 1,
631c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.b_AvailableConvertUnit	= 7,
632c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ui_MinAcquisitiontimeNs = 2500,
633c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.interrupt		= v_APCI3XXX_Interrupt,
634c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.reset			= i_APCI3XXX_Reset,
635c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ai_config		= i_APCI3XXX_InsnConfigAnalogInput,
636c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ai_read		= i_APCI3XXX_InsnReadAnalogInput,
63710f71c7845686b7f93113f1fe6dbc3718d8a8673H Hartley Sweeten		.di_bits		= apci3xxx_di_insn_bits,
6382b70a4f4f97b70e8cd9d8a16983758aa4fc3450bH Hartley Sweeten		.do_bits		= apci3xxx_do_insn_bits,
639c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten	}, {
640c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.pc_DriverName		= "apci3002-16",
641c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_VendorId		= PCI_VENDOR_ID_ADDIDATA,
642c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_DeviceId		= 0x3002,
643c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_IorangeBase0		= 256,
644c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_IorangeBase1		= 256,
645c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_IorangeBase2		= 256,
646c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_IorangeBase3		= 256,
647c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_PCIEeprom		= ADDIDATA_NO_EEPROM,
648c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.pc_EepromChip		= ADDIDATA_9054,
649c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_NbrAiChannelDiff	= 16,
650c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_AiChannelList	= 16,
651c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_AiMaxdata		= 65535,
652c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.pr_AiRangelist		= &range_apci3XXX_ai,
653c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_NbrDiChannel		= 4,
654c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_NbrDoChannel		= 4,
655c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_DoMaxdata		= 1,
656c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.b_AvailableConvertUnit	= 6,
657c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ui_MinAcquisitiontimeNs = 5000,
658c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.interrupt		= v_APCI3XXX_Interrupt,
659c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.reset			= i_APCI3XXX_Reset,
660c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ai_config		= i_APCI3XXX_InsnConfigAnalogInput,
661c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ai_read		= i_APCI3XXX_InsnReadAnalogInput,
66210f71c7845686b7f93113f1fe6dbc3718d8a8673H Hartley Sweeten		.di_bits		= apci3xxx_di_insn_bits,
6632b70a4f4f97b70e8cd9d8a16983758aa4fc3450bH Hartley Sweeten		.do_bits		= apci3xxx_do_insn_bits,
664c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten	}, {
665c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.pc_DriverName		= "apci3002-8",
666c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_VendorId		= PCI_VENDOR_ID_ADDIDATA,
667c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_DeviceId		= 0x3003,
668c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_IorangeBase0		= 256,
669c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_IorangeBase1		= 256,
670c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_IorangeBase2		= 256,
671c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_IorangeBase3		= 256,
672c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_PCIEeprom		= ADDIDATA_NO_EEPROM,
673c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.pc_EepromChip		= ADDIDATA_9054,
674c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_NbrAiChannelDiff	= 8,
675c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_AiChannelList	= 8,
676c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_AiMaxdata		= 65535,
677c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.pr_AiRangelist		= &range_apci3XXX_ai,
678c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_NbrDiChannel		= 4,
679c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_NbrDoChannel		= 4,
680c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_DoMaxdata		= 1,
681c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.b_AvailableConvertUnit	= 6,
682c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ui_MinAcquisitiontimeNs = 5000,
683c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.interrupt		= v_APCI3XXX_Interrupt,
684c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.reset			= i_APCI3XXX_Reset,
685c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ai_config		= i_APCI3XXX_InsnConfigAnalogInput,
686c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ai_read		= i_APCI3XXX_InsnReadAnalogInput,
68710f71c7845686b7f93113f1fe6dbc3718d8a8673H Hartley Sweeten		.di_bits		= apci3xxx_di_insn_bits,
6882b70a4f4f97b70e8cd9d8a16983758aa4fc3450bH Hartley Sweeten		.do_bits		= apci3xxx_do_insn_bits,
689c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten	}, {
690c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.pc_DriverName		= "apci3002-4",
691c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_VendorId		= PCI_VENDOR_ID_ADDIDATA,
692c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_DeviceId		= 0x3004,
693c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_IorangeBase0		= 256,
694c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_IorangeBase1		= 256,
695c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_IorangeBase2		= 256,
696c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_IorangeBase3		= 256,
697c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_PCIEeprom		= ADDIDATA_NO_EEPROM,
698c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.pc_EepromChip		= ADDIDATA_9054,
699c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_NbrAiChannelDiff	= 4,
700c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_AiChannelList	= 4,
701c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_AiMaxdata		= 65535,
702c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.pr_AiRangelist		= &range_apci3XXX_ai,
703c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_NbrDiChannel		= 4,
704c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_NbrDoChannel		= 4,
705c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_DoMaxdata		= 1,
706c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.b_AvailableConvertUnit	= 6,
707c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ui_MinAcquisitiontimeNs = 5000,
708c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.interrupt		= v_APCI3XXX_Interrupt,
709c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.reset			= i_APCI3XXX_Reset,
710c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ai_config		= i_APCI3XXX_InsnConfigAnalogInput,
711c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ai_read		= i_APCI3XXX_InsnReadAnalogInput,
71210f71c7845686b7f93113f1fe6dbc3718d8a8673H Hartley Sweeten		.di_bits		= apci3xxx_di_insn_bits,
7132b70a4f4f97b70e8cd9d8a16983758aa4fc3450bH Hartley Sweeten		.do_bits		= apci3xxx_do_insn_bits,
714c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten	}, {
715c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.pc_DriverName		= "apci3500",
716c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_VendorId		= PCI_VENDOR_ID_ADDIDATA,
717c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_DeviceId		= 0x3024,
718c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_IorangeBase0		= 256,
719c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_IorangeBase1		= 256,
720c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_IorangeBase2		= 256,
721c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_IorangeBase3		= 256,
722c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_PCIEeprom		= ADDIDATA_NO_EEPROM,
723c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.pc_EepromChip		= ADDIDATA_9054,
724c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_NbrAoChannel		= 4,
725c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_AoMaxdata		= 4095,
726c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.pr_AoRangelist		= &range_apci3XXX_ao,
727c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.i_NbrTTLChannel	= 24,
728c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.interrupt		= v_APCI3XXX_Interrupt,
729c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.reset			= i_APCI3XXX_Reset,
730c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ao_write		= i_APCI3XXX_InsnWriteAnalogOutput,
731c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ttl_config		= i_APCI3XXX_InsnConfigInitTTLIO,
732c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ttl_bits		= i_APCI3XXX_InsnBitsTTLIO,
733c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ttl_read		= i_APCI3XXX_InsnReadTTLIO,
734c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten		.ttl_write		= i_APCI3XXX_InsnWriteTTLIO,
735c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten	},
736c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten};
737c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten
73820a22b706b8ee37d1a2282f2c9bf7f2c73a5a7a5H Hartley Sweetenstatic struct comedi_driver apci3xxx_driver = {
73920a22b706b8ee37d1a2282f2c9bf7f2c73a5a7a5H Hartley Sweeten	.driver_name	= "addi_apci_3xxx",
74020a22b706b8ee37d1a2282f2c9bf7f2c73a5a7a5H Hartley Sweeten	.module		= THIS_MODULE,
74192cba8f3b42e1cb8211b64e91618102ecc8f0a6dH Hartley Sweeten	.auto_attach	= addi_auto_attach,
74220a22b706b8ee37d1a2282f2c9bf7f2c73a5a7a5H Hartley Sweeten	.detach		= i_ADDI_Detach,
74320a22b706b8ee37d1a2282f2c9bf7f2c73a5a7a5H Hartley Sweeten	.num_names	= ARRAY_SIZE(apci3xxx_boardtypes),
74420a22b706b8ee37d1a2282f2c9bf7f2c73a5a7a5H Hartley Sweeten	.board_name	= &apci3xxx_boardtypes[0].pc_DriverName,
74520a22b706b8ee37d1a2282f2c9bf7f2c73a5a7a5H Hartley Sweeten	.offset		= sizeof(struct addi_board),
74620a22b706b8ee37d1a2282f2c9bf7f2c73a5a7a5H Hartley Sweeten};
74720a22b706b8ee37d1a2282f2c9bf7f2c73a5a7a5H Hartley Sweeten
748a690b7e535f2f97a3a05ee570715abeb60a8910fBill Pembertonstatic int apci3xxx_pci_probe(struct pci_dev *dev,
74920a22b706b8ee37d1a2282f2c9bf7f2c73a5a7a5H Hartley Sweeten					const struct pci_device_id *ent)
75020a22b706b8ee37d1a2282f2c9bf7f2c73a5a7a5H Hartley Sweeten{
75120a22b706b8ee37d1a2282f2c9bf7f2c73a5a7a5H Hartley Sweeten	return comedi_pci_auto_config(dev, &apci3xxx_driver);
75220a22b706b8ee37d1a2282f2c9bf7f2c73a5a7a5H Hartley Sweeten}
75320a22b706b8ee37d1a2282f2c9bf7f2c73a5a7a5H Hartley Sweeten
75420a22b706b8ee37d1a2282f2c9bf7f2c73a5a7a5H Hartley Sweetenstatic DEFINE_PCI_DEVICE_TABLE(apci3xxx_pci_table) = {
755317285d71acccbda2fbab7e53d6b33c52a151a32H Hartley Sweeten	{ PCI_DEVICE(PCI_VENDOR_ID_ADDIDATA, 0x3010) },
756317285d71acccbda2fbab7e53d6b33c52a151a32H Hartley Sweeten	{ PCI_DEVICE(PCI_VENDOR_ID_ADDIDATA, 0x300f) },
757317285d71acccbda2fbab7e53d6b33c52a151a32H Hartley Sweeten	{ PCI_DEVICE(PCI_VENDOR_ID_ADDIDATA, 0x300e) },
758317285d71acccbda2fbab7e53d6b33c52a151a32H Hartley Sweeten	{ PCI_DEVICE(PCI_VENDOR_ID_ADDIDATA, 0x3013) },
759317285d71acccbda2fbab7e53d6b33c52a151a32H Hartley Sweeten	{ PCI_DEVICE(PCI_VENDOR_ID_ADDIDATA, 0x3014) },
760317285d71acccbda2fbab7e53d6b33c52a151a32H Hartley Sweeten	{ PCI_DEVICE(PCI_VENDOR_ID_ADDIDATA, 0x3015) },
761317285d71acccbda2fbab7e53d6b33c52a151a32H Hartley Sweeten	{ PCI_DEVICE(PCI_VENDOR_ID_ADDIDATA, 0x3016) },
762317285d71acccbda2fbab7e53d6b33c52a151a32H Hartley Sweeten	{ PCI_DEVICE(PCI_VENDOR_ID_ADDIDATA, 0x3017) },
763317285d71acccbda2fbab7e53d6b33c52a151a32H Hartley Sweeten	{ PCI_DEVICE(PCI_VENDOR_ID_ADDIDATA, 0x3018) },
764317285d71acccbda2fbab7e53d6b33c52a151a32H Hartley Sweeten	{ PCI_DEVICE(PCI_VENDOR_ID_ADDIDATA, 0x3019) },
765317285d71acccbda2fbab7e53d6b33c52a151a32H Hartley Sweeten	{ PCI_DEVICE(PCI_VENDOR_ID_ADDIDATA, 0x301a) },
766317285d71acccbda2fbab7e53d6b33c52a151a32H Hartley Sweeten	{ PCI_DEVICE(PCI_VENDOR_ID_ADDIDATA, 0x301b) },
767317285d71acccbda2fbab7e53d6b33c52a151a32H Hartley Sweeten	{ PCI_DEVICE(PCI_VENDOR_ID_ADDIDATA, 0x301c) },
768317285d71acccbda2fbab7e53d6b33c52a151a32H Hartley Sweeten	{ PCI_DEVICE(PCI_VENDOR_ID_ADDIDATA, 0x301d) },
769317285d71acccbda2fbab7e53d6b33c52a151a32H Hartley Sweeten	{ PCI_DEVICE(PCI_VENDOR_ID_ADDIDATA, 0x301e) },
770317285d71acccbda2fbab7e53d6b33c52a151a32H Hartley Sweeten	{ PCI_DEVICE(PCI_VENDOR_ID_ADDIDATA, 0x301f) },
771317285d71acccbda2fbab7e53d6b33c52a151a32H Hartley Sweeten	{ PCI_DEVICE(PCI_VENDOR_ID_ADDIDATA, 0x3020) },
772317285d71acccbda2fbab7e53d6b33c52a151a32H Hartley Sweeten	{ PCI_DEVICE(PCI_VENDOR_ID_ADDIDATA, 0x3021) },
773317285d71acccbda2fbab7e53d6b33c52a151a32H Hartley Sweeten	{ PCI_DEVICE(PCI_VENDOR_ID_ADDIDATA, 0x3022) },
774317285d71acccbda2fbab7e53d6b33c52a151a32H Hartley Sweeten	{ PCI_DEVICE(PCI_VENDOR_ID_ADDIDATA, 0x3023) },
775317285d71acccbda2fbab7e53d6b33c52a151a32H Hartley Sweeten	{ PCI_DEVICE(PCI_VENDOR_ID_ADDIDATA, 0x300B) },
776317285d71acccbda2fbab7e53d6b33c52a151a32H Hartley Sweeten	{ PCI_DEVICE(PCI_VENDOR_ID_ADDIDATA, 0x3002) },
777317285d71acccbda2fbab7e53d6b33c52a151a32H Hartley Sweeten	{ PCI_DEVICE(PCI_VENDOR_ID_ADDIDATA, 0x3003) },
778317285d71acccbda2fbab7e53d6b33c52a151a32H Hartley Sweeten	{ PCI_DEVICE(PCI_VENDOR_ID_ADDIDATA, 0x3004) },
779317285d71acccbda2fbab7e53d6b33c52a151a32H Hartley Sweeten	{ PCI_DEVICE(PCI_VENDOR_ID_ADDIDATA, 0x3024) },
780317285d71acccbda2fbab7e53d6b33c52a151a32H Hartley Sweeten	{ 0 }
781317285d71acccbda2fbab7e53d6b33c52a151a32H Hartley Sweeten};
78220a22b706b8ee37d1a2282f2c9bf7f2c73a5a7a5H Hartley SweetenMODULE_DEVICE_TABLE(pci, apci3xxx_pci_table);
783317285d71acccbda2fbab7e53d6b33c52a151a32H Hartley Sweeten
78420a22b706b8ee37d1a2282f2c9bf7f2c73a5a7a5H Hartley Sweetenstatic struct pci_driver apci3xxx_pci_driver = {
78520a22b706b8ee37d1a2282f2c9bf7f2c73a5a7a5H Hartley Sweeten	.name		= "addi_apci_3xxx",
78620a22b706b8ee37d1a2282f2c9bf7f2c73a5a7a5H Hartley Sweeten	.id_table	= apci3xxx_pci_table,
78720a22b706b8ee37d1a2282f2c9bf7f2c73a5a7a5H Hartley Sweeten	.probe		= apci3xxx_pci_probe,
7889901a4d75d007686e8f6473189cafc4b216b7449Peter Huewe	.remove		= comedi_pci_auto_unconfig,
78920a22b706b8ee37d1a2282f2c9bf7f2c73a5a7a5H Hartley Sweeten};
79020a22b706b8ee37d1a2282f2c9bf7f2c73a5a7a5H Hartley Sweetenmodule_comedi_pci_driver(apci3xxx_driver, apci3xxx_pci_driver);
79190f703d30dd3e0c16ff80f35e34e511385a05ad5Arun Thomas
79290f703d30dd3e0c16ff80f35e34e511385a05ad5Arun ThomasMODULE_AUTHOR("Comedi http://www.comedi.org");
79390f703d30dd3e0c16ff80f35e34e511385a05ad5Arun ThomasMODULE_DESCRIPTION("Comedi low-level driver");
79490f703d30dd3e0c16ff80f35e34e511385a05ad5Arun ThomasMODULE_LICENSE("GPL");
795