OSDN Git Service

staging: comedi: Convert struct addi_board initialization to C99 format
authorH Hartley Sweeten <hartleys@visionengravers.com>
Thu, 17 May 2012 00:51:56 +0000 (17:51 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 17 May 2012 02:18:15 +0000 (19:18 -0700)
Convert the struct addi_board initialization to C99 format and remove
all the NULL or 0 initializers. This makes maintaining and editing the
code simpler and less error prone.

Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com>
Cc: Ian Abbott <abbotti@mev.co.uk>
Cc: Mori Hess <fmhess@users.sourceforge.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/comedi/drivers/addi-data/addi_common.c

index 49d11ef..4c18304 100644 (file)
@@ -224,2307 +224,1204 @@ MODULE_DEVICE_TABLE(pci, addi_apci_tbl);
 
 static const struct addi_board boardtypes[] = {
 #ifdef CONFIG_APCI_3120
-       {"apci3120",
-                       APCI3120_BOARD_VENDOR_ID,
-                       0x818D,
-                       AMCC_OP_REG_SIZE,
-                       APCI3120_ADDRESS_RANGE,
-                       8,
-                       0,
-                       ADDIDATA_NO_EEPROM,
-                       NULL,
-                       16,
-                       8,
-                       16,
-                       8,
-                       0xffff,
-                       0x3fff,
-                       &range_apci3120_ai,
-                       &range_apci3120_ao,
-                       4,
-                       4,
-                       0x0f,
-                       0,
-                       NULL,
-                       1,
-                       1,
-                       1,
-                       10000,
-                       100000,
-                       v_APCI3120_Interrupt,
-                       i_APCI3120_Reset,
-                       i_APCI3120_InsnConfigAnalogInput,
-                       i_APCI3120_InsnReadAnalogInput,
-                       NULL,
-                       NULL,
-                       i_APCI3120_CommandTestAnalogInput,
-                       i_APCI3120_CommandAnalogInput,
-                       i_APCI3120_StopCyclicAcquisition,
-                       NULL,
-                       i_APCI3120_InsnWriteAnalogOutput,
-                       NULL,
-                       NULL,
-                       i_APCI3120_InsnReadDigitalInput,
-                       NULL,
-                       i_APCI3120_InsnBitsDigitalInput,
-                       i_APCI3120_InsnConfigDigitalOutput,
-                       i_APCI3120_InsnWriteDigitalOutput,
-                       i_APCI3120_InsnBitsDigitalOutput,
-                       NULL,
-                       i_APCI3120_InsnConfigTimer,
-                       i_APCI3120_InsnWriteTimer,
-                       i_APCI3120_InsnReadTimer,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-               NULL},
+       {
+               .pc_DriverName          = "apci3120",
+               .i_VendorId             = APCI3120_BOARD_VENDOR_ID,
+               .i_DeviceId             = 0x818D,
+               .i_IorangeBase0         = AMCC_OP_REG_SIZE,
+               .i_IorangeBase1         = APCI3120_ADDRESS_RANGE,
+               .i_IorangeBase2         = 8,
+               .i_PCIEeprom            = ADDIDATA_NO_EEPROM,
+               .i_NbrAiChannel         = 16,
+               .i_NbrAiChannelDiff     = 8,
+               .i_AiChannelList        = 16,
+               .i_NbrAoChannel         = 8,
+               .i_AiMaxdata            = 0xffff,
+               .i_AoMaxdata            = 0x3fff,
+               .pr_AiRangelist         = &range_apci3120_ai,
+               .pr_AoRangelist         = &range_apci3120_ao,
+               .i_NbrDiChannel         = 4,
+               .i_NbrDoChannel         = 4,
+               .i_DoMaxdata            = 0x0f,
+               .i_Dma                  = 1,
+               .i_Timer                = 1,
+               .b_AvailableConvertUnit = 1,
+               .ui_MinAcquisitiontimeNs = 10000,
+               .ui_MinDelaytimeNs      = 100000,
+               .interrupt              = v_APCI3120_Interrupt,
+               .reset                  = i_APCI3120_Reset,
+               .ai_config              = i_APCI3120_InsnConfigAnalogInput,
+               .ai_read                = i_APCI3120_InsnReadAnalogInput,
+               .ai_cmdtest             = i_APCI3120_CommandTestAnalogInput,
+               .ai_cmd                 = i_APCI3120_CommandAnalogInput,
+               .ai_cancel              = i_APCI3120_StopCyclicAcquisition,
+               .ao_write               = i_APCI3120_InsnWriteAnalogOutput,
+               .di_read                = i_APCI3120_InsnReadDigitalInput,
+               .di_bits                = i_APCI3120_InsnBitsDigitalInput,
+               .do_config              = i_APCI3120_InsnConfigDigitalOutput,
+               .do_write               = i_APCI3120_InsnWriteDigitalOutput,
+               .do_bits                = i_APCI3120_InsnBitsDigitalOutput,
+               .timer_config           = i_APCI3120_InsnConfigTimer,
+               .timer_write            = i_APCI3120_InsnWriteTimer,
+               .timer_read             = i_APCI3120_InsnReadTimer,
+       },
 #endif
 #ifdef CONFIG_APCI_1032
-       {"apci1032",
-                       APCI1032_BOARD_VENDOR_ID,
-                       0x1003,
-                       4,
-                       APCI1032_ADDRESS_RANGE,
-                       0,
-                       0,
-                       ADDIDATA_EEPROM,
-                       ADDIDATA_93C76,
-                       0,
-                       0,
-                       0,
-                       0,
-                       0,
-                       0,
-                       NULL,
-                       NULL,
-                       32,
-                       0,
-                       0,
-                       0,
-                       NULL,
-                       0,
-                       0,
-                       0,
-                       0,
-                       0,
-                       v_APCI1032_Interrupt,
-                       i_APCI1032_Reset,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       i_APCI1032_ConfigDigitalInput,
-                       i_APCI1032_Read1DigitalInput,
-                       NULL,
-                       i_APCI1032_ReadMoreDigitalInput,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-               NULL},
+       {
+               .pc_DriverName          = "apci1032",
+               .i_VendorId             = APCI1032_BOARD_VENDOR_ID,
+               .i_DeviceId             = 0x1003,
+               .i_IorangeBase0         = 4,
+               .i_IorangeBase1         = APCI1032_ADDRESS_RANGE,
+               .i_PCIEeprom            = ADDIDATA_EEPROM,
+               .pc_EepromChip          = ADDIDATA_93C76,
+               .i_NbrDiChannel         = 32,
+               .interrupt              = v_APCI1032_Interrupt,
+               .reset                  = i_APCI1032_Reset,
+               .di_config              = i_APCI1032_ConfigDigitalInput,
+               .di_read                = i_APCI1032_Read1DigitalInput,
+               .di_bits                = i_APCI1032_ReadMoreDigitalInput,
+       },
 #endif
 #ifdef CONFIG_APCI_1516
-       {"apci1516",
-                       APCI1516_BOARD_VENDOR_ID,
-                       0x1001,
-                       128,
-                       APCI1516_ADDRESS_RANGE,
-                       32,
-                       0,
-                       ADDIDATA_EEPROM,
-                       ADDIDATA_S5920,
-                       0,
-                       0,
-                       0,
-                       0,
-                       0,
-                       0,
-                       NULL,
-                       NULL,
-                       8,
-                       8,
-                       0,
-                       0,
-                       NULL,
-                       0,
-                       1,
-                       0,
-                       0,
-                       0,
-                       NULL,
-                       i_APCI1516_Reset,
-                       NULL, NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       i_APCI1516_Read1DigitalInput,
-                       NULL,
-                       i_APCI1516_ReadMoreDigitalInput,
-                       i_APCI1516_ConfigDigitalOutput,
-                       i_APCI1516_WriteDigitalOutput,
-                       i_APCI1516_ReadDigitalOutput,
-                       NULL,
-                       i_APCI1516_ConfigWatchdog,
-                       i_APCI1516_StartStopWriteWatchdog,
-                       i_APCI1516_ReadWatchdog,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-               NULL},
+       {
+               .pc_DriverName          = "apci1516",
+               .i_VendorId             = APCI1516_BOARD_VENDOR_ID,
+               .i_DeviceId             = 0x1001,
+               .i_IorangeBase0         = 128,
+               .i_IorangeBase1         = APCI1516_ADDRESS_RANGE,
+               .i_IorangeBase2         = 32,
+               .i_PCIEeprom            = ADDIDATA_EEPROM,
+               .pc_EepromChip          = ADDIDATA_S5920,
+               .i_NbrDiChannel         = 8,
+               .i_NbrDoChannel         = 8,
+               .i_Timer                = 1,
+               .reset                  = i_APCI1516_Reset,
+               .di_read                = i_APCI1516_Read1DigitalInput,
+               .di_bits                = i_APCI1516_ReadMoreDigitalInput,
+               .do_config              = i_APCI1516_ConfigDigitalOutput,
+               .do_write               = i_APCI1516_WriteDigitalOutput,
+               .do_bits                = i_APCI1516_ReadDigitalOutput,
+               .timer_config           = i_APCI1516_ConfigWatchdog,
+               .timer_write            = i_APCI1516_StartStopWriteWatchdog,
+               .timer_read             = i_APCI1516_ReadWatchdog,
+       },
 #endif
 #ifdef CONFIG_APCI_2016
-       {"apci2016",
-                       APCI2016_BOARD_VENDOR_ID,
-                       0x1002,
-                       128,
-                       APCI2016_ADDRESS_RANGE,
-                       32,
-                       0,
-                       ADDIDATA_EEPROM,
-                       ADDIDATA_S5920,
-                       0,
-                       0,
-                       0,
-                       0,
-                       0,
-                       0,
-                       NULL,
-                       NULL,
-                       0,
-                       16,
-                       0,
-                       0,
-                       NULL,
-                       0,
-                       1,
-                       0,
-                       0,
-                       0,
-                       NULL,
-                       i_APCI2016_Reset,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       i_APCI2016_ConfigDigitalOutput,
-                       i_APCI2016_WriteDigitalOutput,
-                       i_APCI2016_BitsDigitalOutput,
-                       NULL,
-                       i_APCI2016_ConfigWatchdog,
-                       i_APCI2016_StartStopWriteWatchdog,
-                       i_APCI2016_ReadWatchdog,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-               NULL},
+       {
+               .pc_DriverName          = "apci2016",
+               .i_VendorId             = APCI2016_BOARD_VENDOR_ID,
+               .i_DeviceId             = 0x1002,
+               .i_IorangeBase0         = 128,
+               .i_IorangeBase1         = APCI2016_ADDRESS_RANGE,
+               .i_IorangeBase2         = 32,
+               .i_PCIEeprom            = ADDIDATA_EEPROM,
+               .pc_EepromChip          = ADDIDATA_S5920,
+               .i_NbrDoChannel         = 16,
+               .i_Timer                = 1,
+               .reset                  = i_APCI2016_Reset,
+               .do_config              = i_APCI2016_ConfigDigitalOutput,
+               .do_write               = i_APCI2016_WriteDigitalOutput,
+               .do_bits                = i_APCI2016_BitsDigitalOutput,
+               .timer_config           = i_APCI2016_ConfigWatchdog,
+               .timer_write            = i_APCI2016_StartStopWriteWatchdog,
+               .timer_read             = i_APCI2016_ReadWatchdog,
+       },
 #endif
 #ifdef CONFIG_APCI_2032
-       {"apci2032",
-                       APCI2032_BOARD_VENDOR_ID,
-                       0x1004,
-                       4,
-                       APCI2032_ADDRESS_RANGE,
-                       0,
-                       0,
-                       ADDIDATA_EEPROM,
-                       ADDIDATA_93C76,
-                       0,
-                       0,
-                       0,
-                       0,
-                       0,
-                       0,
-                       NULL,
-                       NULL,
-                       0,
-                       32,
-                       0xffffffff,
-                       0,
-                       NULL,
-                       0,
-                       1,
-                       0,
-                       0,
-                       0,
-                       v_APCI2032_Interrupt,
-                       i_APCI2032_Reset,
-                       NULL, NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       i_APCI2032_ConfigDigitalOutput,
-                       i_APCI2032_WriteDigitalOutput,
-                       i_APCI2032_ReadDigitalOutput,
-                       i_APCI2032_ReadInterruptStatus,
-                       i_APCI2032_ConfigWatchdog,
-                       i_APCI2032_StartStopWriteWatchdog,
-                       i_APCI2032_ReadWatchdog,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-               NULL},
+       {
+               .pc_DriverName          = "apci2032",
+               .i_VendorId             = APCI2032_BOARD_VENDOR_ID,
+               .i_DeviceId             = 0x1004,
+               .i_IorangeBase0         = 4,
+               .i_IorangeBase1         = APCI2032_ADDRESS_RANGE,
+               .i_PCIEeprom            = ADDIDATA_EEPROM,
+               .pc_EepromChip          = ADDIDATA_93C76,
+               .i_NbrDoChannel         = 32,
+               .i_DoMaxdata            = 0xffffffff,
+               .i_Timer                = 1,
+               .interrupt              = v_APCI2032_Interrupt,
+               .reset                  = i_APCI2032_Reset,
+               .do_config              = i_APCI2032_ConfigDigitalOutput,
+               .do_write               = i_APCI2032_WriteDigitalOutput,
+               .do_bits                = i_APCI2032_ReadDigitalOutput,
+               .do_read                = i_APCI2032_ReadInterruptStatus,
+               .timer_config           = i_APCI2032_ConfigWatchdog,
+               .timer_write            = i_APCI2032_StartStopWriteWatchdog,
+               .timer_read             = i_APCI2032_ReadWatchdog,
+       },
 #endif
 #ifdef CONFIG_APCI_2200
-       {"apci2200",
-                       APCI2200_BOARD_VENDOR_ID,
-                       0x1005,
-                       4,
-                       APCI2200_ADDRESS_RANGE,
-                       0,
-                       0,
-                       ADDIDATA_EEPROM,
-                       ADDIDATA_93C76,
-                       0,
-                       0,
-                       0,
-                       0,
-                       0,
-                       0,
-                       NULL,
-                       NULL,
-                       8,
-                       16,
-                       0,
-                       0,
-                       NULL,
-                       0,
-                       1,
-                       0,
-                       0,
-                       0,
-                       NULL,
-                       i_APCI2200_Reset,
-                       NULL, NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       i_APCI2200_Read1DigitalInput,
-                       NULL,
-                       i_APCI2200_ReadMoreDigitalInput,
-                       i_APCI2200_ConfigDigitalOutput,
-                       i_APCI2200_WriteDigitalOutput,
-                       i_APCI2200_ReadDigitalOutput,
-                       NULL,
-                       i_APCI2200_ConfigWatchdog,
-                       i_APCI2200_StartStopWriteWatchdog,
-                       i_APCI2200_ReadWatchdog,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-               NULL},
+       {
+               .pc_DriverName          = "apci2200",
+               .i_VendorId             = APCI2200_BOARD_VENDOR_ID,
+               .i_DeviceId             = 0x1005,
+               .i_IorangeBase0         = 4,
+               .i_IorangeBase1         = APCI2200_ADDRESS_RANGE,
+               .i_PCIEeprom            = ADDIDATA_EEPROM,
+               .pc_EepromChip          = ADDIDATA_93C76,
+               .i_NbrDiChannel         = 8,
+               .i_NbrDoChannel         = 16,
+               .i_Timer                = 1,
+               .reset                  = i_APCI2200_Reset,
+               .di_read                = i_APCI2200_Read1DigitalInput,
+               .di_bits                = i_APCI2200_ReadMoreDigitalInput,
+               .do_config              = i_APCI2200_ConfigDigitalOutput,
+               .do_write               = i_APCI2200_WriteDigitalOutput,
+               .do_bits                = i_APCI2200_ReadDigitalOutput,
+               .timer_config           = i_APCI2200_ConfigWatchdog,
+               .timer_write            = i_APCI2200_StartStopWriteWatchdog,
+               .timer_read             = i_APCI2200_ReadWatchdog,
+       },
 #endif
 #ifdef CONFIG_APCI_1564
-       {"apci1564",
-                       APCI1564_BOARD_VENDOR_ID,
-                       0x1006,
-                       128,
-                       APCI1564_ADDRESS_RANGE,
-                       0,
-                       0,
-                       ADDIDATA_EEPROM,
-                       ADDIDATA_93C76,
-                       0,
-                       0,
-                       0,
-                       0,
-                       0,
-                       0,
-                       NULL,
-                       NULL,
-                       32,
-                       32,
-                       0xffffffff,
-                       0,
-                       NULL,
-                       0,
-                       1,
-                       0,
-                       0,
-                       0,
-                       v_APCI1564_Interrupt,
-                       i_APCI1564_Reset,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       i_APCI1564_ConfigDigitalInput,
-                       i_APCI1564_Read1DigitalInput,
-                       NULL,
-                       i_APCI1564_ReadMoreDigitalInput,
-                       i_APCI1564_ConfigDigitalOutput,
-                       i_APCI1564_WriteDigitalOutput,
-                       i_APCI1564_ReadDigitalOutput,
-                       i_APCI1564_ReadInterruptStatus,
-                       i_APCI1564_ConfigTimerCounterWatchdog,
-                       i_APCI1564_StartStopWriteTimerCounterWatchdog,
-                       i_APCI1564_ReadTimerCounterWatchdog,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-               NULL},
+       {
+               .pc_DriverName          = "apci1564",
+               .i_VendorId             = APCI1564_BOARD_VENDOR_ID,
+               .i_DeviceId             = 0x1006,
+               .i_IorangeBase0         = 128,
+               .i_IorangeBase1         = APCI1564_ADDRESS_RANGE,
+               .i_PCIEeprom            = ADDIDATA_EEPROM,
+               .pc_EepromChip          = ADDIDATA_93C76,
+               .i_NbrDiChannel         = 32,
+               .i_NbrDoChannel         = 32,
+               .i_DoMaxdata            = 0xffffffff,
+               .i_Timer                = 1,
+               .interrupt              = v_APCI1564_Interrupt,
+               .reset                  = i_APCI1564_Reset,
+               .di_config              = i_APCI1564_ConfigDigitalInput,
+               .di_read                = i_APCI1564_Read1DigitalInput,
+               .di_bits                = i_APCI1564_ReadMoreDigitalInput,
+               .do_config              = i_APCI1564_ConfigDigitalOutput,
+               .do_write               = i_APCI1564_WriteDigitalOutput,
+               .do_bits                = i_APCI1564_ReadDigitalOutput,
+               .do_read                = i_APCI1564_ReadInterruptStatus,
+               .timer_config           = i_APCI1564_ConfigTimerCounterWatchdog,
+               .timer_write            = i_APCI1564_StartStopWriteTimerCounterWatchdog,
+               .timer_read             = i_APCI1564_ReadTimerCounterWatchdog,
+       },
 #endif
 #ifdef CONFIG_APCI_1500
-       {"apci1500",
-                       APCI1500_BOARD_VENDOR_ID,
-                       0x80fc,
-                       128,
-                       APCI1500_ADDRESS_RANGE,
-                       4,
-                       0,
-                       ADDIDATA_NO_EEPROM,
-                       NULL,
-                       0,
-                       0,
-                       0,
-                       0,
-                       0,
-                       0,
-                       NULL,
-                       NULL,
-                       16,
-                       16,
-                       0xffff,
-                       0,
-                       NULL,
-                       0,
-                       1,
-                       0,
-                       0,
-                       0,
-                       v_APCI1500_Interrupt,
-                       i_APCI1500_Reset,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       i_APCI1500_ConfigDigitalInputEvent,
-                       i_APCI1500_Initialisation,
-                       i_APCI1500_StartStopInputEvent,
-                       i_APCI1500_ReadMoreDigitalInput,
-                       i_APCI1500_ConfigDigitalOutputErrorInterrupt,
-                       i_APCI1500_WriteDigitalOutput,
-                       i_APCI1500_ConfigureInterrupt,
-                       NULL,
-                       i_APCI1500_ConfigCounterTimerWatchdog,
-                       i_APCI1500_StartStopTriggerTimerCounterWatchdog,
-                       i_APCI1500_ReadInterruptMask,
-                       i_APCI1500_ReadCounterTimerWatchdog,
-                       NULL,
-                       NULL,
-                       NULL,
-               NULL},
+       {
+               .pc_DriverName          = "apci1500",
+               .i_VendorId             = APCI1500_BOARD_VENDOR_ID,
+               .i_DeviceId             = 0x80fc,
+               .i_IorangeBase0         = 128,
+               .i_IorangeBase1         = APCI1500_ADDRESS_RANGE,
+               .i_IorangeBase2         = 4,
+               .i_PCIEeprom            = ADDIDATA_NO_EEPROM,
+               .i_NbrDiChannel         = 16,
+               .i_NbrDoChannel         = 16,
+               .i_DoMaxdata            = 0xffff,
+               .i_Timer                = 1,
+               .interrupt              = v_APCI1500_Interrupt,
+               .reset                  = i_APCI1500_Reset,
+               .di_config              = i_APCI1500_ConfigDigitalInputEvent,
+               .di_read                = i_APCI1500_Initialisation,
+               .di_write               = i_APCI1500_StartStopInputEvent,
+               .di_bits                = i_APCI1500_ReadMoreDigitalInput,
+               .do_config              = i_APCI1500_ConfigDigitalOutputErrorInterrupt,
+               .do_write               = i_APCI1500_WriteDigitalOutput,
+               .do_bits                = i_APCI1500_ConfigureInterrupt,
+               .timer_config           = i_APCI1500_ConfigCounterTimerWatchdog,
+               .timer_write            = i_APCI1500_StartStopTriggerTimerCounterWatchdog,
+               .timer_read             = i_APCI1500_ReadInterruptMask,
+               .timer_bits             = i_APCI1500_ReadCounterTimerWatchdog,
+       },
 #endif
 #ifdef CONFIG_APCI_3001
-       {"apci3001",
-                       APCI3120_BOARD_VENDOR_ID,
-                       0x828D,
-                       AMCC_OP_REG_SIZE,
-                       APCI3120_ADDRESS_RANGE,
-                       8,
-                       0,
-                       ADDIDATA_NO_EEPROM,
-                       NULL,
-                       16,
-                       8,
-                       16,
-                       0,
-                       0xfff,
-                       0,
-                       &range_apci3120_ai,
-                       NULL,
-                       4,
-                       4,
-                       0x0f,
-                       0,
-                       NULL,
-                       1,
-                       1,
-                       1,
-                       10000,
-                       100000,
-                       v_APCI3120_Interrupt,
-                       i_APCI3120_Reset,
-                       i_APCI3120_InsnConfigAnalogInput,
-                       i_APCI3120_InsnReadAnalogInput,
-                       NULL,
-                       NULL,
-                       i_APCI3120_CommandTestAnalogInput,
-                       i_APCI3120_CommandAnalogInput,
-                       i_APCI3120_StopCyclicAcquisition,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       i_APCI3120_InsnReadDigitalInput,
-                       NULL,
-                       i_APCI3120_InsnBitsDigitalInput,
-                       i_APCI3120_InsnConfigDigitalOutput,
-                       i_APCI3120_InsnWriteDigitalOutput,
-                       i_APCI3120_InsnBitsDigitalOutput,
-                       NULL,
-                       i_APCI3120_InsnConfigTimer,
-                       i_APCI3120_InsnWriteTimer,
-                       i_APCI3120_InsnReadTimer,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-               NULL},
+       {
+               .pc_DriverName          = "apci3001",
+               .i_VendorId             = APCI3120_BOARD_VENDOR_ID,
+               .i_DeviceId             = 0x828D,
+               .i_IorangeBase0         = AMCC_OP_REG_SIZE,
+               .i_IorangeBase1         = APCI3120_ADDRESS_RANGE,
+               .i_IorangeBase2         = 8,
+               .i_PCIEeprom            = ADDIDATA_NO_EEPROM,
+               .i_NbrAiChannel         = 16,
+               .i_NbrAiChannelDiff     = 8,
+               .i_AiChannelList        = 16,
+               .i_AiMaxdata            = 0xfff,
+               .pr_AiRangelist         = &range_apci3120_ai,
+               .i_NbrDiChannel         = 4,
+               .i_NbrDoChannel         = 4,
+               .i_DoMaxdata            = 0x0f,
+               .i_Dma                  = 1,
+               .i_Timer                = 1,
+               .b_AvailableConvertUnit = 1,
+               .ui_MinAcquisitiontimeNs = 10000,
+               .ui_MinDelaytimeNs      = 100000,
+               .interrupt              = v_APCI3120_Interrupt,
+               .reset                  = i_APCI3120_Reset,
+               .ai_config              = i_APCI3120_InsnConfigAnalogInput,
+               .ai_read                = i_APCI3120_InsnReadAnalogInput,
+               .ai_cmdtest             = i_APCI3120_CommandTestAnalogInput,
+               .ai_cmd                 = i_APCI3120_CommandAnalogInput,
+               .ai_cancel              = i_APCI3120_StopCyclicAcquisition,
+               .di_read                = i_APCI3120_InsnReadDigitalInput,
+               .di_bits                = i_APCI3120_InsnBitsDigitalInput,
+               .do_config              = i_APCI3120_InsnConfigDigitalOutput,
+               .do_write               = i_APCI3120_InsnWriteDigitalOutput,
+               .do_bits                = i_APCI3120_InsnBitsDigitalOutput,
+               .timer_config           = i_APCI3120_InsnConfigTimer,
+               .timer_write            = i_APCI3120_InsnWriteTimer,
+               .timer_read             = i_APCI3120_InsnReadTimer,
+       },
 #endif
 #ifdef CONFIG_APCI_3501
-       {"apci3501",
-                       APCI3501_BOARD_VENDOR_ID,
-                       0x3001,
-                       64,
-                       APCI3501_ADDRESS_RANGE,
-                       0,
-                       0,
-                       ADDIDATA_EEPROM,
-                       ADDIDATA_S5933,
-                       0,
-                       0,
-                       0,
-                       8,
-                       0,
-                       16383,
-                       NULL,
-                       &range_apci3501_ao,
-                       2,
-                       2,
-                       0x3,
-                       0,
-                       NULL,
-                       0,
-                       1,
-                       0,
-                       0,
-                       0,
-                       v_APCI3501_Interrupt,
-                       i_APCI3501_Reset,
-                       NULL, NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       i_APCI3501_ConfigAnalogOutput,
-                       i_APCI3501_WriteAnalogOutput,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       i_APCI3501_ReadDigitalInput,
-                       i_APCI3501_ConfigDigitalOutput,
-                       i_APCI3501_WriteDigitalOutput,
-                       i_APCI3501_ReadDigitalOutput,
-                       NULL,
-                       i_APCI3501_ConfigTimerCounterWatchdog,
-                       i_APCI3501_StartStopWriteTimerCounterWatchdog,
-                       i_APCI3501_ReadTimerCounterWatchdog,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-               NULL},
+       {
+               .pc_DriverName          = "apci3501",
+               .i_VendorId             = APCI3501_BOARD_VENDOR_ID,
+               .i_DeviceId             = 0x3001,
+               .i_IorangeBase0         = 64,
+               .i_IorangeBase1         = APCI3501_ADDRESS_RANGE,
+               .i_PCIEeprom            = ADDIDATA_EEPROM,
+               .pc_EepromChip          = ADDIDATA_S5933,
+               .i_AoMaxdata            = 16383,
+               .pr_AoRangelist         = &range_apci3501_ao,
+               .i_NbrDiChannel         = 2,
+               .i_NbrDoChannel         = 2,
+               .i_DoMaxdata            = 0x3,
+               .i_Timer                = 1,
+               .interrupt              = v_APCI3501_Interrupt,
+               .reset                  = i_APCI3501_Reset,
+               .ao_config              = i_APCI3501_ConfigAnalogOutput,
+               .ao_write               = i_APCI3501_WriteAnalogOutput,
+               .di_bits                = i_APCI3501_ReadDigitalInput,
+               .do_config              = i_APCI3501_ConfigDigitalOutput,
+               .do_write               = i_APCI3501_WriteDigitalOutput,
+               .do_bits                = i_APCI3501_ReadDigitalOutput,
+               .timer_config           = i_APCI3501_ConfigTimerCounterWatchdog,
+               .timer_write            = i_APCI3501_StartStopWriteTimerCounterWatchdog,
+               .timer_read             = i_APCI3501_ReadTimerCounterWatchdog,
+       },
 #endif
 #ifdef CONFIG_APCI_035
-       {"apci035",
-                       APCI035_BOARD_VENDOR_ID,
-                       0x0300,
-                       127,
-                       APCI035_ADDRESS_RANGE,
-                       0,
-                       0,
-                       1,
-                       ADDIDATA_S5920,
-                       16,
-                       8,
-                       16,
-                       0,
-                       0xff,
-                       0,
-                       &range_apci035_ai,
-                       NULL,
-                       0,
-                       0,
-                       0,
-                       0,
-                       NULL,
-                       0,
-                       1,
-                       0,
-                       10000,
-                       100000,
-                       v_APCI035_Interrupt,
-                       i_APCI035_Reset,
-                       i_APCI035_ConfigAnalogInput,
-                       i_APCI035_ReadAnalogInput,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       i_APCI035_ConfigTimerWatchdog,
-                       i_APCI035_StartStopWriteTimerWatchdog,
-                       i_APCI035_ReadTimerWatchdog,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-               NULL},
+       {
+               .pc_DriverName          = "apci035",
+               .i_VendorId             = APCI035_BOARD_VENDOR_ID,
+               .i_DeviceId             = 0x0300,
+               .i_IorangeBase0         = 127,
+               .i_IorangeBase1         = APCI035_ADDRESS_RANGE,
+               .i_PCIEeprom            = 1,
+               .pc_EepromChip          = ADDIDATA_S5920,
+               .i_NbrAiChannel         = 16,
+               .i_NbrAiChannelDiff     = 8,
+               .i_AiChannelList        = 16,
+               .i_AiMaxdata            = 0xff,
+               .pr_AiRangelist         = &range_apci035_ai,
+               .i_Timer                = 1,
+               .ui_MinAcquisitiontimeNs = 10000,
+               .ui_MinDelaytimeNs      = 100000,
+               .interrupt              = v_APCI035_Interrupt,
+               .reset                  = i_APCI035_Reset,
+               .ai_config              = i_APCI035_ConfigAnalogInput,
+               .ai_read                = i_APCI035_ReadAnalogInput,
+               .timer_config           = i_APCI035_ConfigTimerWatchdog,
+               .timer_write            = i_APCI035_StartStopWriteTimerWatchdog,
+               .timer_read             = i_APCI035_ReadTimerWatchdog,
+       },
 #endif
 #ifdef CONFIG_APCI_3200
-       {"apci3200",
-                       APCI3200_BOARD_VENDOR_ID,
-                       0x3000,
-                       128,
-                       256,
-                       4,
-                       4,
-                       ADDIDATA_EEPROM,
-                       ADDIDATA_S5920,
-                       16,
-                       8,
-                       16,
-                       0,
-                       0x3ffff,
-                       0,
-                       &range_apci3200_ai,
-                       NULL,
-                       4,
-                       4,
-                       0,
-                       0,
-                       NULL,
-                       0,
-                       0,
-                       0,
-                       10000,
-                       100000,
-                       v_APCI3200_Interrupt,
-                       i_APCI3200_Reset,
-                       i_APCI3200_ConfigAnalogInput,
-                       i_APCI3200_ReadAnalogInput,
-                       i_APCI3200_InsnWriteReleaseAnalogInput,
-                       i_APCI3200_InsnBits_AnalogInput_Test,
-                       i_APCI3200_CommandTestAnalogInput,
-                       i_APCI3200_CommandAnalogInput,
-                       i_APCI3200_StopCyclicAcquisition,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       i_APCI3200_ReadDigitalInput,
-                       i_APCI3200_ConfigDigitalOutput,
-                       i_APCI3200_WriteDigitalOutput,
-                       i_APCI3200_ReadDigitalOutput,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-               NULL},
+       {
+               .pc_DriverName          = "apci3200",
+               .i_VendorId             = APCI3200_BOARD_VENDOR_ID,
+               .i_DeviceId             = 0x3000,
+               .i_IorangeBase0         = 128,
+               .i_IorangeBase1         = 256,
+               .i_IorangeBase2         = 4,
+               .i_IorangeBase3         = 4,
+               .i_PCIEeprom            = ADDIDATA_EEPROM,
+               .pc_EepromChip          = ADDIDATA_S5920,
+               .i_NbrAiChannel         = 16,
+               .i_NbrAiChannelDiff     = 8,
+               .i_AiChannelList        = 16,
+               .i_AiMaxdata            = 0x3ffff,
+               .pr_AiRangelist         = &range_apci3200_ai,
+               .i_NbrDiChannel         = 4,
+               .i_NbrDoChannel         = 4,
+               .ui_MinAcquisitiontimeNs = 10000,
+               .ui_MinDelaytimeNs      = 100000,
+               .interrupt              = v_APCI3200_Interrupt,
+               .reset                  = i_APCI3200_Reset,
+               .ai_config              = i_APCI3200_ConfigAnalogInput,
+               .ai_read                = i_APCI3200_ReadAnalogInput,
+               .ai_write               = i_APCI3200_InsnWriteReleaseAnalogInput,
+               .ai_bits                = i_APCI3200_InsnBits_AnalogInput_Test,
+               .ai_cmdtest             = i_APCI3200_CommandTestAnalogInput,
+               .ai_cmd                 = i_APCI3200_CommandAnalogInput,
+               .ai_cancel              = i_APCI3200_StopCyclicAcquisition,
+               .di_bits                = i_APCI3200_ReadDigitalInput,
+               .do_config              = i_APCI3200_ConfigDigitalOutput,
+               .do_write               = i_APCI3200_WriteDigitalOutput,
+               .do_bits                = i_APCI3200_ReadDigitalOutput,
+       },
 #endif
 #ifdef CONFIG_APCI_3300
        /* Begin JK     .20.10.2004 = APCI-3300 integration */
-       {"apci3300",
-                       APCI3200_BOARD_VENDOR_ID,
-                       0x3007,
-                       128,
-                       256,
-                       4,
-                       4,
-                       ADDIDATA_EEPROM,
-                       ADDIDATA_S5920,
-                       0,
-                       8,
-                       8,
-                       0,
-                       0x3ffff,
-                       0,
-                       &range_apci3300_ai,
-                       NULL,
-                       4,
-                       4,
-                       0,
-                       0,
-                       NULL,
-                       0,
-                       0,
-                       0,
-                       10000,
-                       100000,
-                       v_APCI3200_Interrupt,
-                       i_APCI3200_Reset,
-                       i_APCI3200_ConfigAnalogInput,
-                       i_APCI3200_ReadAnalogInput,
-                       i_APCI3200_InsnWriteReleaseAnalogInput,
-                       i_APCI3200_InsnBits_AnalogInput_Test,
-                       i_APCI3200_CommandTestAnalogInput,
-                       i_APCI3200_CommandAnalogInput,
-                       i_APCI3200_StopCyclicAcquisition,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       i_APCI3200_ReadDigitalInput,
-                       i_APCI3200_ConfigDigitalOutput,
-                       i_APCI3200_WriteDigitalOutput,
-                       i_APCI3200_ReadDigitalOutput,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-               NULL},
+       {
+               .pc_DriverName          = "apci3300",
+               .i_VendorId             = APCI3200_BOARD_VENDOR_ID,
+               .i_DeviceId             = 0x3007,
+               .i_IorangeBase0         = 128,
+               .i_IorangeBase1         = 256,
+               .i_IorangeBase2         = 4,
+               .i_IorangeBase3         = 4,
+               .i_PCIEeprom            = ADDIDATA_EEPROM,
+               .pc_EepromChip          = ADDIDATA_S5920,
+               .i_NbrAiChannelDiff     = 8,
+               .i_AiChannelList        = 8,
+               .i_AiMaxdata            = 0x3ffff,
+               .pr_AiRangelist         = &range_apci3300_ai,
+               .i_NbrDiChannel         = 4,
+               .i_NbrDoChannel         = 4,
+               .ui_MinAcquisitiontimeNs = 10000,
+               .ui_MinDelaytimeNs      = 100000,
+               .interrupt              = v_APCI3200_Interrupt,
+               .reset                  = i_APCI3200_Reset,
+               .ai_config              = i_APCI3200_ConfigAnalogInput,
+               .ai_read                = i_APCI3200_ReadAnalogInput,
+               .ai_write               = i_APCI3200_InsnWriteReleaseAnalogInput,
+               .ai_bits                = i_APCI3200_InsnBits_AnalogInput_Test,
+               .ai_cmdtest             = i_APCI3200_CommandTestAnalogInput,
+               .ai_cmd                 = i_APCI3200_CommandAnalogInput,
+               .ai_cancel              = i_APCI3200_StopCyclicAcquisition,
+               .di_bits                = i_APCI3200_ReadDigitalInput,
+               .do_config              = i_APCI3200_ConfigDigitalOutput,
+               .do_write               = i_APCI3200_WriteDigitalOutput,
+               .do_bits                = i_APCI3200_ReadDigitalOutput,
+       },
 #endif
 #ifdef CONFIG_APCI_1710
-       {"apci1710", APCI1710_BOARD_VENDOR_ID, APCI1710_BOARD_DEVICE_ID,
-                       128,
-                       8,
-                       256,
-                       0,
-                       ADDIDATA_NO_EEPROM,
-                       NULL,
-                       0,
-                       0,
-                       0,
-                       0,
-                       0,
-                       0,
-                       NULL,
-                       NULL,
-                       0,
-                       0,
-                       0,
-                       0,
-                       NULL,
-                       0,
-                       0,
-                       0,
-                       0,
-                       0,
-                       v_APCI1710_Interrupt,
-                       i_APCI1710_Reset,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-               NULL},
+       {
+               .pc_DriverName          = "apci1710",
+               .i_VendorId             = APCI1710_BOARD_VENDOR_ID,
+               .i_DeviceId             = APCI1710_BOARD_DEVICE_ID,
+               .i_IorangeBase0         = 128,
+               .i_IorangeBase1         = 8,
+               .i_IorangeBase2         = 256,
+               .i_PCIEeprom            = ADDIDATA_NO_EEPROM,
+               .interrupt              = v_APCI1710_Interrupt,
+               .reset                  = i_APCI1710_Reset,
+       },
 #endif
 #ifdef CONFIG_APCI_16XX
-       {"apci1648",
-                       PCI_VENDOR_ID_ADDIDATA,
-                       0x1009,
-                       128,
-                       0,
-                       0,
-                       0,
-                       ADDIDATA_NO_EEPROM,
-                       NULL,
-                       0,
-                       0,
-                       0,
-                       0,
-                       0,
-                       0,
-                       NULL,
-                       NULL,
-                       0,
-                       0,
-                       0,
-                       48,
-                       &range_apci16xx_ttl,
-                       0,
-                       0,
-                       0,
-                       0,
-                       0,
-                       NULL,
-                       i_APCI16XX_Reset,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       i_APCI16XX_InsnConfigInitTTLIO,
-                       i_APCI16XX_InsnBitsReadTTLIO,
-                       i_APCI16XX_InsnReadTTLIOAllPortValue,
-               i_APCI16XX_InsnBitsWriteTTLIO},
-
-       {"apci1696",
-                       PCI_VENDOR_ID_ADDIDATA,
-                       0x100A,
-                       128,
-                       0,
-                       0,
-                       0,
-                       ADDIDATA_NO_EEPROM,
-                       NULL,
-                       0,
-                       0,
-                       0,
-                       0,
-                       0,
-                       0,
-                       NULL,
-                       NULL,
-                       0,
-                       0,
-                       0,
-                       96,
-                       &range_apci16xx_ttl,
-                       0,
-                       0,
-                       0,
-                       0,
-                       0,
-                       NULL,
-                       i_APCI16XX_Reset,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       i_APCI16XX_InsnConfigInitTTLIO,
-                       i_APCI16XX_InsnBitsReadTTLIO,
-                       i_APCI16XX_InsnReadTTLIOAllPortValue,
-               i_APCI16XX_InsnBitsWriteTTLIO},
+       {
+               .pc_DriverName          = "apci1648",
+               .i_VendorId             = PCI_VENDOR_ID_ADDIDATA,
+               .i_DeviceId             = 0x1009,
+               .i_IorangeBase0         = 128,
+               .i_PCIEeprom            = ADDIDATA_NO_EEPROM,
+               .i_NbrTTLChannel        = 48,
+               .pr_TTLRangelist        = &range_apci16xx_ttl,
+               .reset                  = i_APCI16XX_Reset,
+               .ttl_config             = i_APCI16XX_InsnConfigInitTTLIO,
+               .ttl_bits               = i_APCI16XX_InsnBitsReadTTLIO,
+               .ttl_read               = i_APCI16XX_InsnReadTTLIOAllPortValue,
+               .ttl_write              = i_APCI16XX_InsnBitsWriteTTLIO,
+       }, {
+               .pc_DriverName          = "apci1696",
+               .i_VendorId             = PCI_VENDOR_ID_ADDIDATA,
+               .i_DeviceId             = 0x100A,
+               .i_IorangeBase0         = 128,
+               .i_PCIEeprom            = ADDIDATA_NO_EEPROM,
+               .i_NbrTTLChannel        = 96,
+               .pr_TTLRangelist        = &range_apci16xx_ttl,
+               .reset                  = i_APCI16XX_Reset,
+               .ttl_config             = i_APCI16XX_InsnConfigInitTTLIO,
+               .ttl_bits               = i_APCI16XX_InsnBitsReadTTLIO,
+               .ttl_read               = i_APCI16XX_InsnReadTTLIOAllPortValue,
+               .ttl_write              = i_APCI16XX_InsnBitsWriteTTLIO,
+       },
 #endif
 #ifdef CONFIG_APCI_3XXX
-       {"apci3000-16",
-                       PCI_VENDOR_ID_ADDIDATA,
-                       0x3010,
-                       256,
-                       256,
-                       256,
-                       256,
-                       ADDIDATA_NO_EEPROM,
-                       ADDIDATA_9054,
-                       16,
-                       8,
-                       16,
-                       0,
-                       4095,
-                       0,
-                       &range_apci3XXX_ai,
-                       NULL,
-                       0,
-                       0,
-                       0,
-                       24,
-                       &range_apci3XXX_ttl,
-                       0,
-                       0,
-                       6,
-                       10000,
-                       0,
-                       v_APCI3XXX_Interrupt,
-                       i_APCI3XXX_Reset,
-                       i_APCI3XXX_InsnConfigAnalogInput,
-                       i_APCI3XXX_InsnReadAnalogInput,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       i_APCI3XXX_InsnConfigInitTTLIO,
-                       i_APCI3XXX_InsnBitsTTLIO,
-                       i_APCI3XXX_InsnReadTTLIO,
-               i_APCI3XXX_InsnWriteTTLIO},
-
-       {"apci3000-8",
-                       PCI_VENDOR_ID_ADDIDATA,
-                       0x300F,
-                       256,
-                       256,
-                       256,
-                       256,
-                       ADDIDATA_NO_EEPROM,
-                       ADDIDATA_9054,
-                       8,
-                       4,
-                       8,
-                       0,
-                       4095,
-                       0,
-                       &range_apci3XXX_ai,
-                       NULL,
-                       0,
-                       0,
-                       0,
-                       24,
-                       &range_apci3XXX_ttl,
-                       0,
-                       0,
-                       6,
-                       10000,
-                       0,
-                       v_APCI3XXX_Interrupt,
-                       i_APCI3XXX_Reset,
-                       i_APCI3XXX_InsnConfigAnalogInput,
-                       i_APCI3XXX_InsnReadAnalogInput,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       i_APCI3XXX_InsnConfigInitTTLIO,
-                       i_APCI3XXX_InsnBitsTTLIO,
-                       i_APCI3XXX_InsnReadTTLIO,
-               i_APCI3XXX_InsnWriteTTLIO},
-
-       {"apci3000-4",
-                       PCI_VENDOR_ID_ADDIDATA,
-                       0x300E,
-                       256,
-                       256,
-                       256,
-                       256,
-                       ADDIDATA_NO_EEPROM,
-                       ADDIDATA_9054,
-                       4,
-                       2,
-                       4,
-                       0,
-                       4095,
-                       0,
-                       &range_apci3XXX_ai,
-                       NULL,
-                       0,
-                       0,
-                       0,
-                       24,
-                       &range_apci3XXX_ttl,
-                       0,
-                       0,
-                       6,
-                       10000,
-                       0,
-                       v_APCI3XXX_Interrupt,
-                       i_APCI3XXX_Reset,
-                       i_APCI3XXX_InsnConfigAnalogInput,
-                       i_APCI3XXX_InsnReadAnalogInput,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       i_APCI3XXX_InsnConfigInitTTLIO,
-                       i_APCI3XXX_InsnBitsTTLIO,
-                       i_APCI3XXX_InsnReadTTLIO,
-               i_APCI3XXX_InsnWriteTTLIO},
-
-       {"apci3006-16",
-                       PCI_VENDOR_ID_ADDIDATA,
-                       0x3013,
-                       256,
-                       256,
-                       256,
-                       256,
-                       ADDIDATA_NO_EEPROM,
-                       ADDIDATA_9054,
-                       16,
-                       8,
-                       16,
-                       0,
-                       65535,
-                       0,
-                       &range_apci3XXX_ai,
-                       NULL,
-                       0,
-                       0,
-                       0,
-                       24,
-                       &range_apci3XXX_ttl,
-                       0,
-                       0,
-                       6,
-                       10000,
-                       0,
-                       v_APCI3XXX_Interrupt,
-                       i_APCI3XXX_Reset,
-                       i_APCI3XXX_InsnConfigAnalogInput,
-                       i_APCI3XXX_InsnReadAnalogInput,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       i_APCI3XXX_InsnConfigInitTTLIO,
-                       i_APCI3XXX_InsnBitsTTLIO,
-                       i_APCI3XXX_InsnReadTTLIO,
-               i_APCI3XXX_InsnWriteTTLIO},
-
-       {"apci3006-8",
-                       PCI_VENDOR_ID_ADDIDATA,
-                       0x3014,
-                       256,
-                       256,
-                       256,
-                       256,
-                       ADDIDATA_NO_EEPROM,
-                       ADDIDATA_9054,
-                       8,
-                       4,
-                       8,
-                       0,
-                       65535,
-                       0,
-                       &range_apci3XXX_ai,
-                       NULL,
-                       0,
-                       0,
-                       0,
-                       24,
-                       &range_apci3XXX_ttl,
-                       0,
-                       0,
-                       6,
-                       10000,
-                       0,
-                       v_APCI3XXX_Interrupt,
-                       i_APCI3XXX_Reset,
-                       i_APCI3XXX_InsnConfigAnalogInput,
-                       i_APCI3XXX_InsnReadAnalogInput,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       i_APCI3XXX_InsnConfigInitTTLIO,
-                       i_APCI3XXX_InsnBitsTTLIO,
-                       i_APCI3XXX_InsnReadTTLIO,
-               i_APCI3XXX_InsnWriteTTLIO},
-
-       {"apci3006-4",
-                       PCI_VENDOR_ID_ADDIDATA,
-                       0x3015,
-                       256,
-                       256,
-                       256,
-                       256,
-                       ADDIDATA_NO_EEPROM,
-                       ADDIDATA_9054,
-                       4,
-                       2,
-                       4,
-                       0,
-                       65535,
-                       0,
-                       &range_apci3XXX_ai,
-                       NULL,
-                       0,
-                       0,
-                       0,
-                       24,
-                       &range_apci3XXX_ttl,
-                       0,
-                       0,
-                       6,
-                       10000,
-                       0,
-                       v_APCI3XXX_Interrupt,
-                       i_APCI3XXX_Reset,
-                       i_APCI3XXX_InsnConfigAnalogInput,
-                       i_APCI3XXX_InsnReadAnalogInput,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       i_APCI3XXX_InsnConfigInitTTLIO,
-                       i_APCI3XXX_InsnBitsTTLIO,
-                       i_APCI3XXX_InsnReadTTLIO,
-               i_APCI3XXX_InsnWriteTTLIO},
-
-       {"apci3010-16",
-                       PCI_VENDOR_ID_ADDIDATA,
-                       0x3016,
-                       256,
-                       256,
-                       256,
-                       256,
-                       ADDIDATA_NO_EEPROM,
-                       ADDIDATA_9054,
-                       16,
-                       8,
-                       16,
-                       0,
-                       4095,
-                       0,
-                       &range_apci3XXX_ai,
-                       NULL,
-                       4,
-                       4,
-                       1,
-                       24,
-                       &range_apci3XXX_ttl,
-                       0,
-                       0,
-                       6,
-                       5000,
-                       0,
-                       v_APCI3XXX_Interrupt,
-                       i_APCI3XXX_Reset,
-                       i_APCI3XXX_InsnConfigAnalogInput,
-                       i_APCI3XXX_InsnReadAnalogInput,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       i_APCI3XXX_InsnReadDigitalInput,
-                       NULL,
-                       i_APCI3XXX_InsnBitsDigitalInput,
-                       NULL,
-                       i_APCI3XXX_InsnWriteDigitalOutput,
-                       i_APCI3XXX_InsnBitsDigitalOutput,
-                       i_APCI3XXX_InsnReadDigitalOutput,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       i_APCI3XXX_InsnConfigInitTTLIO,
-                       i_APCI3XXX_InsnBitsTTLIO,
-                       i_APCI3XXX_InsnReadTTLIO,
-               i_APCI3XXX_InsnWriteTTLIO},
-
-       {"apci3010-8",
-                       PCI_VENDOR_ID_ADDIDATA,
-                       0x3017,
-                       256,
-                       256,
-                       256,
-                       256,
-                       ADDIDATA_NO_EEPROM,
-                       ADDIDATA_9054,
-                       8,
-                       4,
-                       8,
-                       0,
-                       4095,
-                       0,
-                       &range_apci3XXX_ai,
-                       NULL,
-                       4,
-                       4,
-                       1,
-                       24,
-                       &range_apci3XXX_ttl,
-                       0,
-                       0,
-                       6,
-                       5000,
-                       0,
-                       v_APCI3XXX_Interrupt,
-                       i_APCI3XXX_Reset,
-                       i_APCI3XXX_InsnConfigAnalogInput,
-                       i_APCI3XXX_InsnReadAnalogInput,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       i_APCI3XXX_InsnReadDigitalInput,
-                       NULL,
-                       i_APCI3XXX_InsnBitsDigitalInput,
-                       NULL,
-                       i_APCI3XXX_InsnWriteDigitalOutput,
-                       i_APCI3XXX_InsnBitsDigitalOutput,
-                       i_APCI3XXX_InsnReadDigitalOutput,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       i_APCI3XXX_InsnConfigInitTTLIO,
-                       i_APCI3XXX_InsnBitsTTLIO,
-                       i_APCI3XXX_InsnReadTTLIO,
-               i_APCI3XXX_InsnWriteTTLIO},
-
-       {"apci3010-4",
-                       PCI_VENDOR_ID_ADDIDATA,
-                       0x3018,
-                       256,
-                       256,
-                       256,
-                       256,
-                       ADDIDATA_NO_EEPROM,
-                       ADDIDATA_9054,
-                       4,
-                       2,
-                       4,
-                       0,
-                       4095,
-                       0,
-                       &range_apci3XXX_ai,
-                       NULL,
-                       4,
-                       4,
-                       1,
-                       24,
-                       &range_apci3XXX_ttl,
-                       0,
-                       0,
-                       6,
-                       5000,
-                       0,
-                       v_APCI3XXX_Interrupt,
-                       i_APCI3XXX_Reset,
-                       i_APCI3XXX_InsnConfigAnalogInput,
-                       i_APCI3XXX_InsnReadAnalogInput,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       i_APCI3XXX_InsnReadDigitalInput,
-                       NULL,
-                       i_APCI3XXX_InsnBitsDigitalInput,
-                       NULL,
-                       i_APCI3XXX_InsnWriteDigitalOutput,
-                       i_APCI3XXX_InsnBitsDigitalOutput,
-                       i_APCI3XXX_InsnReadDigitalOutput,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       i_APCI3XXX_InsnConfigInitTTLIO,
-                       i_APCI3XXX_InsnBitsTTLIO,
-                       i_APCI3XXX_InsnReadTTLIO,
-               i_APCI3XXX_InsnWriteTTLIO},
-
-       {"apci3016-16",
-                       PCI_VENDOR_ID_ADDIDATA,
-                       0x3019,
-                       256,
-                       256,
-                       256,
-                       256,
-                       ADDIDATA_NO_EEPROM,
-                       ADDIDATA_9054,
-                       16,
-                       8,
-                       16,
-                       0,
-                       65535,
-                       0,
-                       &range_apci3XXX_ai,
-                       NULL,
-                       4,
-                       4,
-                       1,
-                       24,
-                       &range_apci3XXX_ttl,
-                       0,
-                       0,
-                       6,
-                       5000,
-                       0,
-                       v_APCI3XXX_Interrupt,
-                       i_APCI3XXX_Reset,
-                       i_APCI3XXX_InsnConfigAnalogInput,
-                       i_APCI3XXX_InsnReadAnalogInput,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       i_APCI3XXX_InsnReadDigitalInput,
-                       NULL,
-                       i_APCI3XXX_InsnBitsDigitalInput,
-                       NULL,
-                       i_APCI3XXX_InsnWriteDigitalOutput,
-                       i_APCI3XXX_InsnBitsDigitalOutput,
-                       i_APCI3XXX_InsnReadDigitalOutput,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       i_APCI3XXX_InsnConfigInitTTLIO,
-                       i_APCI3XXX_InsnBitsTTLIO,
-                       i_APCI3XXX_InsnReadTTLIO,
-               i_APCI3XXX_InsnWriteTTLIO},
-
-       {"apci3016-8",
-                       PCI_VENDOR_ID_ADDIDATA,
-                       0x301A,
-                       256,
-                       256,
-                       256,
-                       256,
-                       ADDIDATA_NO_EEPROM,
-                       ADDIDATA_9054,
-                       8,
-                       4,
-                       8,
-                       0,
-                       65535,
-                       0,
-                       &range_apci3XXX_ai,
-                       NULL,
-                       4,
-                       4,
-                       1,
-                       24,
-                       &range_apci3XXX_ttl,
-                       0,
-                       0,
-                       6,
-                       5000,
-                       0,
-                       v_APCI3XXX_Interrupt,
-                       i_APCI3XXX_Reset,
-                       i_APCI3XXX_InsnConfigAnalogInput,
-                       i_APCI3XXX_InsnReadAnalogInput,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       i_APCI3XXX_InsnReadDigitalInput,
-                       NULL,
-                       i_APCI3XXX_InsnBitsDigitalInput,
-                       NULL,
-                       i_APCI3XXX_InsnWriteDigitalOutput,
-                       i_APCI3XXX_InsnBitsDigitalOutput,
-                       i_APCI3XXX_InsnReadDigitalOutput,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       i_APCI3XXX_InsnConfigInitTTLIO,
-                       i_APCI3XXX_InsnBitsTTLIO,
-                       i_APCI3XXX_InsnReadTTLIO,
-               i_APCI3XXX_InsnWriteTTLIO},
-
-       {"apci3016-4",
-                       PCI_VENDOR_ID_ADDIDATA,
-                       0x301B,
-                       256,
-                       256,
-                       256,
-                       256,
-                       ADDIDATA_NO_EEPROM,
-                       ADDIDATA_9054,
-                       4,
-                       2,
-                       4,
-                       0,
-                       65535,
-                       0,
-                       &range_apci3XXX_ai,
-                       NULL,
-                       4,
-                       4,
-                       1,
-                       24,
-                       &range_apci3XXX_ttl,
-                       0,
-                       0,
-                       6,
-                       5000,
-                       0,
-                       v_APCI3XXX_Interrupt,
-                       i_APCI3XXX_Reset,
-                       i_APCI3XXX_InsnConfigAnalogInput,
-                       i_APCI3XXX_InsnReadAnalogInput,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       i_APCI3XXX_InsnReadDigitalInput,
-                       NULL,
-                       i_APCI3XXX_InsnBitsDigitalInput,
-                       NULL,
-                       i_APCI3XXX_InsnWriteDigitalOutput,
-                       i_APCI3XXX_InsnBitsDigitalOutput,
-                       i_APCI3XXX_InsnReadDigitalOutput,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       i_APCI3XXX_InsnConfigInitTTLIO,
-                       i_APCI3XXX_InsnBitsTTLIO,
-                       i_APCI3XXX_InsnReadTTLIO,
-               i_APCI3XXX_InsnWriteTTLIO},
-
-       {"apci3100-16-4",
-                       PCI_VENDOR_ID_ADDIDATA,
-                       0x301C,
-                       256,
-                       256,
-                       256,
-                       256,
-                       ADDIDATA_NO_EEPROM,
-                       ADDIDATA_9054,
-                       16,
-                       8,
-                       16,
-                       4,
-                       4095,
-                       4095,
-                       &range_apci3XXX_ai,
-                       &range_apci3XXX_ao,
-                       0,
-                       0,
-                       0,
-                       24,
-                       &range_apci3XXX_ttl,
-                       0,
-                       0,
-                       6,
-                       10000,
-                       0,
-                       v_APCI3XXX_Interrupt,
-                       i_APCI3XXX_Reset,
-                       i_APCI3XXX_InsnConfigAnalogInput,
-                       i_APCI3XXX_InsnReadAnalogInput,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       i_APCI3XXX_InsnWriteAnalogOutput,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       i_APCI3XXX_InsnConfigInitTTLIO,
-                       i_APCI3XXX_InsnBitsTTLIO,
-                       i_APCI3XXX_InsnReadTTLIO,
-               i_APCI3XXX_InsnWriteTTLIO},
-
-       {"apci3100-8-4",
-                       PCI_VENDOR_ID_ADDIDATA,
-                       0x301D,
-                       256,
-                       256,
-                       256,
-                       256,
-                       ADDIDATA_NO_EEPROM,
-                       ADDIDATA_9054,
-                       8,
-                       4,
-                       8,
-                       4,
-                       4095,
-                       4095,
-                       &range_apci3XXX_ai,
-                       &range_apci3XXX_ao,
-                       0,
-                       0,
-                       0,
-                       24,
-                       &range_apci3XXX_ttl,
-                       0,
-                       0,
-                       6,
-                       10000,
-                       0,
-                       v_APCI3XXX_Interrupt,
-                       i_APCI3XXX_Reset,
-                       i_APCI3XXX_InsnConfigAnalogInput,
-                       i_APCI3XXX_InsnReadAnalogInput,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       i_APCI3XXX_InsnWriteAnalogOutput,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       i_APCI3XXX_InsnConfigInitTTLIO,
-                       i_APCI3XXX_InsnBitsTTLIO,
-                       i_APCI3XXX_InsnReadTTLIO,
-               i_APCI3XXX_InsnWriteTTLIO},
-
-       {"apci3106-16-4",
-                       PCI_VENDOR_ID_ADDIDATA,
-                       0x301E,
-                       256,
-                       256,
-                       256,
-                       256,
-                       ADDIDATA_NO_EEPROM,
-                       ADDIDATA_9054,
-                       16,
-                       8,
-                       16,
-                       4,
-                       65535,
-                       4095,
-                       &range_apci3XXX_ai,
-                       &range_apci3XXX_ao,
-                       0,
-                       0,
-                       0,
-                       24,
-                       &range_apci3XXX_ttl,
-                       0,
-                       0,
-                       6,
-                       10000,
-                       0,
-                       v_APCI3XXX_Interrupt,
-                       i_APCI3XXX_Reset,
-                       i_APCI3XXX_InsnConfigAnalogInput,
-                       i_APCI3XXX_InsnReadAnalogInput,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       i_APCI3XXX_InsnWriteAnalogOutput,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       i_APCI3XXX_InsnConfigInitTTLIO,
-                       i_APCI3XXX_InsnBitsTTLIO,
-                       i_APCI3XXX_InsnReadTTLIO,
-               i_APCI3XXX_InsnWriteTTLIO},
-
-       {"apci3106-8-4",
-                       PCI_VENDOR_ID_ADDIDATA,
-                       0x301F,
-                       256,
-                       256,
-                       256,
-                       256,
-                       ADDIDATA_NO_EEPROM,
-                       ADDIDATA_9054,
-                       8,
-                       4,
-                       8,
-                       4,
-                       65535,
-                       4095,
-                       &range_apci3XXX_ai,
-                       &range_apci3XXX_ao,
-                       0,
-                       0,
-                       0,
-                       24,
-                       &range_apci3XXX_ttl,
-                       0,
-                       0,
-                       6,
-                       10000,
-                       0,
-                       v_APCI3XXX_Interrupt,
-                       i_APCI3XXX_Reset,
-                       i_APCI3XXX_InsnConfigAnalogInput,
-                       i_APCI3XXX_InsnReadAnalogInput,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       i_APCI3XXX_InsnWriteAnalogOutput,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       i_APCI3XXX_InsnConfigInitTTLIO,
-                       i_APCI3XXX_InsnBitsTTLIO,
-                       i_APCI3XXX_InsnReadTTLIO,
-               i_APCI3XXX_InsnWriteTTLIO},
-
-       {"apci3110-16-4",
-                       PCI_VENDOR_ID_ADDIDATA,
-                       0x3020,
-                       256,
-                       256,
-                       256,
-                       256,
-                       ADDIDATA_NO_EEPROM,
-                       ADDIDATA_9054,
-                       16,
-                       8,
-                       16,
-                       4,
-                       4095,
-                       4095,
-                       &range_apci3XXX_ai,
-                       &range_apci3XXX_ao,
-                       4,
-                       4,
-                       1,
-                       24,
-                       &range_apci3XXX_ttl,
-                       0,
-                       0,
-                       6,
-                       5000,
-                       0,
-                       v_APCI3XXX_Interrupt,
-                       i_APCI3XXX_Reset,
-                       i_APCI3XXX_InsnConfigAnalogInput,
-                       i_APCI3XXX_InsnReadAnalogInput,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       i_APCI3XXX_InsnWriteAnalogOutput,
-                       NULL,
-                       NULL,
-                       i_APCI3XXX_InsnReadDigitalInput,
-                       NULL,
-                       i_APCI3XXX_InsnBitsDigitalInput,
-                       NULL,
-                       i_APCI3XXX_InsnWriteDigitalOutput,
-                       i_APCI3XXX_InsnBitsDigitalOutput,
-                       i_APCI3XXX_InsnReadDigitalOutput,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       i_APCI3XXX_InsnConfigInitTTLIO,
-                       i_APCI3XXX_InsnBitsTTLIO,
-                       i_APCI3XXX_InsnReadTTLIO,
-               i_APCI3XXX_InsnWriteTTLIO},
-
-       {"apci3110-8-4",
-                       PCI_VENDOR_ID_ADDIDATA,
-                       0x3021,
-                       256,
-                       256,
-                       256,
-                       256,
-                       ADDIDATA_NO_EEPROM,
-                       ADDIDATA_9054,
-                       8,
-                       4,
-                       8,
-                       4,
-                       4095,
-                       4095,
-                       &range_apci3XXX_ai,
-                       &range_apci3XXX_ao,
-                       4,
-                       4,
-                       1,
-                       24,
-                       &range_apci3XXX_ttl,
-                       0,
-                       0,
-                       6,
-                       5000,
-                       0,
-                       v_APCI3XXX_Interrupt,
-                       i_APCI3XXX_Reset,
-                       i_APCI3XXX_InsnConfigAnalogInput,
-                       i_APCI3XXX_InsnReadAnalogInput,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       i_APCI3XXX_InsnWriteAnalogOutput,
-                       NULL,
-                       NULL,
-                       i_APCI3XXX_InsnReadDigitalInput,
-                       NULL,
-                       i_APCI3XXX_InsnBitsDigitalInput,
-                       NULL,
-                       i_APCI3XXX_InsnWriteDigitalOutput,
-                       i_APCI3XXX_InsnBitsDigitalOutput,
-                       i_APCI3XXX_InsnReadDigitalOutput,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       i_APCI3XXX_InsnConfigInitTTLIO,
-                       i_APCI3XXX_InsnBitsTTLIO,
-                       i_APCI3XXX_InsnReadTTLIO,
-               i_APCI3XXX_InsnWriteTTLIO},
-
-       {"apci3116-16-4",
-                       PCI_VENDOR_ID_ADDIDATA,
-                       0x3022,
-                       256,
-                       256,
-                       256,
-                       256,
-                       ADDIDATA_NO_EEPROM,
-                       ADDIDATA_9054,
-                       16,
-                       8,
-                       16,
-                       4,
-                       65535,
-                       4095,
-                       &range_apci3XXX_ai,
-                       &range_apci3XXX_ao,
-                       4,
-                       4,
-                       1,
-                       24,
-                       &range_apci3XXX_ttl,
-                       0,
-                       0,
-                       6,
-                       5000,
-                       0,
-                       v_APCI3XXX_Interrupt,
-                       i_APCI3XXX_Reset,
-                       i_APCI3XXX_InsnConfigAnalogInput,
-                       i_APCI3XXX_InsnReadAnalogInput,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       i_APCI3XXX_InsnWriteAnalogOutput,
-                       NULL,
-                       NULL,
-                       i_APCI3XXX_InsnReadDigitalInput,
-                       NULL,
-                       i_APCI3XXX_InsnBitsDigitalInput,
-                       NULL,
-                       i_APCI3XXX_InsnWriteDigitalOutput,
-                       i_APCI3XXX_InsnBitsDigitalOutput,
-                       i_APCI3XXX_InsnReadDigitalOutput,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       i_APCI3XXX_InsnConfigInitTTLIO,
-                       i_APCI3XXX_InsnBitsTTLIO,
-                       i_APCI3XXX_InsnReadTTLIO,
-               i_APCI3XXX_InsnWriteTTLIO},
-
-       {"apci3116-8-4",
-                       PCI_VENDOR_ID_ADDIDATA,
-                       0x3023,
-                       256,
-                       256,
-                       256,
-                       256,
-                       ADDIDATA_NO_EEPROM,
-                       ADDIDATA_9054,
-                       8,
-                       4,
-                       8,
-                       4,
-                       65535,
-                       4095,
-                       &range_apci3XXX_ai,
-                       &range_apci3XXX_ao,
-                       4,
-                       4,
-                       1,
-                       24,
-                       &range_apci3XXX_ttl,
-                       0,
-                       0,
-                       6,
-                       5000,
-                       0,
-                       v_APCI3XXX_Interrupt,
-                       i_APCI3XXX_Reset,
-                       i_APCI3XXX_InsnConfigAnalogInput,
-                       i_APCI3XXX_InsnReadAnalogInput,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       i_APCI3XXX_InsnWriteAnalogOutput,
-                       NULL,
-                       NULL,
-                       i_APCI3XXX_InsnReadDigitalInput,
-                       NULL,
-                       i_APCI3XXX_InsnBitsDigitalInput,
-                       NULL,
-                       i_APCI3XXX_InsnWriteDigitalOutput,
-                       i_APCI3XXX_InsnBitsDigitalOutput,
-                       i_APCI3XXX_InsnReadDigitalOutput,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       i_APCI3XXX_InsnConfigInitTTLIO,
-                       i_APCI3XXX_InsnBitsTTLIO,
-                       i_APCI3XXX_InsnReadTTLIO,
-               i_APCI3XXX_InsnWriteTTLIO},
-
-       {"apci3003",
-                       PCI_VENDOR_ID_ADDIDATA,
-                       0x300B,
-                       256,
-                       256,
-                       256,
-                       256,
-                       ADDIDATA_NO_EEPROM,
-                       ADDIDATA_9054,
-                       0,
-                       4,
-                       4,
-                       0,
-                       65535,
-                       0,
-                       &range_apci3XXX_ai,
-                       NULL,
-                       4,
-                       4,
-                       1,
-                       0,
-                       NULL,
-                       0,
-                       0,
-                       7,
-                       2500,
-                       0,
-                       v_APCI3XXX_Interrupt,
-                       i_APCI3XXX_Reset,
-                       i_APCI3XXX_InsnConfigAnalogInput,
-                       i_APCI3XXX_InsnReadAnalogInput,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       i_APCI3XXX_InsnReadDigitalInput,
-                       NULL,
-                       i_APCI3XXX_InsnBitsDigitalInput,
-                       NULL,
-                       i_APCI3XXX_InsnWriteDigitalOutput,
-                       i_APCI3XXX_InsnBitsDigitalOutput,
-                       i_APCI3XXX_InsnReadDigitalOutput,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-               NULL},
-
-       {"apci3002-16",
-                       PCI_VENDOR_ID_ADDIDATA,
-                       0x3002,
-                       256,
-                       256,
-                       256,
-                       256,
-                       ADDIDATA_NO_EEPROM,
-                       ADDIDATA_9054,
-                       0,
-                       16,
-                       16,
-                       0,
-                       65535,
-                       0,
-                       &range_apci3XXX_ai,
-                       NULL,
-                       4,
-                       4,
-                       1,
-                       0,
-                       NULL,
-                       0,
-                       0,
-                       6,
-                       5000,
-                       0,
-                       v_APCI3XXX_Interrupt,
-                       i_APCI3XXX_Reset,
-                       i_APCI3XXX_InsnConfigAnalogInput,
-                       i_APCI3XXX_InsnReadAnalogInput,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       i_APCI3XXX_InsnReadDigitalInput,
-                       NULL,
-                       i_APCI3XXX_InsnBitsDigitalInput,
-                       NULL,
-                       i_APCI3XXX_InsnWriteDigitalOutput,
-                       i_APCI3XXX_InsnBitsDigitalOutput,
-                       i_APCI3XXX_InsnReadDigitalOutput,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-               NULL},
-
-       {"apci3002-8",
-                       PCI_VENDOR_ID_ADDIDATA,
-                       0x3003,
-                       256,
-                       256,
-                       256,
-                       256,
-                       ADDIDATA_NO_EEPROM,
-                       ADDIDATA_9054,
-                       0,
-                       8,
-                       8,
-                       0,
-                       65535,
-                       0,
-                       &range_apci3XXX_ai,
-                       NULL,
-                       4,
-                       4,
-                       1,
-                       0,
-                       NULL,
-                       0,
-                       0,
-                       6,
-                       5000,
-                       0,
-                       v_APCI3XXX_Interrupt,
-                       i_APCI3XXX_Reset,
-                       i_APCI3XXX_InsnConfigAnalogInput,
-                       i_APCI3XXX_InsnReadAnalogInput,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       i_APCI3XXX_InsnReadDigitalInput,
-                       NULL,
-                       i_APCI3XXX_InsnBitsDigitalInput,
-                       NULL,
-                       i_APCI3XXX_InsnWriteDigitalOutput,
-                       i_APCI3XXX_InsnBitsDigitalOutput,
-                       i_APCI3XXX_InsnReadDigitalOutput,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-               NULL},
-
-       {"apci3002-4",
-                       PCI_VENDOR_ID_ADDIDATA,
-                       0x3004,
-                       256,
-                       256,
-                       256,
-                       256,
-                       ADDIDATA_NO_EEPROM,
-                       ADDIDATA_9054,
-                       0,
-                       4,
-                       4,
-                       0,
-                       65535,
-                       0,
-                       &range_apci3XXX_ai,
-                       NULL,
-                       4,
-                       4,
-                       1,
-                       0,
-                       NULL,
-                       0,
-                       0,
-                       6,
-                       5000,
-                       0,
-                       v_APCI3XXX_Interrupt,
-                       i_APCI3XXX_Reset,
-                       i_APCI3XXX_InsnConfigAnalogInput,
-                       i_APCI3XXX_InsnReadAnalogInput,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       i_APCI3XXX_InsnReadDigitalInput,
-                       NULL,
-                       i_APCI3XXX_InsnBitsDigitalInput,
-                       NULL,
-                       i_APCI3XXX_InsnWriteDigitalOutput,
-                       i_APCI3XXX_InsnBitsDigitalOutput,
-                       i_APCI3XXX_InsnReadDigitalOutput,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-               NULL},
-
-       {"apci3500",
-                       PCI_VENDOR_ID_ADDIDATA,
-                       0x3024,
-                       256,
-                       256,
-                       256,
-                       256,
-                       ADDIDATA_NO_EEPROM,
-                       ADDIDATA_9054,
-                       0,
-                       0,
-                       0,
-                       4,
-                       0,
-                       4095,
-                       NULL,
-                       &range_apci3XXX_ao,
-                       0,
-                       0,
-                       0,
-                       24,
-                       &range_apci3XXX_ttl,
-                       0,
-                       0,
-                       0,
-                       0,
-                       0,
-                       v_APCI3XXX_Interrupt,
-                       i_APCI3XXX_Reset,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       i_APCI3XXX_InsnWriteAnalogOutput,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       NULL,
-                       i_APCI3XXX_InsnConfigInitTTLIO,
-                       i_APCI3XXX_InsnBitsTTLIO,
-                       i_APCI3XXX_InsnReadTTLIO,
-               i_APCI3XXX_InsnWriteTTLIO},
+       {
+               .pc_DriverName          = "apci3000-16",
+               .i_VendorId             = PCI_VENDOR_ID_ADDIDATA,
+               .i_DeviceId             = 0x3010,
+               .i_IorangeBase0         = 256,
+               .i_IorangeBase1         = 256,
+               .i_IorangeBase2         = 256,
+               .i_IorangeBase3         = 256,
+               .i_PCIEeprom            = ADDIDATA_NO_EEPROM,
+               .pc_EepromChip          = ADDIDATA_9054,
+               .i_NbrAiChannel         = 16,
+               .i_NbrAiChannelDiff     = 8,
+               .i_AiChannelList        = 16,
+               .i_AiMaxdata            = 4095,
+               .pr_AiRangelist         = &range_apci3XXX_ai,
+               .i_NbrTTLChannel        = 24,
+               .pr_TTLRangelist        = &range_apci3XXX_ttl,
+               .b_AvailableConvertUnit = 6,
+               .ui_MinAcquisitiontimeNs = 10000,
+               .interrupt              = v_APCI3XXX_Interrupt,
+               .reset                  = i_APCI3XXX_Reset,
+               .ai_config              = i_APCI3XXX_InsnConfigAnalogInput,
+               .ai_read                = i_APCI3XXX_InsnReadAnalogInput,
+               .ttl_config             = i_APCI3XXX_InsnConfigInitTTLIO,
+               .ttl_bits               = i_APCI3XXX_InsnBitsTTLIO,
+               .ttl_read               = i_APCI3XXX_InsnReadTTLIO,
+               .ttl_write              = i_APCI3XXX_InsnWriteTTLIO,
+       }, {
+               .pc_DriverName          = "apci3000-8",
+               .i_VendorId             = PCI_VENDOR_ID_ADDIDATA,
+               .i_DeviceId             = 0x300F,
+               .i_IorangeBase0         = 256,
+               .i_IorangeBase1         = 256,
+               .i_IorangeBase2         = 256,
+               .i_IorangeBase3         = 256,
+               .i_PCIEeprom            = ADDIDATA_NO_EEPROM,
+               .pc_EepromChip          = ADDIDATA_9054,
+               .i_NbrAiChannel         = 8,
+               .i_NbrAiChannelDiff     = 4,
+               .i_AiChannelList        = 8,
+               .i_AiMaxdata            = 4095,
+               .pr_AiRangelist         = &range_apci3XXX_ai,
+               .i_NbrTTLChannel        = 24,
+               .pr_TTLRangelist        = &range_apci3XXX_ttl,
+               .b_AvailableConvertUnit = 6,
+               .ui_MinAcquisitiontimeNs = 10000,
+               .interrupt              = v_APCI3XXX_Interrupt,
+               .reset                  = i_APCI3XXX_Reset,
+               .ai_config              = i_APCI3XXX_InsnConfigAnalogInput,
+               .ai_read                = i_APCI3XXX_InsnReadAnalogInput,
+               .ttl_config             = i_APCI3XXX_InsnConfigInitTTLIO,
+               .ttl_bits               = i_APCI3XXX_InsnBitsTTLIO,
+               .ttl_read               = i_APCI3XXX_InsnReadTTLIO,
+               .ttl_write              = i_APCI3XXX_InsnWriteTTLIO,
+       }, {
+               .pc_DriverName          = "apci3000-4",
+               .i_VendorId             = PCI_VENDOR_ID_ADDIDATA,
+               .i_DeviceId             = 0x300E,
+               .i_IorangeBase0         = 256,
+               .i_IorangeBase1         = 256,
+               .i_IorangeBase2         = 256,
+               .i_IorangeBase3         = 256,
+               .i_PCIEeprom            = ADDIDATA_NO_EEPROM,
+               .pc_EepromChip          = ADDIDATA_9054,
+               .i_NbrAiChannel         = 4,
+               .i_NbrAiChannelDiff     = 2,
+               .i_AiChannelList        = 4,
+               .i_AiMaxdata            = 4095,
+               .pr_AiRangelist         = &range_apci3XXX_ai,
+               .i_NbrTTLChannel        = 24,
+               .pr_TTLRangelist        = &range_apci3XXX_ttl,
+               .b_AvailableConvertUnit = 6,
+               .ui_MinAcquisitiontimeNs = 10000,
+               .interrupt              = v_APCI3XXX_Interrupt,
+               .reset                  = i_APCI3XXX_Reset,
+               .ai_config              = i_APCI3XXX_InsnConfigAnalogInput,
+               .ai_read                = i_APCI3XXX_InsnReadAnalogInput,
+               .ttl_config             = i_APCI3XXX_InsnConfigInitTTLIO,
+               .ttl_bits               = i_APCI3XXX_InsnBitsTTLIO,
+               .ttl_read               = i_APCI3XXX_InsnReadTTLIO,
+               .ttl_write              = i_APCI3XXX_InsnWriteTTLIO,
+       }, {
+               .pc_DriverName          = "apci3006-16",
+               .i_VendorId             = PCI_VENDOR_ID_ADDIDATA,
+               .i_DeviceId             = 0x3013,
+               .i_IorangeBase0         = 256,
+               .i_IorangeBase1         = 256,
+               .i_IorangeBase2         = 256,
+               .i_IorangeBase3         = 256,
+               .i_PCIEeprom            = ADDIDATA_NO_EEPROM,
+               .pc_EepromChip          = ADDIDATA_9054,
+               .i_NbrAiChannel         = 16,
+               .i_NbrAiChannelDiff     = 8,
+               .i_AiChannelList        = 16,
+               .i_AiMaxdata            = 65535,
+               .pr_AiRangelist         = &range_apci3XXX_ai,
+               .i_NbrTTLChannel        = 24,
+               .pr_TTLRangelist        = &range_apci3XXX_ttl,
+               .b_AvailableConvertUnit = 6,
+               .ui_MinAcquisitiontimeNs = 10000,
+               .interrupt              = v_APCI3XXX_Interrupt,
+               .reset                  = i_APCI3XXX_Reset,
+               .ai_config              = i_APCI3XXX_InsnConfigAnalogInput,
+               .ai_read                = i_APCI3XXX_InsnReadAnalogInput,
+               .ttl_config             = i_APCI3XXX_InsnConfigInitTTLIO,
+               .ttl_bits               = i_APCI3XXX_InsnBitsTTLIO,
+               .ttl_read               = i_APCI3XXX_InsnReadTTLIO,
+               .ttl_write              = i_APCI3XXX_InsnWriteTTLIO,
+       }, {
+               .pc_DriverName          = "apci3006-8",
+               .i_VendorId             = PCI_VENDOR_ID_ADDIDATA,
+               .i_DeviceId             = 0x3014,
+               .i_IorangeBase0         = 256,
+               .i_IorangeBase1         = 256,
+               .i_IorangeBase2         = 256,
+               .i_IorangeBase3         = 256,
+               .i_PCIEeprom            = ADDIDATA_NO_EEPROM,
+               .pc_EepromChip          = ADDIDATA_9054,
+               .i_NbrAiChannel         = 8,
+               .i_NbrAiChannelDiff     = 4,
+               .i_AiChannelList        = 8,
+               .i_AiMaxdata            = 65535,
+               .pr_AiRangelist         = &range_apci3XXX_ai,
+               .i_NbrTTLChannel        = 24,
+               .pr_TTLRangelist        = &range_apci3XXX_ttl,
+               .b_AvailableConvertUnit = 6,
+               .ui_MinAcquisitiontimeNs = 10000,
+               .interrupt              = v_APCI3XXX_Interrupt,
+               .reset                  = i_APCI3XXX_Reset,
+               .ai_config              = i_APCI3XXX_InsnConfigAnalogInput,
+               .ai_read                = i_APCI3XXX_InsnReadAnalogInput,
+               .ttl_config             = i_APCI3XXX_InsnConfigInitTTLIO,
+               .ttl_bits               = i_APCI3XXX_InsnBitsTTLIO,
+               .ttl_read               = i_APCI3XXX_InsnReadTTLIO,
+               .ttl_write              = i_APCI3XXX_InsnWriteTTLIO,
+       }, {
+               .pc_DriverName          = "apci3006-4",
+               .i_VendorId             = PCI_VENDOR_ID_ADDIDATA,
+               .i_DeviceId             = 0x3015,
+               .i_IorangeBase0         = 256,
+               .i_IorangeBase1         = 256,
+               .i_IorangeBase2         = 256,
+               .i_IorangeBase3         = 256,
+               .i_PCIEeprom            = ADDIDATA_NO_EEPROM,
+               .pc_EepromChip          = ADDIDATA_9054,
+               .i_NbrAiChannel         = 4,
+               .i_NbrAiChannelDiff     = 2,
+               .i_AiChannelList        = 4,
+               .i_AiMaxdata            = 65535,
+               .pr_AiRangelist         = &range_apci3XXX_ai,
+               .i_NbrTTLChannel        = 24,
+               .pr_TTLRangelist        = &range_apci3XXX_ttl,
+               .b_AvailableConvertUnit = 6,
+               .ui_MinAcquisitiontimeNs = 10000,
+               .interrupt              = v_APCI3XXX_Interrupt,
+               .reset                  = i_APCI3XXX_Reset,
+               .ai_config              = i_APCI3XXX_InsnConfigAnalogInput,
+               .ai_read                = i_APCI3XXX_InsnReadAnalogInput,
+               .ttl_config             = i_APCI3XXX_InsnConfigInitTTLIO,
+               .ttl_bits               = i_APCI3XXX_InsnBitsTTLIO,
+               .ttl_read               = i_APCI3XXX_InsnReadTTLIO,
+               .ttl_write              = i_APCI3XXX_InsnWriteTTLIO,
+       }, {
+               .pc_DriverName          = "apci3010-16",
+               .i_VendorId             = PCI_VENDOR_ID_ADDIDATA,
+               .i_DeviceId             = 0x3016,
+               .i_IorangeBase0         = 256,
+               .i_IorangeBase1         = 256,
+               .i_IorangeBase2         = 256,
+               .i_IorangeBase3         = 256,
+               .i_PCIEeprom            = ADDIDATA_NO_EEPROM,
+               .pc_EepromChip          = ADDIDATA_9054,
+               .i_NbrAiChannel         = 16,
+               .i_NbrAiChannelDiff     = 8,
+               .i_AiChannelList        = 16,
+               .i_AiMaxdata            = 4095,
+               .pr_AiRangelist         = &range_apci3XXX_ai,
+               .i_NbrDiChannel         = 4,
+               .i_NbrDoChannel         = 4,
+               .i_DoMaxdata            = 1,
+               .i_NbrTTLChannel        = 24,
+               .pr_TTLRangelist        = &range_apci3XXX_ttl,
+               .b_AvailableConvertUnit = 6,
+               .ui_MinAcquisitiontimeNs = 5000,
+               .interrupt              = v_APCI3XXX_Interrupt,
+               .reset                  = i_APCI3XXX_Reset,
+               .ai_config              = i_APCI3XXX_InsnConfigAnalogInput,
+               .ai_read                = i_APCI3XXX_InsnReadAnalogInput,
+               .di_read                = i_APCI3XXX_InsnReadDigitalInput,
+               .di_bits                = i_APCI3XXX_InsnBitsDigitalInput,
+               .do_write               = i_APCI3XXX_InsnWriteDigitalOutput,
+               .do_bits                = i_APCI3XXX_InsnBitsDigitalOutput,
+               .do_read                = i_APCI3XXX_InsnReadDigitalOutput,
+               .ttl_config             = i_APCI3XXX_InsnConfigInitTTLIO,
+               .ttl_bits               = i_APCI3XXX_InsnBitsTTLIO,
+               .ttl_read               = i_APCI3XXX_InsnReadTTLIO,
+               .ttl_write              = i_APCI3XXX_InsnWriteTTLIO,
+       }, {
+               .pc_DriverName          = "apci3010-8",
+               .i_VendorId             = PCI_VENDOR_ID_ADDIDATA,
+               .i_DeviceId             = 0x3017,
+               .i_IorangeBase0         = 256,
+               .i_IorangeBase1         = 256,
+               .i_IorangeBase2         = 256,
+               .i_IorangeBase3         = 256,
+               .i_PCIEeprom            = ADDIDATA_NO_EEPROM,
+               .pc_EepromChip          = ADDIDATA_9054,
+               .i_NbrAiChannel         = 8,
+               .i_NbrAiChannelDiff     = 4,
+               .i_AiChannelList        = 8,
+               .i_AiMaxdata            = 4095,
+               .pr_AiRangelist         = &range_apci3XXX_ai,
+               .i_NbrDiChannel         = 4,
+               .i_NbrDoChannel         = 4,
+               .i_DoMaxdata            = 1,
+               .i_NbrTTLChannel        = 24,
+               .pr_TTLRangelist        = &range_apci3XXX_ttl,
+               .b_AvailableConvertUnit = 6,
+               .ui_MinAcquisitiontimeNs = 5000,
+               .interrupt              = v_APCI3XXX_Interrupt,
+               .reset                  = i_APCI3XXX_Reset,
+               .ai_config              = i_APCI3XXX_InsnConfigAnalogInput,
+               .ai_read                = i_APCI3XXX_InsnReadAnalogInput,
+               .di_read                = i_APCI3XXX_InsnReadDigitalInput,
+               .di_bits                = i_APCI3XXX_InsnBitsDigitalInput,
+               .do_write               = i_APCI3XXX_InsnWriteDigitalOutput,
+               .do_bits                = i_APCI3XXX_InsnBitsDigitalOutput,
+               .do_read                = i_APCI3XXX_InsnReadDigitalOutput,
+               .ttl_config             = i_APCI3XXX_InsnConfigInitTTLIO,
+               .ttl_bits               = i_APCI3XXX_InsnBitsTTLIO,
+               .ttl_read               = i_APCI3XXX_InsnReadTTLIO,
+               .ttl_write              = i_APCI3XXX_InsnWriteTTLIO,
+       }, {
+               .pc_DriverName          = "apci3010-4",
+               .i_VendorId             = PCI_VENDOR_ID_ADDIDATA,
+               .i_DeviceId             = 0x3018,
+               .i_IorangeBase0         = 256,
+               .i_IorangeBase1         = 256,
+               .i_IorangeBase2         = 256,
+               .i_IorangeBase3         = 256,
+               .i_PCIEeprom            = ADDIDATA_NO_EEPROM,
+               .pc_EepromChip          = ADDIDATA_9054,
+               .i_NbrAiChannel         = 4,
+               .i_NbrAiChannelDiff     = 2,
+               .i_AiChannelList        = 4,
+               .i_AiMaxdata            = 4095,
+               .pr_AiRangelist         = &range_apci3XXX_ai,
+               .i_NbrDiChannel         = 4,
+               .i_NbrDoChannel         = 4,
+               .i_DoMaxdata            = 1,
+               .i_NbrTTLChannel        = 24,
+               .pr_TTLRangelist        = &range_apci3XXX_ttl,
+               .b_AvailableConvertUnit = 6,
+               .ui_MinAcquisitiontimeNs = 5000,
+               .interrupt              = v_APCI3XXX_Interrupt,
+               .reset                  = i_APCI3XXX_Reset,
+               .ai_config              = i_APCI3XXX_InsnConfigAnalogInput,
+               .ai_read                = i_APCI3XXX_InsnReadAnalogInput,
+               .di_read                = i_APCI3XXX_InsnReadDigitalInput,
+               .di_bits                = i_APCI3XXX_InsnBitsDigitalInput,
+               .do_write               = i_APCI3XXX_InsnWriteDigitalOutput,
+               .do_bits                = i_APCI3XXX_InsnBitsDigitalOutput,
+               .do_read                = i_APCI3XXX_InsnReadDigitalOutput,
+               .ttl_config             = i_APCI3XXX_InsnConfigInitTTLIO,
+               .ttl_bits               = i_APCI3XXX_InsnBitsTTLIO,
+               .ttl_read               = i_APCI3XXX_InsnReadTTLIO,
+               .ttl_write              = i_APCI3XXX_InsnWriteTTLIO,
+       }, {
+               .pc_DriverName          = "apci3016-16",
+               .i_VendorId             = PCI_VENDOR_ID_ADDIDATA,
+               .i_DeviceId             = 0x3019,
+               .i_IorangeBase0         = 256,
+               .i_IorangeBase1         = 256,
+               .i_IorangeBase2         = 256,
+               .i_IorangeBase3         = 256,
+               .i_PCIEeprom            = ADDIDATA_NO_EEPROM,
+               .pc_EepromChip          = ADDIDATA_9054,
+               .i_NbrAiChannel         = 16,
+               .i_NbrAiChannelDiff     = 8,
+               .i_AiChannelList        = 16,
+               .i_AiMaxdata            = 65535,
+               .pr_AiRangelist         = &range_apci3XXX_ai,
+               .i_NbrDiChannel         = 4,
+               .i_NbrDoChannel         = 4,
+               .i_DoMaxdata            = 1,
+               .i_NbrTTLChannel        = 24,
+               .pr_TTLRangelist        = &range_apci3XXX_ttl,
+               .b_AvailableConvertUnit = 6,
+               .ui_MinAcquisitiontimeNs = 5000,
+               .interrupt              = v_APCI3XXX_Interrupt,
+               .reset                  = i_APCI3XXX_Reset,
+               .ai_config              = i_APCI3XXX_InsnConfigAnalogInput,
+               .ai_read                = i_APCI3XXX_InsnReadAnalogInput,
+               .di_read                = i_APCI3XXX_InsnReadDigitalInput,
+               .di_bits                = i_APCI3XXX_InsnBitsDigitalInput,
+               .do_write               = i_APCI3XXX_InsnWriteDigitalOutput,
+               .do_bits                = i_APCI3XXX_InsnBitsDigitalOutput,
+               .do_read                = i_APCI3XXX_InsnReadDigitalOutput,
+               .ttl_config             = i_APCI3XXX_InsnConfigInitTTLIO,
+               .ttl_bits               = i_APCI3XXX_InsnBitsTTLIO,
+               .ttl_read               = i_APCI3XXX_InsnReadTTLIO,
+               .ttl_write              = i_APCI3XXX_InsnWriteTTLIO,
+       }, {
+               .pc_DriverName          = "apci3016-8",
+               .i_VendorId             = PCI_VENDOR_ID_ADDIDATA,
+               .i_DeviceId             = 0x301A,
+               .i_IorangeBase0         = 256,
+               .i_IorangeBase1         = 256,
+               .i_IorangeBase2         = 256,
+               .i_IorangeBase3         = 256,
+               .i_PCIEeprom            = ADDIDATA_NO_EEPROM,
+               .pc_EepromChip          = ADDIDATA_9054,
+               .i_NbrAiChannel         = 8,
+               .i_NbrAiChannelDiff     = 4,
+               .i_AiChannelList        = 8,
+               .i_AiMaxdata            = 65535,
+               .pr_AiRangelist         = &range_apci3XXX_ai,
+               .i_NbrDiChannel         = 4,
+               .i_NbrDoChannel         = 4,
+               .i_DoMaxdata            = 1,
+               .i_NbrTTLChannel        = 24,
+               .pr_TTLRangelist        = &range_apci3XXX_ttl,
+               .b_AvailableConvertUnit = 6,
+               .ui_MinAcquisitiontimeNs = 5000,
+               .interrupt              = v_APCI3XXX_Interrupt,
+               .reset                  = i_APCI3XXX_Reset,
+               .ai_config              = i_APCI3XXX_InsnConfigAnalogInput,
+               .ai_read                = i_APCI3XXX_InsnReadAnalogInput,
+               .di_read                = i_APCI3XXX_InsnReadDigitalInput,
+               .di_bits                = i_APCI3XXX_InsnBitsDigitalInput,
+               .do_write               = i_APCI3XXX_InsnWriteDigitalOutput,
+               .do_bits                = i_APCI3XXX_InsnBitsDigitalOutput,
+               .do_read                = i_APCI3XXX_InsnReadDigitalOutput,
+               .ttl_config             = i_APCI3XXX_InsnConfigInitTTLIO,
+               .ttl_bits               = i_APCI3XXX_InsnBitsTTLIO,
+               .ttl_read               = i_APCI3XXX_InsnReadTTLIO,
+               .ttl_write              = i_APCI3XXX_InsnWriteTTLIO,
+       }, {
+               .pc_DriverName          = "apci3016-4",
+               .i_VendorId             = PCI_VENDOR_ID_ADDIDATA,
+               .i_DeviceId             = 0x301B,
+               .i_IorangeBase0         = 256,
+               .i_IorangeBase1         = 256,
+               .i_IorangeBase2         = 256,
+               .i_IorangeBase3         = 256,
+               .i_PCIEeprom            = ADDIDATA_NO_EEPROM,
+               .pc_EepromChip          = ADDIDATA_9054,
+               .i_NbrAiChannel         = 4,
+               .i_NbrAiChannelDiff     = 2,
+               .i_AiChannelList        = 4,
+               .i_AiMaxdata            = 65535,
+               .pr_AiRangelist         = &range_apci3XXX_ai,
+               .i_NbrDiChannel         = 4,
+               .i_NbrDoChannel         = 4,
+               .i_DoMaxdata            = 1,
+               .i_NbrTTLChannel        = 24,
+               .pr_TTLRangelist        = &range_apci3XXX_ttl,
+               .b_AvailableConvertUnit = 6,
+               .ui_MinAcquisitiontimeNs = 5000,
+               .interrupt              = v_APCI3XXX_Interrupt,
+               .reset                  = i_APCI3XXX_Reset,
+               .ai_config              = i_APCI3XXX_InsnConfigAnalogInput,
+               .ai_read                = i_APCI3XXX_InsnReadAnalogInput,
+               .di_read                = i_APCI3XXX_InsnReadDigitalInput,
+               .di_bits                = i_APCI3XXX_InsnBitsDigitalInput,
+               .do_write               = i_APCI3XXX_InsnWriteDigitalOutput,
+               .do_bits                = i_APCI3XXX_InsnBitsDigitalOutput,
+               .do_read                = i_APCI3XXX_InsnReadDigitalOutput,
+               .ttl_config             = i_APCI3XXX_InsnConfigInitTTLIO,
+               .ttl_bits               = i_APCI3XXX_InsnBitsTTLIO,
+               .ttl_read               = i_APCI3XXX_InsnReadTTLIO,
+               .ttl_write              = i_APCI3XXX_InsnWriteTTLIO,
+       }, {
+               .pc_DriverName          = "apci3100-16-4",
+               .i_VendorId             = PCI_VENDOR_ID_ADDIDATA,
+               .i_DeviceId             = 0x301C,
+               .i_IorangeBase0         = 256,
+               .i_IorangeBase1         = 256,
+               .i_IorangeBase2         = 256,
+               .i_IorangeBase3         = 256,
+               .i_PCIEeprom            = ADDIDATA_NO_EEPROM,
+               .pc_EepromChip          = ADDIDATA_9054,
+               .i_NbrAiChannel         = 16,
+               .i_NbrAiChannelDiff     = 8,
+               .i_AiChannelList        = 16,
+               .i_NbrAoChannel         = 4,
+               .i_AiMaxdata            = 4095,
+               .i_AoMaxdata            = 4095,
+               .pr_AiRangelist         = &range_apci3XXX_ai,
+               .pr_AoRangelist         = &range_apci3XXX_ao,
+               .i_NbrTTLChannel        = 24,
+               .pr_TTLRangelist        = &range_apci3XXX_ttl,
+               .b_AvailableConvertUnit = 6,
+               .ui_MinAcquisitiontimeNs = 10000,
+               .interrupt              = v_APCI3XXX_Interrupt,
+               .reset                  = i_APCI3XXX_Reset,
+               .ai_config              = i_APCI3XXX_InsnConfigAnalogInput,
+               .ai_read                = i_APCI3XXX_InsnReadAnalogInput,
+               .ao_write               = i_APCI3XXX_InsnWriteAnalogOutput,
+               .ttl_config             = i_APCI3XXX_InsnConfigInitTTLIO,
+               .ttl_bits               = i_APCI3XXX_InsnBitsTTLIO,
+               .ttl_read               = i_APCI3XXX_InsnReadTTLIO,
+               .ttl_write              = i_APCI3XXX_InsnWriteTTLIO,
+       }, {
+               .pc_DriverName          = "apci3100-8-4",
+               .i_VendorId             = PCI_VENDOR_ID_ADDIDATA,
+               .i_DeviceId             = 0x301D,
+               .i_IorangeBase0         = 256,
+               .i_IorangeBase1         = 256,
+               .i_IorangeBase2         = 256,
+               .i_IorangeBase3         = 256,
+               .i_PCIEeprom            = ADDIDATA_NO_EEPROM,
+               .pc_EepromChip          = ADDIDATA_9054,
+               .i_NbrAiChannel         = 8,
+               .i_NbrAiChannelDiff     = 4,
+               .i_AiChannelList        = 8,
+               .i_NbrAoChannel         = 4,
+               .i_AiMaxdata            = 4095,
+               .i_AoMaxdata            = 4095,
+               .pr_AiRangelist         = &range_apci3XXX_ai,
+               .pr_AoRangelist         = &range_apci3XXX_ao,
+               .i_NbrTTLChannel        = 24,
+               .pr_TTLRangelist        = &range_apci3XXX_ttl,
+               .b_AvailableConvertUnit = 6,
+               .ui_MinAcquisitiontimeNs = 10000,
+               .interrupt              = v_APCI3XXX_Interrupt,
+               .reset                  = i_APCI3XXX_Reset,
+               .ai_config              = i_APCI3XXX_InsnConfigAnalogInput,
+               .ai_read                = i_APCI3XXX_InsnReadAnalogInput,
+               .ao_write               = i_APCI3XXX_InsnWriteAnalogOutput,
+               .ttl_config             = i_APCI3XXX_InsnConfigInitTTLIO,
+               .ttl_bits               = i_APCI3XXX_InsnBitsTTLIO,
+               .ttl_read               = i_APCI3XXX_InsnReadTTLIO,
+               .ttl_write              = i_APCI3XXX_InsnWriteTTLIO,
+       }, {
+               .pc_DriverName          = "apci3106-16-4",
+               .i_VendorId             = PCI_VENDOR_ID_ADDIDATA,
+               .i_DeviceId             = 0x301E,
+               .i_IorangeBase0         = 256,
+               .i_IorangeBase1         = 256,
+               .i_IorangeBase2         = 256,
+               .i_IorangeBase3         = 256,
+               .i_PCIEeprom            = ADDIDATA_NO_EEPROM,
+               .pc_EepromChip          = ADDIDATA_9054,
+               .i_NbrAiChannel         = 16,
+               .i_NbrAiChannelDiff     = 8,
+               .i_AiChannelList        = 16,
+               .i_NbrAoChannel         = 4,
+               .i_AiMaxdata            = 65535,
+               .i_AoMaxdata            = 4095,
+               .pr_AiRangelist         = &range_apci3XXX_ai,
+               .pr_AoRangelist         = &range_apci3XXX_ao,
+               .i_NbrTTLChannel        = 24,
+               .pr_TTLRangelist        = &range_apci3XXX_ttl,
+               .b_AvailableConvertUnit = 6,
+               .ui_MinAcquisitiontimeNs = 10000,
+               .interrupt              = v_APCI3XXX_Interrupt,
+               .reset                  = i_APCI3XXX_Reset,
+               .ai_config              = i_APCI3XXX_InsnConfigAnalogInput,
+               .ai_read                = i_APCI3XXX_InsnReadAnalogInput,
+               .ao_write               = i_APCI3XXX_InsnWriteAnalogOutput,
+               .ttl_config             = i_APCI3XXX_InsnConfigInitTTLIO,
+               .ttl_bits               = i_APCI3XXX_InsnBitsTTLIO,
+               .ttl_read               = i_APCI3XXX_InsnReadTTLIO,
+               .ttl_write              = i_APCI3XXX_InsnWriteTTLIO,
+       }, {
+               .pc_DriverName          = "apci3106-8-4",
+               .i_VendorId             = PCI_VENDOR_ID_ADDIDATA,
+               .i_DeviceId             = 0x301F,
+               .i_IorangeBase0         = 256,
+               .i_IorangeBase1         = 256,
+               .i_IorangeBase2         = 256,
+               .i_IorangeBase3         = 256,
+               .i_PCIEeprom            = ADDIDATA_NO_EEPROM,
+               .pc_EepromChip          = ADDIDATA_9054,
+               .i_NbrAiChannel         = 8,
+               .i_NbrAiChannelDiff     = 4,
+               .i_AiChannelList        = 8,
+               .i_NbrAoChannel         = 4,
+               .i_AiMaxdata            = 65535,
+               .i_AoMaxdata            = 4095,
+               .pr_AiRangelist         = &range_apci3XXX_ai,
+               .pr_AoRangelist         = &range_apci3XXX_ao,
+               .i_NbrTTLChannel        = 24,
+               .pr_TTLRangelist        = &range_apci3XXX_ttl,
+               .b_AvailableConvertUnit = 6,
+               .ui_MinAcquisitiontimeNs = 10000,
+               .interrupt              = v_APCI3XXX_Interrupt,
+               .reset                  = i_APCI3XXX_Reset,
+               .ai_config              = i_APCI3XXX_InsnConfigAnalogInput,
+               .ai_read                = i_APCI3XXX_InsnReadAnalogInput,
+               .ao_write               = i_APCI3XXX_InsnWriteAnalogOutput,
+               .ttl_config             = i_APCI3XXX_InsnConfigInitTTLIO,
+               .ttl_bits               = i_APCI3XXX_InsnBitsTTLIO,
+               .ttl_read               = i_APCI3XXX_InsnReadTTLIO,
+               .ttl_write              = i_APCI3XXX_InsnWriteTTLIO,
+       }, {
+               .pc_DriverName          = "apci3110-16-4",
+               .i_VendorId             = PCI_VENDOR_ID_ADDIDATA,
+               .i_DeviceId             = 0x3020,
+               .i_IorangeBase0         = 256,
+               .i_IorangeBase1         = 256,
+               .i_IorangeBase2         = 256,
+               .i_IorangeBase3         = 256,
+               .i_PCIEeprom            = ADDIDATA_NO_EEPROM,
+               .pc_EepromChip          = ADDIDATA_9054,
+               .i_NbrAiChannel         = 16,
+               .i_NbrAiChannelDiff     = 8,
+               .i_AiChannelList        = 16,
+               .i_NbrAoChannel         = 4,
+               .i_AiMaxdata            = 4095,
+               .i_AoMaxdata            = 4095,
+               .pr_AiRangelist         = &range_apci3XXX_ai,
+               .pr_AoRangelist         = &range_apci3XXX_ao,
+               .i_NbrDiChannel         = 4,
+               .i_NbrDoChannel         = 4,
+               .i_DoMaxdata            = 1,
+               .i_NbrTTLChannel        = 24,
+               .pr_TTLRangelist        = &range_apci3XXX_ttl,
+               .b_AvailableConvertUnit = 6,
+               .ui_MinAcquisitiontimeNs = 5000,
+               .interrupt              = v_APCI3XXX_Interrupt,
+               .reset                  = i_APCI3XXX_Reset,
+               .ai_config              = i_APCI3XXX_InsnConfigAnalogInput,
+               .ai_read                = i_APCI3XXX_InsnReadAnalogInput,
+               .ao_write               = i_APCI3XXX_InsnWriteAnalogOutput,
+               .di_read                = i_APCI3XXX_InsnReadDigitalInput,
+               .di_bits                = i_APCI3XXX_InsnBitsDigitalInput,
+               .do_write               = i_APCI3XXX_InsnWriteDigitalOutput,
+               .do_bits                = i_APCI3XXX_InsnBitsDigitalOutput,
+               .do_read                = i_APCI3XXX_InsnReadDigitalOutput,
+               .ttl_config             = i_APCI3XXX_InsnConfigInitTTLIO,
+               .ttl_bits               = i_APCI3XXX_InsnBitsTTLIO,
+               .ttl_read               = i_APCI3XXX_InsnReadTTLIO,
+               .ttl_write              = i_APCI3XXX_InsnWriteTTLIO,
+       }, {
+               .pc_DriverName          = "apci3110-8-4",
+               .i_VendorId             = PCI_VENDOR_ID_ADDIDATA,
+               .i_DeviceId             = 0x3021,
+               .i_IorangeBase0         = 256,
+               .i_IorangeBase1         = 256,
+               .i_IorangeBase2         = 256,
+               .i_IorangeBase3         = 256,
+               .i_PCIEeprom            = ADDIDATA_NO_EEPROM,
+               .pc_EepromChip          = ADDIDATA_9054,
+               .i_NbrAiChannel         = 8,
+               .i_NbrAiChannelDiff     = 4,
+               .i_AiChannelList        = 8,
+               .i_NbrAoChannel         = 4,
+               .i_AiMaxdata            = 4095,
+               .i_AoMaxdata            = 4095,
+               .pr_AiRangelist         = &range_apci3XXX_ai,
+               .pr_AoRangelist         = &range_apci3XXX_ao,
+               .i_NbrDiChannel         = 4,
+               .i_NbrDoChannel         = 4,
+               .i_DoMaxdata            = 1,
+               .i_NbrTTLChannel        = 24,
+               .pr_TTLRangelist        = &range_apci3XXX_ttl,
+               .b_AvailableConvertUnit = 6,
+               .ui_MinAcquisitiontimeNs = 5000,
+               .interrupt              = v_APCI3XXX_Interrupt,
+               .reset                  = i_APCI3XXX_Reset,
+               .ai_config              = i_APCI3XXX_InsnConfigAnalogInput,
+               .ai_read                = i_APCI3XXX_InsnReadAnalogInput,
+               .ao_write               = i_APCI3XXX_InsnWriteAnalogOutput,
+               .di_read                = i_APCI3XXX_InsnReadDigitalInput,
+               .di_bits                = i_APCI3XXX_InsnBitsDigitalInput,
+               .do_write               = i_APCI3XXX_InsnWriteDigitalOutput,
+               .do_bits                = i_APCI3XXX_InsnBitsDigitalOutput,
+               .do_read                = i_APCI3XXX_InsnReadDigitalOutput,
+               .ttl_config             = i_APCI3XXX_InsnConfigInitTTLIO,
+               .ttl_bits               = i_APCI3XXX_InsnBitsTTLIO,
+               .ttl_read               = i_APCI3XXX_InsnReadTTLIO,
+               .ttl_write              = i_APCI3XXX_InsnWriteTTLIO,
+       }, {
+               .pc_DriverName          = "apci3116-16-4",
+               .i_VendorId             = PCI_VENDOR_ID_ADDIDATA,
+               .i_DeviceId             = 0x3022,
+               .i_IorangeBase0         = 256,
+               .i_IorangeBase1         = 256,
+               .i_IorangeBase2         = 256,
+               .i_IorangeBase3         = 256,
+               .i_PCIEeprom            = ADDIDATA_NO_EEPROM,
+               .pc_EepromChip          = ADDIDATA_9054,
+               .i_NbrAiChannel         = 16,
+               .i_NbrAiChannelDiff     = 8,
+               .i_AiChannelList        = 16,
+               .i_NbrAoChannel         = 4,
+               .i_AiMaxdata            = 65535,
+               .i_AoMaxdata            = 4095,
+               .pr_AiRangelist         = &range_apci3XXX_ai,
+               .pr_AoRangelist         = &range_apci3XXX_ao,
+               .i_NbrDiChannel         = 4,
+               .i_NbrDoChannel         = 4,
+               .i_DoMaxdata            = 1,
+               .i_NbrTTLChannel        = 24,
+               .pr_TTLRangelist        = &range_apci3XXX_ttl,
+               .b_AvailableConvertUnit = 6,
+               .ui_MinAcquisitiontimeNs = 5000,
+               .interrupt              = v_APCI3XXX_Interrupt,
+               .reset                  = i_APCI3XXX_Reset,
+               .ai_config              = i_APCI3XXX_InsnConfigAnalogInput,
+               .ai_read                = i_APCI3XXX_InsnReadAnalogInput,
+               .ao_write               = i_APCI3XXX_InsnWriteAnalogOutput,
+               .di_read                = i_APCI3XXX_InsnReadDigitalInput,
+               .di_bits                = i_APCI3XXX_InsnBitsDigitalInput,
+               .do_write               = i_APCI3XXX_InsnWriteDigitalOutput,
+               .do_bits                = i_APCI3XXX_InsnBitsDigitalOutput,
+               .do_read                = i_APCI3XXX_InsnReadDigitalOutput,
+               .ttl_config             = i_APCI3XXX_InsnConfigInitTTLIO,
+               .ttl_bits               = i_APCI3XXX_InsnBitsTTLIO,
+               .ttl_read               = i_APCI3XXX_InsnReadTTLIO,
+               .ttl_write              = i_APCI3XXX_InsnWriteTTLIO,
+       }, {
+               .pc_DriverName          = "apci3116-8-4",
+               .i_VendorId             = PCI_VENDOR_ID_ADDIDATA,
+               .i_DeviceId             = 0x3023,
+               .i_IorangeBase0         = 256,
+               .i_IorangeBase1         = 256,
+               .i_IorangeBase2         = 256,
+               .i_IorangeBase3         = 256,
+               .i_PCIEeprom            = ADDIDATA_NO_EEPROM,
+               .pc_EepromChip          = ADDIDATA_9054,
+               .i_NbrAiChannel         = 8,
+               .i_NbrAiChannelDiff     = 4,
+               .i_AiChannelList        = 8,
+               .i_NbrAoChannel         = 4,
+               .i_AiMaxdata            = 65535,
+               .i_AoMaxdata            = 4095,
+               .pr_AiRangelist         = &range_apci3XXX_ai,
+               .pr_AoRangelist         = &range_apci3XXX_ao,
+               .i_NbrDiChannel         = 4,
+               .i_NbrDoChannel         = 4,
+               .i_DoMaxdata            = 1,
+               .i_NbrTTLChannel        = 24,
+               .pr_TTLRangelist        = &range_apci3XXX_ttl,
+               .b_AvailableConvertUnit = 6,
+               .ui_MinAcquisitiontimeNs = 5000,
+               .interrupt              = v_APCI3XXX_Interrupt,
+               .reset                  = i_APCI3XXX_Reset,
+               .ai_config              = i_APCI3XXX_InsnConfigAnalogInput,
+               .ai_read                = i_APCI3XXX_InsnReadAnalogInput,
+               .ao_write               = i_APCI3XXX_InsnWriteAnalogOutput,
+               .di_read                = i_APCI3XXX_InsnReadDigitalInput,
+               .di_bits                = i_APCI3XXX_InsnBitsDigitalInput,
+               .do_write               = i_APCI3XXX_InsnWriteDigitalOutput,
+               .do_bits                = i_APCI3XXX_InsnBitsDigitalOutput,
+               .do_read                = i_APCI3XXX_InsnReadDigitalOutput,
+               .ttl_config             = i_APCI3XXX_InsnConfigInitTTLIO,
+               .ttl_bits               = i_APCI3XXX_InsnBitsTTLIO,
+               .ttl_read               = i_APCI3XXX_InsnReadTTLIO,
+               .ttl_write              = i_APCI3XXX_InsnWriteTTLIO,
+       }, {
+               .pc_DriverName          = "apci3003",
+               .i_VendorId             = PCI_VENDOR_ID_ADDIDATA,
+               .i_DeviceId             = 0x300B,
+               .i_IorangeBase0         = 256,
+               .i_IorangeBase1         = 256,
+               .i_IorangeBase2         = 256,
+               .i_IorangeBase3         = 256,
+               .i_PCIEeprom            = ADDIDATA_NO_EEPROM,
+               .pc_EepromChip          = ADDIDATA_9054,
+               .i_NbrAiChannelDiff     = 4,
+               .i_AiChannelList        = 4,
+               .i_AiMaxdata            = 65535,
+               .pr_AiRangelist         = &range_apci3XXX_ai,
+               .i_NbrDiChannel         = 4,
+               .i_NbrDoChannel         = 4,
+               .i_DoMaxdata            = 1,
+               .b_AvailableConvertUnit = 7,
+               .ui_MinAcquisitiontimeNs = 2500,
+               .interrupt              = v_APCI3XXX_Interrupt,
+               .reset                  = i_APCI3XXX_Reset,
+               .ai_config              = i_APCI3XXX_InsnConfigAnalogInput,
+               .ai_read                = i_APCI3XXX_InsnReadAnalogInput,
+               .di_read                = i_APCI3XXX_InsnReadDigitalInput,
+               .di_bits                = i_APCI3XXX_InsnBitsDigitalInput,
+               .do_write               = i_APCI3XXX_InsnWriteDigitalOutput,
+               .do_bits                = i_APCI3XXX_InsnBitsDigitalOutput,
+               .do_read                = i_APCI3XXX_InsnReadDigitalOutput,
+       }, {
+               .pc_DriverName          = "apci3002-16",
+               .i_VendorId             = PCI_VENDOR_ID_ADDIDATA,
+               .i_DeviceId             = 0x3002,
+               .i_IorangeBase0         = 256,
+               .i_IorangeBase1         = 256,
+               .i_IorangeBase2         = 256,
+               .i_IorangeBase3         = 256,
+               .i_PCIEeprom            = ADDIDATA_NO_EEPROM,
+               .pc_EepromChip          = ADDIDATA_9054,
+               .i_NbrAiChannelDiff     = 16,
+               .i_AiChannelList        = 16,
+               .i_AiMaxdata            = 65535,
+               .pr_AiRangelist         = &range_apci3XXX_ai,
+               .i_NbrDiChannel         = 4,
+               .i_NbrDoChannel         = 4,
+               .i_DoMaxdata            = 1,
+               .b_AvailableConvertUnit = 6,
+               .ui_MinAcquisitiontimeNs = 5000,
+               .interrupt              = v_APCI3XXX_Interrupt,
+               .reset                  = i_APCI3XXX_Reset,
+               .ai_config              = i_APCI3XXX_InsnConfigAnalogInput,
+               .ai_read                = i_APCI3XXX_InsnReadAnalogInput,
+               .di_read                = i_APCI3XXX_InsnReadDigitalInput,
+               .di_bits                = i_APCI3XXX_InsnBitsDigitalInput,
+               .do_write               = i_APCI3XXX_InsnWriteDigitalOutput,
+               .do_bits                = i_APCI3XXX_InsnBitsDigitalOutput,
+               .do_read                = i_APCI3XXX_InsnReadDigitalOutput,
+       }, {
+               .pc_DriverName          = "apci3002-8",
+               .i_VendorId             = PCI_VENDOR_ID_ADDIDATA,
+               .i_DeviceId             = 0x3003,
+               .i_IorangeBase0         = 256,
+               .i_IorangeBase1         = 256,
+               .i_IorangeBase2         = 256,
+               .i_IorangeBase3         = 256,
+               .i_PCIEeprom            = ADDIDATA_NO_EEPROM,
+               .pc_EepromChip          = ADDIDATA_9054,
+               .i_NbrAiChannelDiff     = 8,
+               .i_AiChannelList        = 8,
+               .i_AiMaxdata            = 65535,
+               .pr_AiRangelist         = &range_apci3XXX_ai,
+               .i_NbrDiChannel         = 4,
+               .i_NbrDoChannel         = 4,
+               .i_DoMaxdata            = 1,
+               .b_AvailableConvertUnit = 6,
+               .ui_MinAcquisitiontimeNs = 5000,
+               .interrupt              = v_APCI3XXX_Interrupt,
+               .reset                  = i_APCI3XXX_Reset,
+               .ai_config              = i_APCI3XXX_InsnConfigAnalogInput,
+               .ai_read                = i_APCI3XXX_InsnReadAnalogInput,
+               .di_read                = i_APCI3XXX_InsnReadDigitalInput,
+               .di_bits                = i_APCI3XXX_InsnBitsDigitalInput,
+               .do_write               = i_APCI3XXX_InsnWriteDigitalOutput,
+               .do_bits                = i_APCI3XXX_InsnBitsDigitalOutput,
+               .do_read                = i_APCI3XXX_InsnReadDigitalOutput,
+       }, {
+               .pc_DriverName          = "apci3002-4",
+               .i_VendorId             = PCI_VENDOR_ID_ADDIDATA,
+               .i_DeviceId             = 0x3004,
+               .i_IorangeBase0         = 256,
+               .i_IorangeBase1         = 256,
+               .i_IorangeBase2         = 256,
+               .i_IorangeBase3         = 256,
+               .i_PCIEeprom            = ADDIDATA_NO_EEPROM,
+               .pc_EepromChip          = ADDIDATA_9054,
+               .i_NbrAiChannelDiff     = 4,
+               .i_AiChannelList        = 4,
+               .i_AiMaxdata            = 65535,
+               .pr_AiRangelist         = &range_apci3XXX_ai,
+               .i_NbrDiChannel         = 4,
+               .i_NbrDoChannel         = 4,
+               .i_DoMaxdata            = 1,
+               .b_AvailableConvertUnit = 6,
+               .ui_MinAcquisitiontimeNs = 5000,
+               .interrupt              = v_APCI3XXX_Interrupt,
+               .reset                  = i_APCI3XXX_Reset,
+               .ai_config              = i_APCI3XXX_InsnConfigAnalogInput,
+               .ai_read                = i_APCI3XXX_InsnReadAnalogInput,
+               .di_read                = i_APCI3XXX_InsnReadDigitalInput,
+               .di_bits                = i_APCI3XXX_InsnBitsDigitalInput,
+               .do_write               = i_APCI3XXX_InsnWriteDigitalOutput,
+               .do_bits                = i_APCI3XXX_InsnBitsDigitalOutput,
+               .do_read                = i_APCI3XXX_InsnReadDigitalOutput,
+       }, {
+               .pc_DriverName          = "apci3500",
+               .i_VendorId             = PCI_VENDOR_ID_ADDIDATA,
+               .i_DeviceId             = 0x3024,
+               .i_IorangeBase0         = 256,
+               .i_IorangeBase1         = 256,
+               .i_IorangeBase2         = 256,
+               .i_IorangeBase3         = 256,
+               .i_PCIEeprom            = ADDIDATA_NO_EEPROM,
+               .pc_EepromChip          = ADDIDATA_9054,
+               .i_NbrAoChannel         = 4,
+               .i_AoMaxdata            = 4095,
+               .pr_AoRangelist         = &range_apci3XXX_ao,
+               .i_NbrTTLChannel        = 24,
+               .pr_TTLRangelist        = &range_apci3XXX_ttl,
+               .interrupt              = v_APCI3XXX_Interrupt,
+               .reset                  = i_APCI3XXX_Reset,
+               .ao_write               = i_APCI3XXX_InsnWriteAnalogOutput,
+               .ttl_config             = i_APCI3XXX_InsnConfigInitTTLIO,
+               .ttl_bits               = i_APCI3XXX_InsnBitsTTLIO,
+               .ttl_read               = i_APCI3XXX_InsnReadTTLIO,
+               .ttl_write              = i_APCI3XXX_InsnWriteTTLIO,
+       },
 #endif
 };