addi_apci_3xxx.c revision 98d3385dd68381dd2738a825f8513366c44018b2
133782dd5edf8db3cdb7c81a3523bf743dd0209b7H Hartley Sweeten#include <linux/pci.h> 233782dd5edf8db3cdb7c81a3523bf743dd0209b7H Hartley Sweeten 33d41c44370a9a1e78e53c9997289347ec97d46eeH Hartley Sweeten#include "../comedidev.h" 43d41c44370a9a1e78e53c9997289347ec97d46eeH Hartley Sweeten#include "comedi_fc.h" 5bf36f012c7ddaff083bb0ef187feddf4d85507a0H Hartley Sweeten#include "amcc_s5933.h" 63d41c44370a9a1e78e53c9997289347ec97d46eeH Hartley Sweeten 73d41c44370a9a1e78e53c9997289347ec97d46eeH Hartley Sweeten#include "addi-data/addi_common.h" 83d41c44370a9a1e78e53c9997289347ec97d46eeH Hartley Sweeten 9bf6a1578c10a4f3ef94a3c744267f18f9c3642bdH Hartley Sweeten#include "addi-data/addi_eeprom.c" 10bf6a1578c10a4f3ef94a3c744267f18f9c3642bdH Hartley Sweeten#include "addi-data/hwdrv_apci3xxx.c" 1198d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten 1298d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten#ifndef COMEDI_SUBD_TTLIO 1398d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten#define COMEDI_SUBD_TTLIO 11 /* Digital Input Output But TTL */ 1498d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten#endif 15c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten 16dbae4575661da840353f12dd76499ad587c92519H Hartley Sweetenenum apci3xxx_boardid { 17dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten BOARD_APCI3000_16, 18dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten BOARD_APCI3000_8, 19dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten BOARD_APCI3000_4, 20dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten BOARD_APCI3006_16, 21dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten BOARD_APCI3006_8, 22dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten BOARD_APCI3006_4, 23dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten BOARD_APCI3010_16, 24dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten BOARD_APCI3010_8, 25dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten BOARD_APCI3010_4, 26dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten BOARD_APCI3016_16, 27dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten BOARD_APCI3016_8, 28dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten BOARD_APCI3016_4, 29dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten BOARD_APCI3100_16_4, 30dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten BOARD_APCI3100_8_4, 31dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten BOARD_APCI3106_16_4, 32dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten BOARD_APCI3106_8_4, 33dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten BOARD_APCI3110_16_4, 34dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten BOARD_APCI3110_8_4, 35dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten BOARD_APCI3116_16_4, 36dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten BOARD_APCI3116_8_4, 37dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten BOARD_APCI3003, 38dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten BOARD_APCI3002_16, 39dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten BOARD_APCI3002_8, 40dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten BOARD_APCI3002_4, 41dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten BOARD_APCI3500, 42dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten}; 43dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten 4420a22b706b8ee37d1a2282f2c9bf7f2c73a5a7a5H Hartley Sweetenstatic const struct addi_board apci3xxx_boardtypes[] = { 45dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten [BOARD_APCI3000_16] = { 46c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_DriverName = "apci3000-16", 47c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_IorangeBase1 = 256, 48c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_PCIEeprom = ADDIDATA_NO_EEPROM, 49c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_EepromChip = ADDIDATA_9054, 50c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannel = 16, 51c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannelDiff = 8, 52c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiChannelList = 16, 53c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiMaxdata = 4095, 54c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pr_AiRangelist = &range_apci3XXX_ai, 55c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrTTLChannel = 24, 56c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .b_AvailableConvertUnit = 6, 57c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ui_MinAcquisitiontimeNs = 10000, 58c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .interrupt = v_APCI3XXX_Interrupt, 597fd1fd30fd9a12b037045c2e9eba120479e0f329H Hartley Sweeten .reset = apci3xxx_reset, 60c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_config = i_APCI3XXX_InsnConfigAnalogInput, 61c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_read = i_APCI3XXX_InsnReadAnalogInput, 62c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_config = i_APCI3XXX_InsnConfigInitTTLIO, 63c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_bits = i_APCI3XXX_InsnBitsTTLIO, 64c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_read = i_APCI3XXX_InsnReadTTLIO, 65c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_write = i_APCI3XXX_InsnWriteTTLIO, 66dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten }, 67dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten [BOARD_APCI3000_8] = { 68c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_DriverName = "apci3000-8", 69c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_IorangeBase1 = 256, 70c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_PCIEeprom = ADDIDATA_NO_EEPROM, 71c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_EepromChip = ADDIDATA_9054, 72c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannel = 8, 73c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannelDiff = 4, 74c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiChannelList = 8, 75c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiMaxdata = 4095, 76c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pr_AiRangelist = &range_apci3XXX_ai, 77c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrTTLChannel = 24, 78c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .b_AvailableConvertUnit = 6, 79c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ui_MinAcquisitiontimeNs = 10000, 80c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .interrupt = v_APCI3XXX_Interrupt, 817fd1fd30fd9a12b037045c2e9eba120479e0f329H Hartley Sweeten .reset = apci3xxx_reset, 82c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_config = i_APCI3XXX_InsnConfigAnalogInput, 83c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_read = i_APCI3XXX_InsnReadAnalogInput, 84c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_config = i_APCI3XXX_InsnConfigInitTTLIO, 85c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_bits = i_APCI3XXX_InsnBitsTTLIO, 86c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_read = i_APCI3XXX_InsnReadTTLIO, 87c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_write = i_APCI3XXX_InsnWriteTTLIO, 88dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten }, 89dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten [BOARD_APCI3000_4] = { 90c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_DriverName = "apci3000-4", 91c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_IorangeBase1 = 256, 92c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_PCIEeprom = ADDIDATA_NO_EEPROM, 93c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_EepromChip = ADDIDATA_9054, 94c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannel = 4, 95c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannelDiff = 2, 96c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiChannelList = 4, 97c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiMaxdata = 4095, 98c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pr_AiRangelist = &range_apci3XXX_ai, 99c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrTTLChannel = 24, 100c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .b_AvailableConvertUnit = 6, 101c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ui_MinAcquisitiontimeNs = 10000, 102c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .interrupt = v_APCI3XXX_Interrupt, 1037fd1fd30fd9a12b037045c2e9eba120479e0f329H Hartley Sweeten .reset = apci3xxx_reset, 104c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_config = i_APCI3XXX_InsnConfigAnalogInput, 105c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_read = i_APCI3XXX_InsnReadAnalogInput, 106c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_config = i_APCI3XXX_InsnConfigInitTTLIO, 107c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_bits = i_APCI3XXX_InsnBitsTTLIO, 108c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_read = i_APCI3XXX_InsnReadTTLIO, 109c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_write = i_APCI3XXX_InsnWriteTTLIO, 110dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten }, 111dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten [BOARD_APCI3006_16] = { 112c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_DriverName = "apci3006-16", 113c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_IorangeBase1 = 256, 114c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_PCIEeprom = ADDIDATA_NO_EEPROM, 115c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_EepromChip = ADDIDATA_9054, 116c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannel = 16, 117c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannelDiff = 8, 118c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiChannelList = 16, 119c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiMaxdata = 65535, 120c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pr_AiRangelist = &range_apci3XXX_ai, 121c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrTTLChannel = 24, 122c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .b_AvailableConvertUnit = 6, 123c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ui_MinAcquisitiontimeNs = 10000, 124c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .interrupt = v_APCI3XXX_Interrupt, 1257fd1fd30fd9a12b037045c2e9eba120479e0f329H Hartley Sweeten .reset = apci3xxx_reset, 126c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_config = i_APCI3XXX_InsnConfigAnalogInput, 127c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_read = i_APCI3XXX_InsnReadAnalogInput, 128c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_config = i_APCI3XXX_InsnConfigInitTTLIO, 129c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_bits = i_APCI3XXX_InsnBitsTTLIO, 130c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_read = i_APCI3XXX_InsnReadTTLIO, 131c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_write = i_APCI3XXX_InsnWriteTTLIO, 132dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten }, 133dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten [BOARD_APCI3006_8] = { 134c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_DriverName = "apci3006-8", 135c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_IorangeBase1 = 256, 136c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_PCIEeprom = ADDIDATA_NO_EEPROM, 137c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_EepromChip = ADDIDATA_9054, 138c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannel = 8, 139c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannelDiff = 4, 140c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiChannelList = 8, 141c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiMaxdata = 65535, 142c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pr_AiRangelist = &range_apci3XXX_ai, 143c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrTTLChannel = 24, 144c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .b_AvailableConvertUnit = 6, 145c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ui_MinAcquisitiontimeNs = 10000, 146c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .interrupt = v_APCI3XXX_Interrupt, 1477fd1fd30fd9a12b037045c2e9eba120479e0f329H Hartley Sweeten .reset = apci3xxx_reset, 148c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_config = i_APCI3XXX_InsnConfigAnalogInput, 149c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_read = i_APCI3XXX_InsnReadAnalogInput, 150c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_config = i_APCI3XXX_InsnConfigInitTTLIO, 151c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_bits = i_APCI3XXX_InsnBitsTTLIO, 152c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_read = i_APCI3XXX_InsnReadTTLIO, 153c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_write = i_APCI3XXX_InsnWriteTTLIO, 154dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten }, 155dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten [BOARD_APCI3006_4] = { 156c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_DriverName = "apci3006-4", 157c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_IorangeBase1 = 256, 158c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_PCIEeprom = ADDIDATA_NO_EEPROM, 159c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_EepromChip = ADDIDATA_9054, 160c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannel = 4, 161c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannelDiff = 2, 162c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiChannelList = 4, 163c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiMaxdata = 65535, 164c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pr_AiRangelist = &range_apci3XXX_ai, 165c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrTTLChannel = 24, 166c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .b_AvailableConvertUnit = 6, 167c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ui_MinAcquisitiontimeNs = 10000, 168c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .interrupt = v_APCI3XXX_Interrupt, 1697fd1fd30fd9a12b037045c2e9eba120479e0f329H Hartley Sweeten .reset = apci3xxx_reset, 170c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_config = i_APCI3XXX_InsnConfigAnalogInput, 171c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_read = i_APCI3XXX_InsnReadAnalogInput, 172c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_config = i_APCI3XXX_InsnConfigInitTTLIO, 173c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_bits = i_APCI3XXX_InsnBitsTTLIO, 174c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_read = i_APCI3XXX_InsnReadTTLIO, 175c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_write = i_APCI3XXX_InsnWriteTTLIO, 176dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten }, 177dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten [BOARD_APCI3010_16] = { 178c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_DriverName = "apci3010-16", 179c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_IorangeBase1 = 256, 180c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_PCIEeprom = ADDIDATA_NO_EEPROM, 181c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_EepromChip = ADDIDATA_9054, 182c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannel = 16, 183c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannelDiff = 8, 184c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiChannelList = 16, 185c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiMaxdata = 4095, 186c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pr_AiRangelist = &range_apci3XXX_ai, 187c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrDiChannel = 4, 188c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrDoChannel = 4, 189c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_DoMaxdata = 1, 190c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrTTLChannel = 24, 191c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .b_AvailableConvertUnit = 6, 192c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ui_MinAcquisitiontimeNs = 5000, 193c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .interrupt = v_APCI3XXX_Interrupt, 1947fd1fd30fd9a12b037045c2e9eba120479e0f329H Hartley Sweeten .reset = apci3xxx_reset, 195c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_config = i_APCI3XXX_InsnConfigAnalogInput, 196c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_read = i_APCI3XXX_InsnReadAnalogInput, 19710f71c7845686b7f93113f1fe6dbc3718d8a8673H Hartley Sweeten .di_bits = apci3xxx_di_insn_bits, 1982b70a4f4f97b70e8cd9d8a16983758aa4fc3450bH Hartley Sweeten .do_bits = apci3xxx_do_insn_bits, 199c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_config = i_APCI3XXX_InsnConfigInitTTLIO, 200c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_bits = i_APCI3XXX_InsnBitsTTLIO, 201c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_read = i_APCI3XXX_InsnReadTTLIO, 202c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_write = i_APCI3XXX_InsnWriteTTLIO, 203dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten }, 204dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten [BOARD_APCI3010_8] = { 205c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_DriverName = "apci3010-8", 206c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_IorangeBase1 = 256, 207c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_PCIEeprom = ADDIDATA_NO_EEPROM, 208c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_EepromChip = ADDIDATA_9054, 209c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannel = 8, 210c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannelDiff = 4, 211c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiChannelList = 8, 212c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiMaxdata = 4095, 213c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pr_AiRangelist = &range_apci3XXX_ai, 214c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrDiChannel = 4, 215c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrDoChannel = 4, 216c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_DoMaxdata = 1, 217c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrTTLChannel = 24, 218c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .b_AvailableConvertUnit = 6, 219c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ui_MinAcquisitiontimeNs = 5000, 220c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .interrupt = v_APCI3XXX_Interrupt, 2217fd1fd30fd9a12b037045c2e9eba120479e0f329H Hartley Sweeten .reset = apci3xxx_reset, 222c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_config = i_APCI3XXX_InsnConfigAnalogInput, 223c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_read = i_APCI3XXX_InsnReadAnalogInput, 22410f71c7845686b7f93113f1fe6dbc3718d8a8673H Hartley Sweeten .di_bits = apci3xxx_di_insn_bits, 2252b70a4f4f97b70e8cd9d8a16983758aa4fc3450bH Hartley Sweeten .do_bits = apci3xxx_do_insn_bits, 226c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_config = i_APCI3XXX_InsnConfigInitTTLIO, 227c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_bits = i_APCI3XXX_InsnBitsTTLIO, 228c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_read = i_APCI3XXX_InsnReadTTLIO, 229c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_write = i_APCI3XXX_InsnWriteTTLIO, 230dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten }, 231dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten [BOARD_APCI3010_4] = { 232c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_DriverName = "apci3010-4", 233c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_IorangeBase1 = 256, 234c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_PCIEeprom = ADDIDATA_NO_EEPROM, 235c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_EepromChip = ADDIDATA_9054, 236c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannel = 4, 237c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannelDiff = 2, 238c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiChannelList = 4, 239c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiMaxdata = 4095, 240c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pr_AiRangelist = &range_apci3XXX_ai, 241c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrDiChannel = 4, 242c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrDoChannel = 4, 243c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_DoMaxdata = 1, 244c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrTTLChannel = 24, 245c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .b_AvailableConvertUnit = 6, 246c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ui_MinAcquisitiontimeNs = 5000, 247c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .interrupt = v_APCI3XXX_Interrupt, 2487fd1fd30fd9a12b037045c2e9eba120479e0f329H Hartley Sweeten .reset = apci3xxx_reset, 249c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_config = i_APCI3XXX_InsnConfigAnalogInput, 250c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_read = i_APCI3XXX_InsnReadAnalogInput, 25110f71c7845686b7f93113f1fe6dbc3718d8a8673H Hartley Sweeten .di_bits = apci3xxx_di_insn_bits, 2522b70a4f4f97b70e8cd9d8a16983758aa4fc3450bH Hartley Sweeten .do_bits = apci3xxx_do_insn_bits, 253c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_config = i_APCI3XXX_InsnConfigInitTTLIO, 254c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_bits = i_APCI3XXX_InsnBitsTTLIO, 255c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_read = i_APCI3XXX_InsnReadTTLIO, 256c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_write = i_APCI3XXX_InsnWriteTTLIO, 257dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten }, 258dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten [BOARD_APCI3016_16] = { 259c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_DriverName = "apci3016-16", 260c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_IorangeBase1 = 256, 261c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_PCIEeprom = ADDIDATA_NO_EEPROM, 262c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_EepromChip = ADDIDATA_9054, 263c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannel = 16, 264c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannelDiff = 8, 265c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiChannelList = 16, 266c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiMaxdata = 65535, 267c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pr_AiRangelist = &range_apci3XXX_ai, 268c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrDiChannel = 4, 269c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrDoChannel = 4, 270c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_DoMaxdata = 1, 271c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrTTLChannel = 24, 272c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .b_AvailableConvertUnit = 6, 273c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ui_MinAcquisitiontimeNs = 5000, 274c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .interrupt = v_APCI3XXX_Interrupt, 2757fd1fd30fd9a12b037045c2e9eba120479e0f329H Hartley Sweeten .reset = apci3xxx_reset, 276c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_config = i_APCI3XXX_InsnConfigAnalogInput, 277c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_read = i_APCI3XXX_InsnReadAnalogInput, 27810f71c7845686b7f93113f1fe6dbc3718d8a8673H Hartley Sweeten .di_bits = apci3xxx_di_insn_bits, 2792b70a4f4f97b70e8cd9d8a16983758aa4fc3450bH Hartley Sweeten .do_bits = apci3xxx_do_insn_bits, 280c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_config = i_APCI3XXX_InsnConfigInitTTLIO, 281c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_bits = i_APCI3XXX_InsnBitsTTLIO, 282c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_read = i_APCI3XXX_InsnReadTTLIO, 283c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_write = i_APCI3XXX_InsnWriteTTLIO, 284dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten }, 285dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten [BOARD_APCI3016_8] = { 286c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_DriverName = "apci3016-8", 287c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_IorangeBase1 = 256, 288c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_PCIEeprom = ADDIDATA_NO_EEPROM, 289c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_EepromChip = ADDIDATA_9054, 290c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannel = 8, 291c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannelDiff = 4, 292c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiChannelList = 8, 293c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiMaxdata = 65535, 294c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pr_AiRangelist = &range_apci3XXX_ai, 295c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrDiChannel = 4, 296c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrDoChannel = 4, 297c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_DoMaxdata = 1, 298c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrTTLChannel = 24, 299c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .b_AvailableConvertUnit = 6, 300c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ui_MinAcquisitiontimeNs = 5000, 301c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .interrupt = v_APCI3XXX_Interrupt, 3027fd1fd30fd9a12b037045c2e9eba120479e0f329H Hartley Sweeten .reset = apci3xxx_reset, 303c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_config = i_APCI3XXX_InsnConfigAnalogInput, 304c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_read = i_APCI3XXX_InsnReadAnalogInput, 30510f71c7845686b7f93113f1fe6dbc3718d8a8673H Hartley Sweeten .di_bits = apci3xxx_di_insn_bits, 3062b70a4f4f97b70e8cd9d8a16983758aa4fc3450bH Hartley Sweeten .do_bits = apci3xxx_do_insn_bits, 307c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_config = i_APCI3XXX_InsnConfigInitTTLIO, 308c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_bits = i_APCI3XXX_InsnBitsTTLIO, 309c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_read = i_APCI3XXX_InsnReadTTLIO, 310c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_write = i_APCI3XXX_InsnWriteTTLIO, 311dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten }, 312dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten [BOARD_APCI3016_4] = { 313c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_DriverName = "apci3016-4", 314c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_IorangeBase1 = 256, 315c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_PCIEeprom = ADDIDATA_NO_EEPROM, 316c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_EepromChip = ADDIDATA_9054, 317c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannel = 4, 318c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannelDiff = 2, 319c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiChannelList = 4, 320c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiMaxdata = 65535, 321c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pr_AiRangelist = &range_apci3XXX_ai, 322c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrDiChannel = 4, 323c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrDoChannel = 4, 324c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_DoMaxdata = 1, 325c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrTTLChannel = 24, 326c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .b_AvailableConvertUnit = 6, 327c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ui_MinAcquisitiontimeNs = 5000, 328c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .interrupt = v_APCI3XXX_Interrupt, 3297fd1fd30fd9a12b037045c2e9eba120479e0f329H Hartley Sweeten .reset = apci3xxx_reset, 330c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_config = i_APCI3XXX_InsnConfigAnalogInput, 331c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_read = i_APCI3XXX_InsnReadAnalogInput, 33210f71c7845686b7f93113f1fe6dbc3718d8a8673H Hartley Sweeten .di_bits = apci3xxx_di_insn_bits, 3332b70a4f4f97b70e8cd9d8a16983758aa4fc3450bH Hartley Sweeten .do_bits = apci3xxx_do_insn_bits, 334c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_config = i_APCI3XXX_InsnConfigInitTTLIO, 335c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_bits = i_APCI3XXX_InsnBitsTTLIO, 336c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_read = i_APCI3XXX_InsnReadTTLIO, 337c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_write = i_APCI3XXX_InsnWriteTTLIO, 338dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten }, 339dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten [BOARD_APCI3100_16_4] = { 340c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_DriverName = "apci3100-16-4", 341c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_IorangeBase1 = 256, 342c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_PCIEeprom = ADDIDATA_NO_EEPROM, 343c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_EepromChip = ADDIDATA_9054, 344c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannel = 16, 345c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannelDiff = 8, 346c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiChannelList = 16, 347c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAoChannel = 4, 348c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiMaxdata = 4095, 349c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AoMaxdata = 4095, 350c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pr_AiRangelist = &range_apci3XXX_ai, 351c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pr_AoRangelist = &range_apci3XXX_ao, 352c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrTTLChannel = 24, 353c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .b_AvailableConvertUnit = 6, 354c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ui_MinAcquisitiontimeNs = 10000, 355c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .interrupt = v_APCI3XXX_Interrupt, 3567fd1fd30fd9a12b037045c2e9eba120479e0f329H Hartley Sweeten .reset = apci3xxx_reset, 357c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_config = i_APCI3XXX_InsnConfigAnalogInput, 358c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_read = i_APCI3XXX_InsnReadAnalogInput, 359c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ao_write = i_APCI3XXX_InsnWriteAnalogOutput, 360c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_config = i_APCI3XXX_InsnConfigInitTTLIO, 361c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_bits = i_APCI3XXX_InsnBitsTTLIO, 362c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_read = i_APCI3XXX_InsnReadTTLIO, 363c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_write = i_APCI3XXX_InsnWriteTTLIO, 364dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten }, 365dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten [BOARD_APCI3100_8_4] = { 366c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_DriverName = "apci3100-8-4", 367c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_IorangeBase1 = 256, 368c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_PCIEeprom = ADDIDATA_NO_EEPROM, 369c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_EepromChip = ADDIDATA_9054, 370c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannel = 8, 371c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannelDiff = 4, 372c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiChannelList = 8, 373c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAoChannel = 4, 374c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiMaxdata = 4095, 375c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AoMaxdata = 4095, 376c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pr_AiRangelist = &range_apci3XXX_ai, 377c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pr_AoRangelist = &range_apci3XXX_ao, 378c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrTTLChannel = 24, 379c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .b_AvailableConvertUnit = 6, 380c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ui_MinAcquisitiontimeNs = 10000, 381c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .interrupt = v_APCI3XXX_Interrupt, 3827fd1fd30fd9a12b037045c2e9eba120479e0f329H Hartley Sweeten .reset = apci3xxx_reset, 383c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_config = i_APCI3XXX_InsnConfigAnalogInput, 384c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_read = i_APCI3XXX_InsnReadAnalogInput, 385c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ao_write = i_APCI3XXX_InsnWriteAnalogOutput, 386c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_config = i_APCI3XXX_InsnConfigInitTTLIO, 387c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_bits = i_APCI3XXX_InsnBitsTTLIO, 388c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_read = i_APCI3XXX_InsnReadTTLIO, 389c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_write = i_APCI3XXX_InsnWriteTTLIO, 390dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten }, 391dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten [BOARD_APCI3106_16_4] = { 392c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_DriverName = "apci3106-16-4", 393c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_IorangeBase1 = 256, 394c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_PCIEeprom = ADDIDATA_NO_EEPROM, 395c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_EepromChip = ADDIDATA_9054, 396c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannel = 16, 397c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannelDiff = 8, 398c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiChannelList = 16, 399c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAoChannel = 4, 400c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiMaxdata = 65535, 401c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AoMaxdata = 4095, 402c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pr_AiRangelist = &range_apci3XXX_ai, 403c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pr_AoRangelist = &range_apci3XXX_ao, 404c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrTTLChannel = 24, 405c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .b_AvailableConvertUnit = 6, 406c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ui_MinAcquisitiontimeNs = 10000, 407c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .interrupt = v_APCI3XXX_Interrupt, 4087fd1fd30fd9a12b037045c2e9eba120479e0f329H Hartley Sweeten .reset = apci3xxx_reset, 409c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_config = i_APCI3XXX_InsnConfigAnalogInput, 410c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_read = i_APCI3XXX_InsnReadAnalogInput, 411c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ao_write = i_APCI3XXX_InsnWriteAnalogOutput, 412c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_config = i_APCI3XXX_InsnConfigInitTTLIO, 413c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_bits = i_APCI3XXX_InsnBitsTTLIO, 414c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_read = i_APCI3XXX_InsnReadTTLIO, 415c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_write = i_APCI3XXX_InsnWriteTTLIO, 416dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten }, 417dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten [BOARD_APCI3106_8_4] = { 418c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_DriverName = "apci3106-8-4", 419c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_IorangeBase1 = 256, 420c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_PCIEeprom = ADDIDATA_NO_EEPROM, 421c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_EepromChip = ADDIDATA_9054, 422c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannel = 8, 423c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannelDiff = 4, 424c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiChannelList = 8, 425c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAoChannel = 4, 426c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiMaxdata = 65535, 427c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AoMaxdata = 4095, 428c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pr_AiRangelist = &range_apci3XXX_ai, 429c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pr_AoRangelist = &range_apci3XXX_ao, 430c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrTTLChannel = 24, 431c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .b_AvailableConvertUnit = 6, 432c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ui_MinAcquisitiontimeNs = 10000, 433c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .interrupt = v_APCI3XXX_Interrupt, 4347fd1fd30fd9a12b037045c2e9eba120479e0f329H Hartley Sweeten .reset = apci3xxx_reset, 435c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_config = i_APCI3XXX_InsnConfigAnalogInput, 436c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_read = i_APCI3XXX_InsnReadAnalogInput, 437c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ao_write = i_APCI3XXX_InsnWriteAnalogOutput, 438c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_config = i_APCI3XXX_InsnConfigInitTTLIO, 439c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_bits = i_APCI3XXX_InsnBitsTTLIO, 440c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_read = i_APCI3XXX_InsnReadTTLIO, 441c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_write = i_APCI3XXX_InsnWriteTTLIO, 442dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten }, 443dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten [BOARD_APCI3110_16_4] = { 444c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_DriverName = "apci3110-16-4", 445c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_IorangeBase1 = 256, 446c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_PCIEeprom = ADDIDATA_NO_EEPROM, 447c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_EepromChip = ADDIDATA_9054, 448c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannel = 16, 449c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannelDiff = 8, 450c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiChannelList = 16, 451c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAoChannel = 4, 452c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiMaxdata = 4095, 453c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AoMaxdata = 4095, 454c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pr_AiRangelist = &range_apci3XXX_ai, 455c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pr_AoRangelist = &range_apci3XXX_ao, 456c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrDiChannel = 4, 457c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrDoChannel = 4, 458c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_DoMaxdata = 1, 459c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrTTLChannel = 24, 460c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .b_AvailableConvertUnit = 6, 461c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ui_MinAcquisitiontimeNs = 5000, 462c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .interrupt = v_APCI3XXX_Interrupt, 4637fd1fd30fd9a12b037045c2e9eba120479e0f329H Hartley Sweeten .reset = apci3xxx_reset, 464c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_config = i_APCI3XXX_InsnConfigAnalogInput, 465c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_read = i_APCI3XXX_InsnReadAnalogInput, 466c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ao_write = i_APCI3XXX_InsnWriteAnalogOutput, 46710f71c7845686b7f93113f1fe6dbc3718d8a8673H Hartley Sweeten .di_bits = apci3xxx_di_insn_bits, 4682b70a4f4f97b70e8cd9d8a16983758aa4fc3450bH Hartley Sweeten .do_bits = apci3xxx_do_insn_bits, 469c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_config = i_APCI3XXX_InsnConfigInitTTLIO, 470c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_bits = i_APCI3XXX_InsnBitsTTLIO, 471c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_read = i_APCI3XXX_InsnReadTTLIO, 472c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_write = i_APCI3XXX_InsnWriteTTLIO, 473dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten }, 474dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten [BOARD_APCI3110_8_4] = { 475c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_DriverName = "apci3110-8-4", 476c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_IorangeBase1 = 256, 477c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_PCIEeprom = ADDIDATA_NO_EEPROM, 478c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_EepromChip = ADDIDATA_9054, 479c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannel = 8, 480c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannelDiff = 4, 481c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiChannelList = 8, 482c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAoChannel = 4, 483c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiMaxdata = 4095, 484c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AoMaxdata = 4095, 485c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pr_AiRangelist = &range_apci3XXX_ai, 486c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pr_AoRangelist = &range_apci3XXX_ao, 487c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrDiChannel = 4, 488c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrDoChannel = 4, 489c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_DoMaxdata = 1, 490c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrTTLChannel = 24, 491c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .b_AvailableConvertUnit = 6, 492c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ui_MinAcquisitiontimeNs = 5000, 493c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .interrupt = v_APCI3XXX_Interrupt, 4947fd1fd30fd9a12b037045c2e9eba120479e0f329H Hartley Sweeten .reset = apci3xxx_reset, 495c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_config = i_APCI3XXX_InsnConfigAnalogInput, 496c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_read = i_APCI3XXX_InsnReadAnalogInput, 497c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ao_write = i_APCI3XXX_InsnWriteAnalogOutput, 49810f71c7845686b7f93113f1fe6dbc3718d8a8673H Hartley Sweeten .di_bits = apci3xxx_di_insn_bits, 4992b70a4f4f97b70e8cd9d8a16983758aa4fc3450bH Hartley Sweeten .do_bits = apci3xxx_do_insn_bits, 500c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_config = i_APCI3XXX_InsnConfigInitTTLIO, 501c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_bits = i_APCI3XXX_InsnBitsTTLIO, 502c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_read = i_APCI3XXX_InsnReadTTLIO, 503c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_write = i_APCI3XXX_InsnWriteTTLIO, 504dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten }, 505dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten [BOARD_APCI3116_16_4] = { 506c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_DriverName = "apci3116-16-4", 507c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_IorangeBase1 = 256, 508c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_PCIEeprom = ADDIDATA_NO_EEPROM, 509c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_EepromChip = ADDIDATA_9054, 510c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannel = 16, 511c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannelDiff = 8, 512c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiChannelList = 16, 513c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAoChannel = 4, 514c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiMaxdata = 65535, 515c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AoMaxdata = 4095, 516c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pr_AiRangelist = &range_apci3XXX_ai, 517c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pr_AoRangelist = &range_apci3XXX_ao, 518c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrDiChannel = 4, 519c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrDoChannel = 4, 520c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_DoMaxdata = 1, 521c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrTTLChannel = 24, 522c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .b_AvailableConvertUnit = 6, 523c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ui_MinAcquisitiontimeNs = 5000, 524c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .interrupt = v_APCI3XXX_Interrupt, 5257fd1fd30fd9a12b037045c2e9eba120479e0f329H Hartley Sweeten .reset = apci3xxx_reset, 526c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_config = i_APCI3XXX_InsnConfigAnalogInput, 527c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_read = i_APCI3XXX_InsnReadAnalogInput, 528c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ao_write = i_APCI3XXX_InsnWriteAnalogOutput, 52910f71c7845686b7f93113f1fe6dbc3718d8a8673H Hartley Sweeten .di_bits = apci3xxx_di_insn_bits, 5302b70a4f4f97b70e8cd9d8a16983758aa4fc3450bH Hartley Sweeten .do_bits = apci3xxx_do_insn_bits, 531c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_config = i_APCI3XXX_InsnConfigInitTTLIO, 532c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_bits = i_APCI3XXX_InsnBitsTTLIO, 533c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_read = i_APCI3XXX_InsnReadTTLIO, 534c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_write = i_APCI3XXX_InsnWriteTTLIO, 535dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten }, 536dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten [BOARD_APCI3116_8_4] = { 537c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_DriverName = "apci3116-8-4", 538c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_IorangeBase1 = 256, 539c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_PCIEeprom = ADDIDATA_NO_EEPROM, 540c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_EepromChip = ADDIDATA_9054, 541c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannel = 8, 542c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannelDiff = 4, 543c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiChannelList = 8, 544c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAoChannel = 4, 545c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiMaxdata = 65535, 546c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AoMaxdata = 4095, 547c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pr_AiRangelist = &range_apci3XXX_ai, 548c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pr_AoRangelist = &range_apci3XXX_ao, 549c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrDiChannel = 4, 550c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrDoChannel = 4, 551c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_DoMaxdata = 1, 552c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrTTLChannel = 24, 553c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .b_AvailableConvertUnit = 6, 554c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ui_MinAcquisitiontimeNs = 5000, 555c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .interrupt = v_APCI3XXX_Interrupt, 5567fd1fd30fd9a12b037045c2e9eba120479e0f329H Hartley Sweeten .reset = apci3xxx_reset, 557c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_config = i_APCI3XXX_InsnConfigAnalogInput, 558c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_read = i_APCI3XXX_InsnReadAnalogInput, 559c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ao_write = i_APCI3XXX_InsnWriteAnalogOutput, 56010f71c7845686b7f93113f1fe6dbc3718d8a8673H Hartley Sweeten .di_bits = apci3xxx_di_insn_bits, 5612b70a4f4f97b70e8cd9d8a16983758aa4fc3450bH Hartley Sweeten .do_bits = apci3xxx_do_insn_bits, 562c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_config = i_APCI3XXX_InsnConfigInitTTLIO, 563c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_bits = i_APCI3XXX_InsnBitsTTLIO, 564c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_read = i_APCI3XXX_InsnReadTTLIO, 565c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_write = i_APCI3XXX_InsnWriteTTLIO, 566dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten }, 567dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten [BOARD_APCI3003] = { 568c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_DriverName = "apci3003", 569c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_IorangeBase1 = 256, 570c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_PCIEeprom = ADDIDATA_NO_EEPROM, 571c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_EepromChip = ADDIDATA_9054, 572c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannelDiff = 4, 573c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiChannelList = 4, 574c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiMaxdata = 65535, 575c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pr_AiRangelist = &range_apci3XXX_ai, 576c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrDiChannel = 4, 577c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrDoChannel = 4, 578c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_DoMaxdata = 1, 579c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .b_AvailableConvertUnit = 7, 580c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ui_MinAcquisitiontimeNs = 2500, 581c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .interrupt = v_APCI3XXX_Interrupt, 5827fd1fd30fd9a12b037045c2e9eba120479e0f329H Hartley Sweeten .reset = apci3xxx_reset, 583c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_config = i_APCI3XXX_InsnConfigAnalogInput, 584c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_read = i_APCI3XXX_InsnReadAnalogInput, 58510f71c7845686b7f93113f1fe6dbc3718d8a8673H Hartley Sweeten .di_bits = apci3xxx_di_insn_bits, 5862b70a4f4f97b70e8cd9d8a16983758aa4fc3450bH Hartley Sweeten .do_bits = apci3xxx_do_insn_bits, 587dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten }, 588dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten [BOARD_APCI3002_16] = { 589c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_DriverName = "apci3002-16", 590c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_IorangeBase1 = 256, 591c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_PCIEeprom = ADDIDATA_NO_EEPROM, 592c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_EepromChip = ADDIDATA_9054, 593c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannelDiff = 16, 594c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiChannelList = 16, 595c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiMaxdata = 65535, 596c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pr_AiRangelist = &range_apci3XXX_ai, 597c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrDiChannel = 4, 598c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrDoChannel = 4, 599c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_DoMaxdata = 1, 600c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .b_AvailableConvertUnit = 6, 601c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ui_MinAcquisitiontimeNs = 5000, 602c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .interrupt = v_APCI3XXX_Interrupt, 6037fd1fd30fd9a12b037045c2e9eba120479e0f329H Hartley Sweeten .reset = apci3xxx_reset, 604c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_config = i_APCI3XXX_InsnConfigAnalogInput, 605c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_read = i_APCI3XXX_InsnReadAnalogInput, 60610f71c7845686b7f93113f1fe6dbc3718d8a8673H Hartley Sweeten .di_bits = apci3xxx_di_insn_bits, 6072b70a4f4f97b70e8cd9d8a16983758aa4fc3450bH Hartley Sweeten .do_bits = apci3xxx_do_insn_bits, 608dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten }, 609dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten [BOARD_APCI3002_8] = { 610c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_DriverName = "apci3002-8", 611c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_IorangeBase1 = 256, 612c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_PCIEeprom = ADDIDATA_NO_EEPROM, 613c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_EepromChip = ADDIDATA_9054, 614c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannelDiff = 8, 615c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiChannelList = 8, 616c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiMaxdata = 65535, 617c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pr_AiRangelist = &range_apci3XXX_ai, 618c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrDiChannel = 4, 619c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrDoChannel = 4, 620c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_DoMaxdata = 1, 621c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .b_AvailableConvertUnit = 6, 622c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ui_MinAcquisitiontimeNs = 5000, 623c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .interrupt = v_APCI3XXX_Interrupt, 6247fd1fd30fd9a12b037045c2e9eba120479e0f329H Hartley Sweeten .reset = apci3xxx_reset, 625c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_config = i_APCI3XXX_InsnConfigAnalogInput, 626c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_read = i_APCI3XXX_InsnReadAnalogInput, 62710f71c7845686b7f93113f1fe6dbc3718d8a8673H Hartley Sweeten .di_bits = apci3xxx_di_insn_bits, 6282b70a4f4f97b70e8cd9d8a16983758aa4fc3450bH Hartley Sweeten .do_bits = apci3xxx_do_insn_bits, 629dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten }, 630dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten [BOARD_APCI3002_4] = { 631c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_DriverName = "apci3002-4", 632c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_IorangeBase1 = 256, 633c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_PCIEeprom = ADDIDATA_NO_EEPROM, 634c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_EepromChip = ADDIDATA_9054, 635c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannelDiff = 4, 636c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiChannelList = 4, 637c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiMaxdata = 65535, 638c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pr_AiRangelist = &range_apci3XXX_ai, 639c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrDiChannel = 4, 640c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrDoChannel = 4, 641c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_DoMaxdata = 1, 642c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .b_AvailableConvertUnit = 6, 643c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ui_MinAcquisitiontimeNs = 5000, 644c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .interrupt = v_APCI3XXX_Interrupt, 6457fd1fd30fd9a12b037045c2e9eba120479e0f329H Hartley Sweeten .reset = apci3xxx_reset, 646c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_config = i_APCI3XXX_InsnConfigAnalogInput, 647c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_read = i_APCI3XXX_InsnReadAnalogInput, 64810f71c7845686b7f93113f1fe6dbc3718d8a8673H Hartley Sweeten .di_bits = apci3xxx_di_insn_bits, 6492b70a4f4f97b70e8cd9d8a16983758aa4fc3450bH Hartley Sweeten .do_bits = apci3xxx_do_insn_bits, 650dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten }, 651dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten [BOARD_APCI3500] = { 652c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_DriverName = "apci3500", 653c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_IorangeBase1 = 256, 654c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_PCIEeprom = ADDIDATA_NO_EEPROM, 655c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_EepromChip = ADDIDATA_9054, 656c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAoChannel = 4, 657c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AoMaxdata = 4095, 658c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pr_AoRangelist = &range_apci3XXX_ao, 659c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrTTLChannel = 24, 660c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .interrupt = v_APCI3XXX_Interrupt, 6617fd1fd30fd9a12b037045c2e9eba120479e0f329H Hartley Sweeten .reset = apci3xxx_reset, 662c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ao_write = i_APCI3XXX_InsnWriteAnalogOutput, 663c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_config = i_APCI3XXX_InsnConfigInitTTLIO, 664c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_bits = i_APCI3XXX_InsnBitsTTLIO, 665c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_read = i_APCI3XXX_InsnReadTTLIO, 666c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_write = i_APCI3XXX_InsnWriteTTLIO, 667c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten }, 668c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten}; 669c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten 67098d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweetenstatic int i_ADDIDATA_InsnReadEeprom(struct comedi_device *dev, 67198d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten struct comedi_subdevice *s, 67298d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten struct comedi_insn *insn, 67398d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten unsigned int *data) 67498d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten{ 67598d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten const struct addi_board *this_board = comedi_board(dev); 67698d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten struct addi_private *devpriv = dev->private; 67798d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten unsigned short w_Address = CR_CHAN(insn->chanspec); 67898d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten unsigned short w_Data; 67998d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten 68098d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten w_Data = addi_eeprom_readw(devpriv->i_IobaseAmcc, 68198d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten this_board->pc_EepromChip, 2 * w_Address); 68298d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten data[0] = w_Data; 68398d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten 68498d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten return insn->n; 68598d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten} 68698d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten 68798d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweetenstatic irqreturn_t v_ADDI_Interrupt(int irq, void *d) 68898d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten{ 68998d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten struct comedi_device *dev = d; 69098d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten const struct addi_board *this_board = comedi_board(dev); 69198d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten 69298d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten this_board->interrupt(irq, d); 69398d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten return IRQ_RETVAL(1); 69498d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten} 69598d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten 69698d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweetenstatic int i_ADDI_Reset(struct comedi_device *dev) 69798d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten{ 69898d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten const struct addi_board *this_board = comedi_board(dev); 69998d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten 70098d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten this_board->reset(dev); 70198d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten return 0; 70298d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten} 70398d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten 704dbae4575661da840353f12dd76499ad587c92519H Hartley Sweetenstatic int apci3xxx_auto_attach(struct comedi_device *dev, 705dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten unsigned long context) 706dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten{ 70798d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten struct pci_dev *pcidev = comedi_to_pci_dev(dev); 708dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten const struct addi_board *board = NULL; 70998d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten struct addi_private *devpriv; 71098d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten struct comedi_subdevice *s; 71198d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten int ret, n_subdevices; 71298d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten unsigned int dw_Dummy; 713dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten 714dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten if (context < ARRAY_SIZE(apci3xxx_boardtypes)) 715dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten board = &apci3xxx_boardtypes[context]; 716dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten if (!board) 717dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten return -ENODEV; 718dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten dev->board_ptr = board; 71998d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten dev->board_name = board->pc_DriverName; 72098d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten 72198d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten devpriv = kzalloc(sizeof(*devpriv), GFP_KERNEL); 72298d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten if (!devpriv) 72398d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten return -ENOMEM; 72498d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten dev->private = devpriv; 72598d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten 72698d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten ret = comedi_pci_enable(dev); 72798d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten if (ret) 72898d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten return ret; 72998d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten 73098d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten if (!board->pc_EepromChip || 73198d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten strcmp(board->pc_EepromChip, ADDIDATA_9054)) { 73298d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten /* board does not have an eeprom or is not ADDIDATA_9054 */ 73398d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten if (board->i_IorangeBase1) 73498d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten dev->iobase = pci_resource_start(pcidev, 1); 73598d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten else 73698d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten dev->iobase = pci_resource_start(pcidev, 0); 73798d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten 73898d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten devpriv->iobase = dev->iobase; 73998d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten devpriv->i_IobaseAmcc = pci_resource_start(pcidev, 0); 74098d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten devpriv->i_IobaseAddon = pci_resource_start(pcidev, 2); 74198d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten } else { 74298d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten /* board has an ADDIDATA_9054 eeprom */ 74398d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten dev->iobase = pci_resource_start(pcidev, 2); 74498d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten devpriv->iobase = pci_resource_start(pcidev, 2); 74598d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten devpriv->dw_AiBase = pci_ioremap_bar(pcidev, 3); 74698d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten } 74798d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten devpriv->i_IobaseReserved = pci_resource_start(pcidev, 3); 74898d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten 74998d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten /* Initialize parameters that can be overridden in EEPROM */ 75098d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten devpriv->s_EeParameters.i_NbrAiChannel = board->i_NbrAiChannel; 75198d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten devpriv->s_EeParameters.i_NbrAoChannel = board->i_NbrAoChannel; 75298d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten devpriv->s_EeParameters.i_AiMaxdata = board->i_AiMaxdata; 75398d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten devpriv->s_EeParameters.i_AoMaxdata = board->i_AoMaxdata; 75498d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten devpriv->s_EeParameters.i_NbrDiChannel = board->i_NbrDiChannel; 75598d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten devpriv->s_EeParameters.i_NbrDoChannel = board->i_NbrDoChannel; 75698d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten devpriv->s_EeParameters.i_DoMaxdata = board->i_DoMaxdata; 75798d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten devpriv->s_EeParameters.i_Dma = board->i_Dma; 75898d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten devpriv->s_EeParameters.i_Timer = board->i_Timer; 75998d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten devpriv->s_EeParameters.ui_MinAcquisitiontimeNs = 76098d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten board->ui_MinAcquisitiontimeNs; 76198d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten devpriv->s_EeParameters.ui_MinDelaytimeNs = board->ui_MinDelaytimeNs; 76298d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten 76398d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten /* ## */ 76498d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten 76598d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten if (pcidev->irq > 0) { 76698d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten ret = request_irq(pcidev->irq, v_ADDI_Interrupt, IRQF_SHARED, 76798d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten dev->board_name, dev); 76898d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten if (ret == 0) 76998d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten dev->irq = pcidev->irq; 77098d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten } 77198d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten 77298d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten /* Read eepeom and fill addi_board Structure */ 77398d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten 77498d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten if (board->i_PCIEeprom) { 77598d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten if (!(strcmp(board->pc_EepromChip, "S5920"))) { 77698d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten /* Set 3 wait stait */ 77798d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten if (!(strcmp(dev->board_name, "apci035"))) 77898d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten outl(0x80808082, devpriv->i_IobaseAmcc + 0x60); 77998d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten else 78098d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten outl(0x83838383, devpriv->i_IobaseAmcc + 0x60); 78198d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten 78298d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten /* Enable the interrupt for the controller */ 78398d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten dw_Dummy = inl(devpriv->i_IobaseAmcc + 0x38); 78498d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten outl(dw_Dummy | 0x2000, devpriv->i_IobaseAmcc + 0x38); 78598d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten } 78698d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten addi_eeprom_read_info(dev, pci_resource_start(pcidev, 0)); 78798d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten } 78898d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten 78998d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten n_subdevices = 7; 79098d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten ret = comedi_alloc_subdevices(dev, n_subdevices); 79198d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten if (ret) 79298d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten return ret; 79398d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten 79498d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten /* Allocate and Initialise AI Subdevice Structures */ 79598d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s = &dev->subdevices[0]; 79698d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten if (devpriv->s_EeParameters.i_NbrAiChannel || 79798d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten board->i_NbrAiChannelDiff) { 79898d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten dev->read_subdev = s; 79998d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->type = COMEDI_SUBD_AI; 80098d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->subdev_flags = SDF_READABLE | SDF_COMMON | SDF_GROUND | 80198d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten SDF_DIFF; 80298d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten if (devpriv->s_EeParameters.i_NbrAiChannel) { 80398d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->n_chan = devpriv->s_EeParameters.i_NbrAiChannel; 80498d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten devpriv->b_SingelDiff = 0; 80598d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten } else { 80698d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->n_chan = board->i_NbrAiChannelDiff; 80798d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten devpriv->b_SingelDiff = 1; 80898d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten } 80998d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->maxdata = devpriv->s_EeParameters.i_AiMaxdata; 81098d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->len_chanlist = board->i_AiChannelList; 81198d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->range_table = board->pr_AiRangelist; 81298d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten 81398d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten /* Set the initialisation flag */ 81498d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten devpriv->b_AiInitialisation = 1; 81598d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten 81698d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->insn_config = board->ai_config; 81798d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->insn_read = board->ai_read; 81898d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->insn_write = board->ai_write; 81998d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->insn_bits = board->ai_bits; 82098d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->do_cmdtest = board->ai_cmdtest; 82198d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->do_cmd = board->ai_cmd; 82298d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->cancel = board->ai_cancel; 82398d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten 82498d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten } else { 82598d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->type = COMEDI_SUBD_UNUSED; 82698d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten } 82798d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten 82898d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten /* Allocate and Initialise AO Subdevice Structures */ 82998d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s = &dev->subdevices[1]; 83098d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten if (devpriv->s_EeParameters.i_NbrAoChannel) { 83198d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->type = COMEDI_SUBD_AO; 83298d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->subdev_flags = SDF_WRITEABLE | SDF_GROUND | SDF_COMMON; 83398d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->n_chan = devpriv->s_EeParameters.i_NbrAoChannel; 83498d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->maxdata = devpriv->s_EeParameters.i_AoMaxdata; 83598d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->len_chanlist = devpriv->s_EeParameters.i_NbrAoChannel; 83698d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->range_table = board->pr_AoRangelist; 83798d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->insn_config = board->ao_config; 83898d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->insn_write = board->ao_write; 83998d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten } else { 84098d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->type = COMEDI_SUBD_UNUSED; 84198d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten } 84298d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten /* Allocate and Initialise DI Subdevice Structures */ 84398d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s = &dev->subdevices[2]; 84498d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten if (devpriv->s_EeParameters.i_NbrDiChannel) { 84598d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->type = COMEDI_SUBD_DI; 84698d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->subdev_flags = SDF_READABLE | SDF_GROUND | SDF_COMMON; 84798d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->n_chan = devpriv->s_EeParameters.i_NbrDiChannel; 84898d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->maxdata = 1; 84998d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->len_chanlist = devpriv->s_EeParameters.i_NbrDiChannel; 85098d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->range_table = &range_digital; 85198d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->io_bits = 0; /* all bits input */ 85298d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->insn_config = board->di_config; 85398d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->insn_read = board->di_read; 85498d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->insn_write = board->di_write; 85598d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->insn_bits = board->di_bits; 85698d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten } else { 85798d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->type = COMEDI_SUBD_UNUSED; 85898d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten } 85998d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten /* Allocate and Initialise DO Subdevice Structures */ 86098d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s = &dev->subdevices[3]; 86198d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten if (devpriv->s_EeParameters.i_NbrDoChannel) { 86298d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->type = COMEDI_SUBD_DO; 86398d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->subdev_flags = 86498d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten SDF_READABLE | SDF_WRITEABLE | SDF_GROUND | SDF_COMMON; 86598d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->n_chan = devpriv->s_EeParameters.i_NbrDoChannel; 86698d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->maxdata = devpriv->s_EeParameters.i_DoMaxdata; 86798d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->len_chanlist = devpriv->s_EeParameters.i_NbrDoChannel; 86898d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->range_table = &range_digital; 86998d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->io_bits = 0xf; /* all bits output */ 87098d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten 87198d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten /* insn_config - for digital output memory */ 87298d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->insn_config = board->do_config; 87398d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->insn_write = board->do_write; 87498d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->insn_bits = board->do_bits; 87598d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->insn_read = board->do_read; 87698d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten } else { 87798d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->type = COMEDI_SUBD_UNUSED; 87898d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten } 87998d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten 88098d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten /* Allocate and Initialise Timer Subdevice Structures */ 88198d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s = &dev->subdevices[4]; 88298d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten if (devpriv->s_EeParameters.i_Timer) { 88398d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->type = COMEDI_SUBD_TIMER; 88498d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->subdev_flags = SDF_WRITEABLE | SDF_GROUND | SDF_COMMON; 88598d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->n_chan = 1; 88698d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->maxdata = 0; 88798d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->len_chanlist = 1; 88898d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->range_table = &range_digital; 88998d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten 89098d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->insn_write = board->timer_write; 89198d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->insn_read = board->timer_read; 89298d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->insn_config = board->timer_config; 89398d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->insn_bits = board->timer_bits; 89498d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten } else { 89598d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->type = COMEDI_SUBD_UNUSED; 89698d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten } 89798d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten 89898d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten /* Allocate and Initialise TTL */ 89998d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s = &dev->subdevices[5]; 90098d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten if (board->i_NbrTTLChannel) { 90198d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->type = COMEDI_SUBD_TTLIO; 90298d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->subdev_flags = 90398d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten SDF_WRITEABLE | SDF_READABLE | SDF_GROUND | SDF_COMMON; 90498d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->n_chan = board->i_NbrTTLChannel; 90598d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->maxdata = 1; 90698d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->io_bits = 0; /* all bits input */ 90798d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->len_chanlist = board->i_NbrTTLChannel; 90898d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->range_table = &range_digital; 90998d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->insn_config = board->ttl_config; 91098d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->insn_bits = board->ttl_bits; 91198d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->insn_read = board->ttl_read; 91298d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->insn_write = board->ttl_write; 91398d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten } else { 91498d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->type = COMEDI_SUBD_UNUSED; 91598d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten } 91698d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten 91798d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten /* EEPROM */ 91898d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s = &dev->subdevices[6]; 91998d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten if (board->i_PCIEeprom) { 92098d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->type = COMEDI_SUBD_MEMORY; 92198d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->subdev_flags = SDF_READABLE | SDF_INTERNAL; 92298d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->n_chan = 256; 92398d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->maxdata = 0xffff; 92498d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->insn_read = i_ADDIDATA_InsnReadEeprom; 92598d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten } else { 92698d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->type = COMEDI_SUBD_UNUSED; 92798d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten } 92898d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten 92998d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten i_ADDI_Reset(dev); 93098d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten return 0; 93198d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten} 93298d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten 93398d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweetenstatic void apci3xxx_detach(struct comedi_device *dev) 93498d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten{ 93598d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten struct addi_private *devpriv = dev->private; 936dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten 93798d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten if (devpriv) { 93898d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten if (dev->iobase) 93998d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten i_ADDI_Reset(dev); 94098d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten if (dev->irq) 94198d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten free_irq(dev->irq, dev); 94298d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten if (devpriv->dw_AiBase) 94398d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten iounmap(devpriv->dw_AiBase); 94498d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten } 94598d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten comedi_pci_disable(dev); 946dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten} 947dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten 94820a22b706b8ee37d1a2282f2c9bf7f2c73a5a7a5H Hartley Sweetenstatic struct comedi_driver apci3xxx_driver = { 94920a22b706b8ee37d1a2282f2c9bf7f2c73a5a7a5H Hartley Sweeten .driver_name = "addi_apci_3xxx", 95020a22b706b8ee37d1a2282f2c9bf7f2c73a5a7a5H Hartley Sweeten .module = THIS_MODULE, 951dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten .auto_attach = apci3xxx_auto_attach, 95298d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten .detach = apci3xxx_detach, 95320a22b706b8ee37d1a2282f2c9bf7f2c73a5a7a5H Hartley Sweeten}; 95420a22b706b8ee37d1a2282f2c9bf7f2c73a5a7a5H Hartley Sweeten 955a690b7e535f2f97a3a05ee570715abeb60a8910fBill Pembertonstatic int apci3xxx_pci_probe(struct pci_dev *dev, 956b8f4ac237e382accd4b30c75043939f7ed9e79a6H Hartley Sweeten const struct pci_device_id *id) 95720a22b706b8ee37d1a2282f2c9bf7f2c73a5a7a5H Hartley Sweeten{ 958b8f4ac237e382accd4b30c75043939f7ed9e79a6H Hartley Sweeten return comedi_pci_auto_config(dev, &apci3xxx_driver, id->driver_data); 95920a22b706b8ee37d1a2282f2c9bf7f2c73a5a7a5H Hartley Sweeten} 96020a22b706b8ee37d1a2282f2c9bf7f2c73a5a7a5H Hartley Sweeten 96120a22b706b8ee37d1a2282f2c9bf7f2c73a5a7a5H Hartley Sweetenstatic DEFINE_PCI_DEVICE_TABLE(apci3xxx_pci_table) = { 962dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten { PCI_VDEVICE(ADDIDATA, 0x3010), BOARD_APCI3000_16 }, 963dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten { PCI_VDEVICE(ADDIDATA, 0x300f), BOARD_APCI3000_8 }, 964dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten { PCI_VDEVICE(ADDIDATA, 0x300e), BOARD_APCI3000_4 }, 965dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten { PCI_VDEVICE(ADDIDATA, 0x3013), BOARD_APCI3006_16 }, 966dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten { PCI_VDEVICE(ADDIDATA, 0x3014), BOARD_APCI3006_8 }, 967dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten { PCI_VDEVICE(ADDIDATA, 0x3015), BOARD_APCI3006_4 }, 968dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten { PCI_VDEVICE(ADDIDATA, 0x3016), BOARD_APCI3010_16 }, 969dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten { PCI_VDEVICE(ADDIDATA, 0x3017), BOARD_APCI3010_8 }, 970dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten { PCI_VDEVICE(ADDIDATA, 0x3018), BOARD_APCI3010_4 }, 971dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten { PCI_VDEVICE(ADDIDATA, 0x3019), BOARD_APCI3016_16 }, 972dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten { PCI_VDEVICE(ADDIDATA, 0x301a), BOARD_APCI3016_8 }, 973dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten { PCI_VDEVICE(ADDIDATA, 0x301b), BOARD_APCI3016_4 }, 974dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten { PCI_VDEVICE(ADDIDATA, 0x301c), BOARD_APCI3100_16_4 }, 975dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten { PCI_VDEVICE(ADDIDATA, 0x301d), BOARD_APCI3100_8_4 }, 976dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten { PCI_VDEVICE(ADDIDATA, 0x301e), BOARD_APCI3106_16_4 }, 977dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten { PCI_VDEVICE(ADDIDATA, 0x301f), BOARD_APCI3106_8_4 }, 978dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten { PCI_VDEVICE(ADDIDATA, 0x3020), BOARD_APCI3110_16_4 }, 979dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten { PCI_VDEVICE(ADDIDATA, 0x3021), BOARD_APCI3110_8_4 }, 980dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten { PCI_VDEVICE(ADDIDATA, 0x3022), BOARD_APCI3116_16_4 }, 981dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten { PCI_VDEVICE(ADDIDATA, 0x3023), BOARD_APCI3116_8_4 }, 982dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten { PCI_VDEVICE(ADDIDATA, 0x300B), BOARD_APCI3003 }, 983dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten { PCI_VDEVICE(ADDIDATA, 0x3002), BOARD_APCI3002_16 }, 984dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten { PCI_VDEVICE(ADDIDATA, 0x3003), BOARD_APCI3002_8 }, 985dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten { PCI_VDEVICE(ADDIDATA, 0x3004), BOARD_APCI3002_4 }, 986dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten { PCI_VDEVICE(ADDIDATA, 0x3024), BOARD_APCI3500 }, 987317285d71acccbda2fbab7e53d6b33c52a151a32H Hartley Sweeten { 0 } 988317285d71acccbda2fbab7e53d6b33c52a151a32H Hartley Sweeten}; 98920a22b706b8ee37d1a2282f2c9bf7f2c73a5a7a5H Hartley SweetenMODULE_DEVICE_TABLE(pci, apci3xxx_pci_table); 990317285d71acccbda2fbab7e53d6b33c52a151a32H Hartley Sweeten 99120a22b706b8ee37d1a2282f2c9bf7f2c73a5a7a5H Hartley Sweetenstatic struct pci_driver apci3xxx_pci_driver = { 99220a22b706b8ee37d1a2282f2c9bf7f2c73a5a7a5H Hartley Sweeten .name = "addi_apci_3xxx", 99320a22b706b8ee37d1a2282f2c9bf7f2c73a5a7a5H Hartley Sweeten .id_table = apci3xxx_pci_table, 99420a22b706b8ee37d1a2282f2c9bf7f2c73a5a7a5H Hartley Sweeten .probe = apci3xxx_pci_probe, 9959901a4d75d007686e8f6473189cafc4b216b7449Peter Huewe .remove = comedi_pci_auto_unconfig, 99620a22b706b8ee37d1a2282f2c9bf7f2c73a5a7a5H Hartley Sweeten}; 99720a22b706b8ee37d1a2282f2c9bf7f2c73a5a7a5H Hartley Sweetenmodule_comedi_pci_driver(apci3xxx_driver, apci3xxx_pci_driver); 99890f703d30dd3e0c16ff80f35e34e511385a05ad5Arun Thomas 99990f703d30dd3e0c16ff80f35e34e511385a05ad5Arun ThomasMODULE_AUTHOR("Comedi http://www.comedi.org"); 100090f703d30dd3e0c16ff80f35e34e511385a05ad5Arun ThomasMODULE_DESCRIPTION("Comedi low-level driver"); 100190f703d30dd3e0c16ff80f35e34e511385a05ad5Arun ThomasMODULE_LICENSE("GPL"); 1002