addi_apci_3xxx.c revision ae57b69639bcbd653821f7a4a14b87f6fa6743c0
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, 59c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_config = i_APCI3XXX_InsnConfigAnalogInput, 60c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_read = i_APCI3XXX_InsnReadAnalogInput, 61c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_config = i_APCI3XXX_InsnConfigInitTTLIO, 62c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_bits = i_APCI3XXX_InsnBitsTTLIO, 63c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_read = i_APCI3XXX_InsnReadTTLIO, 64c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_write = i_APCI3XXX_InsnWriteTTLIO, 65dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten }, 66dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten [BOARD_APCI3000_8] = { 67c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_DriverName = "apci3000-8", 68c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_IorangeBase1 = 256, 69c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_PCIEeprom = ADDIDATA_NO_EEPROM, 70c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_EepromChip = ADDIDATA_9054, 71c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannel = 8, 72c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannelDiff = 4, 73c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiChannelList = 8, 74c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiMaxdata = 4095, 75c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pr_AiRangelist = &range_apci3XXX_ai, 76c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrTTLChannel = 24, 77c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .b_AvailableConvertUnit = 6, 78c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ui_MinAcquisitiontimeNs = 10000, 79c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .interrupt = v_APCI3XXX_Interrupt, 80c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_config = i_APCI3XXX_InsnConfigAnalogInput, 81c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_read = i_APCI3XXX_InsnReadAnalogInput, 82c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_config = i_APCI3XXX_InsnConfigInitTTLIO, 83c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_bits = i_APCI3XXX_InsnBitsTTLIO, 84c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_read = i_APCI3XXX_InsnReadTTLIO, 85c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_write = i_APCI3XXX_InsnWriteTTLIO, 86dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten }, 87dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten [BOARD_APCI3000_4] = { 88c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_DriverName = "apci3000-4", 89c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_IorangeBase1 = 256, 90c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_PCIEeprom = ADDIDATA_NO_EEPROM, 91c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_EepromChip = ADDIDATA_9054, 92c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannel = 4, 93c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannelDiff = 2, 94c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiChannelList = 4, 95c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiMaxdata = 4095, 96c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pr_AiRangelist = &range_apci3XXX_ai, 97c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrTTLChannel = 24, 98c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .b_AvailableConvertUnit = 6, 99c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ui_MinAcquisitiontimeNs = 10000, 100c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .interrupt = v_APCI3XXX_Interrupt, 101c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_config = i_APCI3XXX_InsnConfigAnalogInput, 102c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_read = i_APCI3XXX_InsnReadAnalogInput, 103c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_config = i_APCI3XXX_InsnConfigInitTTLIO, 104c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_bits = i_APCI3XXX_InsnBitsTTLIO, 105c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_read = i_APCI3XXX_InsnReadTTLIO, 106c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_write = i_APCI3XXX_InsnWriteTTLIO, 107dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten }, 108dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten [BOARD_APCI3006_16] = { 109c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_DriverName = "apci3006-16", 110c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_IorangeBase1 = 256, 111c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_PCIEeprom = ADDIDATA_NO_EEPROM, 112c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_EepromChip = ADDIDATA_9054, 113c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannel = 16, 114c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannelDiff = 8, 115c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiChannelList = 16, 116c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiMaxdata = 65535, 117c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pr_AiRangelist = &range_apci3XXX_ai, 118c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrTTLChannel = 24, 119c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .b_AvailableConvertUnit = 6, 120c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ui_MinAcquisitiontimeNs = 10000, 121c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .interrupt = v_APCI3XXX_Interrupt, 122c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_config = i_APCI3XXX_InsnConfigAnalogInput, 123c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_read = i_APCI3XXX_InsnReadAnalogInput, 124c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_config = i_APCI3XXX_InsnConfigInitTTLIO, 125c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_bits = i_APCI3XXX_InsnBitsTTLIO, 126c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_read = i_APCI3XXX_InsnReadTTLIO, 127c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_write = i_APCI3XXX_InsnWriteTTLIO, 128dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten }, 129dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten [BOARD_APCI3006_8] = { 130c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_DriverName = "apci3006-8", 131c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_IorangeBase1 = 256, 132c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_PCIEeprom = ADDIDATA_NO_EEPROM, 133c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_EepromChip = ADDIDATA_9054, 134c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannel = 8, 135c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannelDiff = 4, 136c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiChannelList = 8, 137c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiMaxdata = 65535, 138c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pr_AiRangelist = &range_apci3XXX_ai, 139c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrTTLChannel = 24, 140c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .b_AvailableConvertUnit = 6, 141c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ui_MinAcquisitiontimeNs = 10000, 142c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .interrupt = v_APCI3XXX_Interrupt, 143c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_config = i_APCI3XXX_InsnConfigAnalogInput, 144c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_read = i_APCI3XXX_InsnReadAnalogInput, 145c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_config = i_APCI3XXX_InsnConfigInitTTLIO, 146c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_bits = i_APCI3XXX_InsnBitsTTLIO, 147c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_read = i_APCI3XXX_InsnReadTTLIO, 148c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_write = i_APCI3XXX_InsnWriteTTLIO, 149dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten }, 150dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten [BOARD_APCI3006_4] = { 151c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_DriverName = "apci3006-4", 152c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_IorangeBase1 = 256, 153c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_PCIEeprom = ADDIDATA_NO_EEPROM, 154c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_EepromChip = ADDIDATA_9054, 155c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannel = 4, 156c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannelDiff = 2, 157c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiChannelList = 4, 158c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiMaxdata = 65535, 159c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pr_AiRangelist = &range_apci3XXX_ai, 160c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrTTLChannel = 24, 161c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .b_AvailableConvertUnit = 6, 162c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ui_MinAcquisitiontimeNs = 10000, 163c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .interrupt = v_APCI3XXX_Interrupt, 164c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_config = i_APCI3XXX_InsnConfigAnalogInput, 165c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_read = i_APCI3XXX_InsnReadAnalogInput, 166c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_config = i_APCI3XXX_InsnConfigInitTTLIO, 167c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_bits = i_APCI3XXX_InsnBitsTTLIO, 168c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_read = i_APCI3XXX_InsnReadTTLIO, 169c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_write = i_APCI3XXX_InsnWriteTTLIO, 170dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten }, 171dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten [BOARD_APCI3010_16] = { 172c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_DriverName = "apci3010-16", 173c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_IorangeBase1 = 256, 174c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_PCIEeprom = ADDIDATA_NO_EEPROM, 175c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_EepromChip = ADDIDATA_9054, 176c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannel = 16, 177c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannelDiff = 8, 178c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiChannelList = 16, 179c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiMaxdata = 4095, 180c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pr_AiRangelist = &range_apci3XXX_ai, 181c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrDiChannel = 4, 182c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrDoChannel = 4, 183c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_DoMaxdata = 1, 184c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrTTLChannel = 24, 185c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .b_AvailableConvertUnit = 6, 186c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ui_MinAcquisitiontimeNs = 5000, 187c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .interrupt = v_APCI3XXX_Interrupt, 188c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_config = i_APCI3XXX_InsnConfigAnalogInput, 189c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_read = i_APCI3XXX_InsnReadAnalogInput, 190c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_config = i_APCI3XXX_InsnConfigInitTTLIO, 191c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_bits = i_APCI3XXX_InsnBitsTTLIO, 192c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_read = i_APCI3XXX_InsnReadTTLIO, 193c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_write = i_APCI3XXX_InsnWriteTTLIO, 194dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten }, 195dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten [BOARD_APCI3010_8] = { 196c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_DriverName = "apci3010-8", 197c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_IorangeBase1 = 256, 198c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_PCIEeprom = ADDIDATA_NO_EEPROM, 199c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_EepromChip = ADDIDATA_9054, 200c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannel = 8, 201c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannelDiff = 4, 202c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiChannelList = 8, 203c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiMaxdata = 4095, 204c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pr_AiRangelist = &range_apci3XXX_ai, 205c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrDiChannel = 4, 206c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrDoChannel = 4, 207c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_DoMaxdata = 1, 208c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrTTLChannel = 24, 209c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .b_AvailableConvertUnit = 6, 210c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ui_MinAcquisitiontimeNs = 5000, 211c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .interrupt = v_APCI3XXX_Interrupt, 212c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_config = i_APCI3XXX_InsnConfigAnalogInput, 213c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_read = i_APCI3XXX_InsnReadAnalogInput, 214c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_config = i_APCI3XXX_InsnConfigInitTTLIO, 215c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_bits = i_APCI3XXX_InsnBitsTTLIO, 216c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_read = i_APCI3XXX_InsnReadTTLIO, 217c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_write = i_APCI3XXX_InsnWriteTTLIO, 218dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten }, 219dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten [BOARD_APCI3010_4] = { 220c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_DriverName = "apci3010-4", 221c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_IorangeBase1 = 256, 222c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_PCIEeprom = ADDIDATA_NO_EEPROM, 223c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_EepromChip = ADDIDATA_9054, 224c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannel = 4, 225c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannelDiff = 2, 226c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiChannelList = 4, 227c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiMaxdata = 4095, 228c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pr_AiRangelist = &range_apci3XXX_ai, 229c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrDiChannel = 4, 230c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrDoChannel = 4, 231c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_DoMaxdata = 1, 232c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrTTLChannel = 24, 233c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .b_AvailableConvertUnit = 6, 234c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ui_MinAcquisitiontimeNs = 5000, 235c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .interrupt = v_APCI3XXX_Interrupt, 236c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_config = i_APCI3XXX_InsnConfigAnalogInput, 237c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_read = i_APCI3XXX_InsnReadAnalogInput, 238c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_config = i_APCI3XXX_InsnConfigInitTTLIO, 239c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_bits = i_APCI3XXX_InsnBitsTTLIO, 240c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_read = i_APCI3XXX_InsnReadTTLIO, 241c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_write = i_APCI3XXX_InsnWriteTTLIO, 242dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten }, 243dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten [BOARD_APCI3016_16] = { 244c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_DriverName = "apci3016-16", 245c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_IorangeBase1 = 256, 246c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_PCIEeprom = ADDIDATA_NO_EEPROM, 247c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_EepromChip = ADDIDATA_9054, 248c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannel = 16, 249c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannelDiff = 8, 250c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiChannelList = 16, 251c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiMaxdata = 65535, 252c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pr_AiRangelist = &range_apci3XXX_ai, 253c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrDiChannel = 4, 254c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrDoChannel = 4, 255c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_DoMaxdata = 1, 256c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrTTLChannel = 24, 257c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .b_AvailableConvertUnit = 6, 258c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ui_MinAcquisitiontimeNs = 5000, 259c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .interrupt = v_APCI3XXX_Interrupt, 260c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_config = i_APCI3XXX_InsnConfigAnalogInput, 261c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_read = i_APCI3XXX_InsnReadAnalogInput, 262c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_config = i_APCI3XXX_InsnConfigInitTTLIO, 263c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_bits = i_APCI3XXX_InsnBitsTTLIO, 264c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_read = i_APCI3XXX_InsnReadTTLIO, 265c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_write = i_APCI3XXX_InsnWriteTTLIO, 266dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten }, 267dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten [BOARD_APCI3016_8] = { 268c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_DriverName = "apci3016-8", 269c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_IorangeBase1 = 256, 270c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_PCIEeprom = ADDIDATA_NO_EEPROM, 271c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_EepromChip = ADDIDATA_9054, 272c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannel = 8, 273c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannelDiff = 4, 274c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiChannelList = 8, 275c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiMaxdata = 65535, 276c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pr_AiRangelist = &range_apci3XXX_ai, 277c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrDiChannel = 4, 278c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrDoChannel = 4, 279c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_DoMaxdata = 1, 280c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrTTLChannel = 24, 281c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .b_AvailableConvertUnit = 6, 282c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ui_MinAcquisitiontimeNs = 5000, 283c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .interrupt = v_APCI3XXX_Interrupt, 284c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_config = i_APCI3XXX_InsnConfigAnalogInput, 285c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_read = i_APCI3XXX_InsnReadAnalogInput, 286c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_config = i_APCI3XXX_InsnConfigInitTTLIO, 287c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_bits = i_APCI3XXX_InsnBitsTTLIO, 288c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_read = i_APCI3XXX_InsnReadTTLIO, 289c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_write = i_APCI3XXX_InsnWriteTTLIO, 290dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten }, 291dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten [BOARD_APCI3016_4] = { 292c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_DriverName = "apci3016-4", 293c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_IorangeBase1 = 256, 294c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_PCIEeprom = ADDIDATA_NO_EEPROM, 295c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_EepromChip = ADDIDATA_9054, 296c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannel = 4, 297c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannelDiff = 2, 298c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiChannelList = 4, 299c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiMaxdata = 65535, 300c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pr_AiRangelist = &range_apci3XXX_ai, 301c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrDiChannel = 4, 302c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrDoChannel = 4, 303c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_DoMaxdata = 1, 304c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrTTLChannel = 24, 305c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .b_AvailableConvertUnit = 6, 306c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ui_MinAcquisitiontimeNs = 5000, 307c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .interrupt = v_APCI3XXX_Interrupt, 308c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_config = i_APCI3XXX_InsnConfigAnalogInput, 309c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_read = i_APCI3XXX_InsnReadAnalogInput, 310c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_config = i_APCI3XXX_InsnConfigInitTTLIO, 311c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_bits = i_APCI3XXX_InsnBitsTTLIO, 312c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_read = i_APCI3XXX_InsnReadTTLIO, 313c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_write = i_APCI3XXX_InsnWriteTTLIO, 314dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten }, 315dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten [BOARD_APCI3100_16_4] = { 316c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_DriverName = "apci3100-16-4", 317c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_IorangeBase1 = 256, 318c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_PCIEeprom = ADDIDATA_NO_EEPROM, 319c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_EepromChip = ADDIDATA_9054, 320c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannel = 16, 321c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannelDiff = 8, 322c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiChannelList = 16, 323c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAoChannel = 4, 324c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiMaxdata = 4095, 325c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AoMaxdata = 4095, 326c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pr_AiRangelist = &range_apci3XXX_ai, 327c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pr_AoRangelist = &range_apci3XXX_ao, 328c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrTTLChannel = 24, 329c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .b_AvailableConvertUnit = 6, 330c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ui_MinAcquisitiontimeNs = 10000, 331c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .interrupt = v_APCI3XXX_Interrupt, 332c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_config = i_APCI3XXX_InsnConfigAnalogInput, 333c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_read = i_APCI3XXX_InsnReadAnalogInput, 334c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ao_write = i_APCI3XXX_InsnWriteAnalogOutput, 335c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_config = i_APCI3XXX_InsnConfigInitTTLIO, 336c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_bits = i_APCI3XXX_InsnBitsTTLIO, 337c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_read = i_APCI3XXX_InsnReadTTLIO, 338c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_write = i_APCI3XXX_InsnWriteTTLIO, 339dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten }, 340dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten [BOARD_APCI3100_8_4] = { 341c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_DriverName = "apci3100-8-4", 342c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_IorangeBase1 = 256, 343c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_PCIEeprom = ADDIDATA_NO_EEPROM, 344c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_EepromChip = ADDIDATA_9054, 345c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannel = 8, 346c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannelDiff = 4, 347c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiChannelList = 8, 348c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAoChannel = 4, 349c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiMaxdata = 4095, 350c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AoMaxdata = 4095, 351c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pr_AiRangelist = &range_apci3XXX_ai, 352c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pr_AoRangelist = &range_apci3XXX_ao, 353c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrTTLChannel = 24, 354c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .b_AvailableConvertUnit = 6, 355c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ui_MinAcquisitiontimeNs = 10000, 356c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .interrupt = v_APCI3XXX_Interrupt, 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_APCI3106_16_4] = { 366c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_DriverName = "apci3106-16-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 = 16, 371c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannelDiff = 8, 372c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiChannelList = 16, 373c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAoChannel = 4, 374c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiMaxdata = 65535, 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, 382c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_config = i_APCI3XXX_InsnConfigAnalogInput, 383c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_read = i_APCI3XXX_InsnReadAnalogInput, 384c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ao_write = i_APCI3XXX_InsnWriteAnalogOutput, 385c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_config = i_APCI3XXX_InsnConfigInitTTLIO, 386c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_bits = i_APCI3XXX_InsnBitsTTLIO, 387c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_read = i_APCI3XXX_InsnReadTTLIO, 388c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_write = i_APCI3XXX_InsnWriteTTLIO, 389dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten }, 390dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten [BOARD_APCI3106_8_4] = { 391c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_DriverName = "apci3106-8-4", 392c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_IorangeBase1 = 256, 393c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_PCIEeprom = ADDIDATA_NO_EEPROM, 394c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_EepromChip = ADDIDATA_9054, 395c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannel = 8, 396c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannelDiff = 4, 397c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiChannelList = 8, 398c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAoChannel = 4, 399c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiMaxdata = 65535, 400c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AoMaxdata = 4095, 401c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pr_AiRangelist = &range_apci3XXX_ai, 402c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pr_AoRangelist = &range_apci3XXX_ao, 403c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrTTLChannel = 24, 404c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .b_AvailableConvertUnit = 6, 405c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ui_MinAcquisitiontimeNs = 10000, 406c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .interrupt = v_APCI3XXX_Interrupt, 407c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_config = i_APCI3XXX_InsnConfigAnalogInput, 408c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_read = i_APCI3XXX_InsnReadAnalogInput, 409c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ao_write = i_APCI3XXX_InsnWriteAnalogOutput, 410c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_config = i_APCI3XXX_InsnConfigInitTTLIO, 411c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_bits = i_APCI3XXX_InsnBitsTTLIO, 412c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_read = i_APCI3XXX_InsnReadTTLIO, 413c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_write = i_APCI3XXX_InsnWriteTTLIO, 414dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten }, 415dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten [BOARD_APCI3110_16_4] = { 416c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_DriverName = "apci3110-16-4", 417c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_IorangeBase1 = 256, 418c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_PCIEeprom = ADDIDATA_NO_EEPROM, 419c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_EepromChip = ADDIDATA_9054, 420c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannel = 16, 421c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannelDiff = 8, 422c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiChannelList = 16, 423c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAoChannel = 4, 424c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiMaxdata = 4095, 425c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AoMaxdata = 4095, 426c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pr_AiRangelist = &range_apci3XXX_ai, 427c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pr_AoRangelist = &range_apci3XXX_ao, 428c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrDiChannel = 4, 429c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrDoChannel = 4, 430c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_DoMaxdata = 1, 431c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrTTLChannel = 24, 432c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .b_AvailableConvertUnit = 6, 433c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ui_MinAcquisitiontimeNs = 5000, 434c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .interrupt = v_APCI3XXX_Interrupt, 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_8_4] = { 444c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_DriverName = "apci3110-8-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 = 8, 449c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannelDiff = 4, 450c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiChannelList = 8, 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, 463c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_config = i_APCI3XXX_InsnConfigAnalogInput, 464c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_read = i_APCI3XXX_InsnReadAnalogInput, 465c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ao_write = i_APCI3XXX_InsnWriteAnalogOutput, 466c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_config = i_APCI3XXX_InsnConfigInitTTLIO, 467c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_bits = i_APCI3XXX_InsnBitsTTLIO, 468c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_read = i_APCI3XXX_InsnReadTTLIO, 469c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_write = i_APCI3XXX_InsnWriteTTLIO, 470dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten }, 471dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten [BOARD_APCI3116_16_4] = { 472c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_DriverName = "apci3116-16-4", 473c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_IorangeBase1 = 256, 474c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_PCIEeprom = ADDIDATA_NO_EEPROM, 475c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_EepromChip = ADDIDATA_9054, 476c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannel = 16, 477c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannelDiff = 8, 478c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiChannelList = 16, 479c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAoChannel = 4, 480c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiMaxdata = 65535, 481c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AoMaxdata = 4095, 482c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pr_AiRangelist = &range_apci3XXX_ai, 483c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pr_AoRangelist = &range_apci3XXX_ao, 484c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrDiChannel = 4, 485c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrDoChannel = 4, 486c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_DoMaxdata = 1, 487c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrTTLChannel = 24, 488c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .b_AvailableConvertUnit = 6, 489c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ui_MinAcquisitiontimeNs = 5000, 490c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .interrupt = v_APCI3XXX_Interrupt, 491c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_config = i_APCI3XXX_InsnConfigAnalogInput, 492c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_read = i_APCI3XXX_InsnReadAnalogInput, 493c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ao_write = i_APCI3XXX_InsnWriteAnalogOutput, 494c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_config = i_APCI3XXX_InsnConfigInitTTLIO, 495c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_bits = i_APCI3XXX_InsnBitsTTLIO, 496c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_read = i_APCI3XXX_InsnReadTTLIO, 497c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_write = i_APCI3XXX_InsnWriteTTLIO, 498dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten }, 499dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten [BOARD_APCI3116_8_4] = { 500c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_DriverName = "apci3116-8-4", 501c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_IorangeBase1 = 256, 502c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_PCIEeprom = ADDIDATA_NO_EEPROM, 503c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_EepromChip = ADDIDATA_9054, 504c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannel = 8, 505c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannelDiff = 4, 506c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiChannelList = 8, 507c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAoChannel = 4, 508c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiMaxdata = 65535, 509c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AoMaxdata = 4095, 510c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pr_AiRangelist = &range_apci3XXX_ai, 511c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pr_AoRangelist = &range_apci3XXX_ao, 512c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrDiChannel = 4, 513c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrDoChannel = 4, 514c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_DoMaxdata = 1, 515c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrTTLChannel = 24, 516c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .b_AvailableConvertUnit = 6, 517c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ui_MinAcquisitiontimeNs = 5000, 518c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .interrupt = v_APCI3XXX_Interrupt, 519c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_config = i_APCI3XXX_InsnConfigAnalogInput, 520c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_read = i_APCI3XXX_InsnReadAnalogInput, 521c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ao_write = i_APCI3XXX_InsnWriteAnalogOutput, 522c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_config = i_APCI3XXX_InsnConfigInitTTLIO, 523c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_bits = i_APCI3XXX_InsnBitsTTLIO, 524c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_read = i_APCI3XXX_InsnReadTTLIO, 525c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_write = i_APCI3XXX_InsnWriteTTLIO, 526dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten }, 527dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten [BOARD_APCI3003] = { 528c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_DriverName = "apci3003", 529c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_IorangeBase1 = 256, 530c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_PCIEeprom = ADDIDATA_NO_EEPROM, 531c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_EepromChip = ADDIDATA_9054, 532c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannelDiff = 4, 533c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiChannelList = 4, 534c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiMaxdata = 65535, 535c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pr_AiRangelist = &range_apci3XXX_ai, 536c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrDiChannel = 4, 537c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrDoChannel = 4, 538c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_DoMaxdata = 1, 539c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .b_AvailableConvertUnit = 7, 540c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ui_MinAcquisitiontimeNs = 2500, 541c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .interrupt = v_APCI3XXX_Interrupt, 542c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_config = i_APCI3XXX_InsnConfigAnalogInput, 543c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_read = i_APCI3XXX_InsnReadAnalogInput, 544dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten }, 545dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten [BOARD_APCI3002_16] = { 546c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_DriverName = "apci3002-16", 547c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_IorangeBase1 = 256, 548c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_PCIEeprom = ADDIDATA_NO_EEPROM, 549c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_EepromChip = ADDIDATA_9054, 550c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannelDiff = 16, 551c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiChannelList = 16, 552c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiMaxdata = 65535, 553c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pr_AiRangelist = &range_apci3XXX_ai, 554c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrDiChannel = 4, 555c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrDoChannel = 4, 556c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_DoMaxdata = 1, 557c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .b_AvailableConvertUnit = 6, 558c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ui_MinAcquisitiontimeNs = 5000, 559c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .interrupt = v_APCI3XXX_Interrupt, 560c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_config = i_APCI3XXX_InsnConfigAnalogInput, 561c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_read = i_APCI3XXX_InsnReadAnalogInput, 562dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten }, 563dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten [BOARD_APCI3002_8] = { 564c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_DriverName = "apci3002-8", 565c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_IorangeBase1 = 256, 566c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_PCIEeprom = ADDIDATA_NO_EEPROM, 567c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_EepromChip = ADDIDATA_9054, 568c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannelDiff = 8, 569c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiChannelList = 8, 570c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiMaxdata = 65535, 571c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pr_AiRangelist = &range_apci3XXX_ai, 572c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrDiChannel = 4, 573c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrDoChannel = 4, 574c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_DoMaxdata = 1, 575c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .b_AvailableConvertUnit = 6, 576c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ui_MinAcquisitiontimeNs = 5000, 577c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .interrupt = v_APCI3XXX_Interrupt, 578c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_config = i_APCI3XXX_InsnConfigAnalogInput, 579c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_read = i_APCI3XXX_InsnReadAnalogInput, 580dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten }, 581dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten [BOARD_APCI3002_4] = { 582c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_DriverName = "apci3002-4", 583c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_IorangeBase1 = 256, 584c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_PCIEeprom = ADDIDATA_NO_EEPROM, 585c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_EepromChip = ADDIDATA_9054, 586c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannelDiff = 4, 587c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiChannelList = 4, 588c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiMaxdata = 65535, 589c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pr_AiRangelist = &range_apci3XXX_ai, 590c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrDiChannel = 4, 591c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrDoChannel = 4, 592c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_DoMaxdata = 1, 593c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .b_AvailableConvertUnit = 6, 594c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ui_MinAcquisitiontimeNs = 5000, 595c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .interrupt = v_APCI3XXX_Interrupt, 596c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_config = i_APCI3XXX_InsnConfigAnalogInput, 597c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_read = i_APCI3XXX_InsnReadAnalogInput, 598dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten }, 599dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten [BOARD_APCI3500] = { 600c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_DriverName = "apci3500", 601c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_IorangeBase1 = 256, 602c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_PCIEeprom = ADDIDATA_NO_EEPROM, 603c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_EepromChip = ADDIDATA_9054, 604c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAoChannel = 4, 605c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AoMaxdata = 4095, 606c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pr_AoRangelist = &range_apci3XXX_ao, 607c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrTTLChannel = 24, 608c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .interrupt = v_APCI3XXX_Interrupt, 609c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ao_write = i_APCI3XXX_InsnWriteAnalogOutput, 610c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_config = i_APCI3XXX_InsnConfigInitTTLIO, 611c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_bits = i_APCI3XXX_InsnBitsTTLIO, 612c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_read = i_APCI3XXX_InsnReadTTLIO, 613c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_write = i_APCI3XXX_InsnWriteTTLIO, 614c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten }, 615c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten}; 616c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten 617ae57b69639bcbd653821f7a4a14b87f6fa6743c0H Hartley Sweetenstatic int apci3xxx_di_insn_bits(struct comedi_device *dev, 618ae57b69639bcbd653821f7a4a14b87f6fa6743c0H Hartley Sweeten struct comedi_subdevice *s, 619ae57b69639bcbd653821f7a4a14b87f6fa6743c0H Hartley Sweeten struct comedi_insn *insn, 620ae57b69639bcbd653821f7a4a14b87f6fa6743c0H Hartley Sweeten unsigned int *data) 621ae57b69639bcbd653821f7a4a14b87f6fa6743c0H Hartley Sweeten{ 622ae57b69639bcbd653821f7a4a14b87f6fa6743c0H Hartley Sweeten struct addi_private *devpriv = dev->private; 623ae57b69639bcbd653821f7a4a14b87f6fa6743c0H Hartley Sweeten 624ae57b69639bcbd653821f7a4a14b87f6fa6743c0H Hartley Sweeten data[1] = inl(devpriv->iobase + 32) & 0xf; 625ae57b69639bcbd653821f7a4a14b87f6fa6743c0H Hartley Sweeten 626ae57b69639bcbd653821f7a4a14b87f6fa6743c0H Hartley Sweeten return insn->n; 627ae57b69639bcbd653821f7a4a14b87f6fa6743c0H Hartley Sweeten} 628ae57b69639bcbd653821f7a4a14b87f6fa6743c0H Hartley Sweeten 629c3d8605fca03adb70f712512b3df0e0311ac9b61H Hartley Sweetenstatic int apci3xxx_do_insn_bits(struct comedi_device *dev, 630c3d8605fca03adb70f712512b3df0e0311ac9b61H Hartley Sweeten struct comedi_subdevice *s, 631c3d8605fca03adb70f712512b3df0e0311ac9b61H Hartley Sweeten struct comedi_insn *insn, 632c3d8605fca03adb70f712512b3df0e0311ac9b61H Hartley Sweeten unsigned int *data) 633c3d8605fca03adb70f712512b3df0e0311ac9b61H Hartley Sweeten{ 634c3d8605fca03adb70f712512b3df0e0311ac9b61H Hartley Sweeten struct addi_private *devpriv = dev->private; 635c3d8605fca03adb70f712512b3df0e0311ac9b61H Hartley Sweeten unsigned int mask = data[0]; 636c3d8605fca03adb70f712512b3df0e0311ac9b61H Hartley Sweeten unsigned int bits = data[1]; 637c3d8605fca03adb70f712512b3df0e0311ac9b61H Hartley Sweeten 638c3d8605fca03adb70f712512b3df0e0311ac9b61H Hartley Sweeten s->state = inl(devpriv->iobase + 48) & 0xf; 639c3d8605fca03adb70f712512b3df0e0311ac9b61H Hartley Sweeten if (mask) { 640c3d8605fca03adb70f712512b3df0e0311ac9b61H Hartley Sweeten s->state &= ~mask; 641c3d8605fca03adb70f712512b3df0e0311ac9b61H Hartley Sweeten s->state |= (bits & mask); 642c3d8605fca03adb70f712512b3df0e0311ac9b61H Hartley Sweeten 643c3d8605fca03adb70f712512b3df0e0311ac9b61H Hartley Sweeten outl(s->state, devpriv->iobase + 48); 644c3d8605fca03adb70f712512b3df0e0311ac9b61H Hartley Sweeten } 645c3d8605fca03adb70f712512b3df0e0311ac9b61H Hartley Sweeten 646c3d8605fca03adb70f712512b3df0e0311ac9b61H Hartley Sweeten data[1] = s->state; 647c3d8605fca03adb70f712512b3df0e0311ac9b61H Hartley Sweeten 648c3d8605fca03adb70f712512b3df0e0311ac9b61H Hartley Sweeten return insn->n; 649c3d8605fca03adb70f712512b3df0e0311ac9b61H Hartley Sweeten} 650c3d8605fca03adb70f712512b3df0e0311ac9b61H Hartley Sweeten 65198d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweetenstatic int i_ADDIDATA_InsnReadEeprom(struct comedi_device *dev, 65298d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten struct comedi_subdevice *s, 65398d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten struct comedi_insn *insn, 65498d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten unsigned int *data) 65598d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten{ 65698d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten const struct addi_board *this_board = comedi_board(dev); 65798d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten struct addi_private *devpriv = dev->private; 65898d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten unsigned short w_Address = CR_CHAN(insn->chanspec); 65998d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten unsigned short w_Data; 66098d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten 66198d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten w_Data = addi_eeprom_readw(devpriv->i_IobaseAmcc, 66298d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten this_board->pc_EepromChip, 2 * w_Address); 66398d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten data[0] = w_Data; 66498d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten 66598d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten return insn->n; 66698d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten} 66798d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten 66898d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweetenstatic irqreturn_t v_ADDI_Interrupt(int irq, void *d) 66998d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten{ 67098d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten struct comedi_device *dev = d; 67198d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten const struct addi_board *this_board = comedi_board(dev); 67298d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten 67398d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten this_board->interrupt(irq, d); 67498d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten return IRQ_RETVAL(1); 67598d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten} 67698d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten 6775e72c7a50709e60663217704b30501bf34afa448H Hartley Sweetenstatic int apci3xxx_reset(struct comedi_device *dev) 67898d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten{ 6795e72c7a50709e60663217704b30501bf34afa448H Hartley Sweeten struct addi_private *devpriv = dev->private; 6805e72c7a50709e60663217704b30501bf34afa448H Hartley Sweeten unsigned int val; 6815e72c7a50709e60663217704b30501bf34afa448H Hartley Sweeten int i; 6825e72c7a50709e60663217704b30501bf34afa448H Hartley Sweeten 6835e72c7a50709e60663217704b30501bf34afa448H Hartley Sweeten /* Disable the interrupt */ 6845e72c7a50709e60663217704b30501bf34afa448H Hartley Sweeten disable_irq(dev->irq); 6855e72c7a50709e60663217704b30501bf34afa448H Hartley Sweeten 6865e72c7a50709e60663217704b30501bf34afa448H Hartley Sweeten /* Reset the interrupt flag */ 6875e72c7a50709e60663217704b30501bf34afa448H Hartley Sweeten devpriv->b_EocEosInterrupt = 0; 6885e72c7a50709e60663217704b30501bf34afa448H Hartley Sweeten 6895e72c7a50709e60663217704b30501bf34afa448H Hartley Sweeten /* Clear the start command */ 6905e72c7a50709e60663217704b30501bf34afa448H Hartley Sweeten writel(0, devpriv->dw_AiBase + 8); 6915e72c7a50709e60663217704b30501bf34afa448H Hartley Sweeten 6925e72c7a50709e60663217704b30501bf34afa448H Hartley Sweeten /* Reset the interrupt flags */ 6935e72c7a50709e60663217704b30501bf34afa448H Hartley Sweeten val = readl(devpriv->dw_AiBase + 16); 6945e72c7a50709e60663217704b30501bf34afa448H Hartley Sweeten writel(val, devpriv->dw_AiBase + 16); 6955e72c7a50709e60663217704b30501bf34afa448H Hartley Sweeten 6965e72c7a50709e60663217704b30501bf34afa448H Hartley Sweeten /* clear the EOS */ 6975e72c7a50709e60663217704b30501bf34afa448H Hartley Sweeten readl(devpriv->dw_AiBase + 20); 6985e72c7a50709e60663217704b30501bf34afa448H Hartley Sweeten 6995e72c7a50709e60663217704b30501bf34afa448H Hartley Sweeten /* Clear the FIFO */ 7005e72c7a50709e60663217704b30501bf34afa448H Hartley Sweeten for (i = 0; i < 16; i++) 7015e72c7a50709e60663217704b30501bf34afa448H Hartley Sweeten val = readl(devpriv->dw_AiBase + 28); 7025e72c7a50709e60663217704b30501bf34afa448H Hartley Sweeten 7035e72c7a50709e60663217704b30501bf34afa448H Hartley Sweeten /* Enable the interrupt */ 7045e72c7a50709e60663217704b30501bf34afa448H Hartley Sweeten enable_irq(dev->irq); 70598d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten 70698d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten return 0; 70798d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten} 70898d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten 709dbae4575661da840353f12dd76499ad587c92519H Hartley Sweetenstatic int apci3xxx_auto_attach(struct comedi_device *dev, 710dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten unsigned long context) 711dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten{ 71298d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten struct pci_dev *pcidev = comedi_to_pci_dev(dev); 713dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten const struct addi_board *board = NULL; 71498d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten struct addi_private *devpriv; 71598d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten struct comedi_subdevice *s; 71698d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten int ret, n_subdevices; 71798d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten unsigned int dw_Dummy; 718dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten 719dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten if (context < ARRAY_SIZE(apci3xxx_boardtypes)) 720dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten board = &apci3xxx_boardtypes[context]; 721dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten if (!board) 722dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten return -ENODEV; 723dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten dev->board_ptr = board; 72498d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten dev->board_name = board->pc_DriverName; 72598d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten 72698d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten devpriv = kzalloc(sizeof(*devpriv), GFP_KERNEL); 72798d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten if (!devpriv) 72898d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten return -ENOMEM; 72998d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten dev->private = devpriv; 73098d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten 73198d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten ret = comedi_pci_enable(dev); 73298d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten if (ret) 73398d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten return ret; 73498d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten 73598d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten if (!board->pc_EepromChip || 73698d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten strcmp(board->pc_EepromChip, ADDIDATA_9054)) { 73798d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten /* board does not have an eeprom or is not ADDIDATA_9054 */ 73898d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten if (board->i_IorangeBase1) 73998d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten dev->iobase = pci_resource_start(pcidev, 1); 74098d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten else 74198d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten dev->iobase = pci_resource_start(pcidev, 0); 74298d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten 74398d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten devpriv->iobase = dev->iobase; 74498d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten devpriv->i_IobaseAmcc = pci_resource_start(pcidev, 0); 74598d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten devpriv->i_IobaseAddon = pci_resource_start(pcidev, 2); 74698d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten } else { 74798d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten /* board has an ADDIDATA_9054 eeprom */ 74898d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten dev->iobase = pci_resource_start(pcidev, 2); 74998d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten devpriv->iobase = pci_resource_start(pcidev, 2); 75098d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten devpriv->dw_AiBase = pci_ioremap_bar(pcidev, 3); 75198d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten } 75298d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten devpriv->i_IobaseReserved = pci_resource_start(pcidev, 3); 75398d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten 75498d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten /* Initialize parameters that can be overridden in EEPROM */ 75598d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten devpriv->s_EeParameters.i_NbrAiChannel = board->i_NbrAiChannel; 75698d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten devpriv->s_EeParameters.i_NbrAoChannel = board->i_NbrAoChannel; 75798d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten devpriv->s_EeParameters.i_AiMaxdata = board->i_AiMaxdata; 75898d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten devpriv->s_EeParameters.i_AoMaxdata = board->i_AoMaxdata; 75998d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten devpriv->s_EeParameters.i_NbrDiChannel = board->i_NbrDiChannel; 76098d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten devpriv->s_EeParameters.i_NbrDoChannel = board->i_NbrDoChannel; 76198d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten devpriv->s_EeParameters.i_DoMaxdata = board->i_DoMaxdata; 76298d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten devpriv->s_EeParameters.i_Dma = board->i_Dma; 76398d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten devpriv->s_EeParameters.i_Timer = board->i_Timer; 76498d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten devpriv->s_EeParameters.ui_MinAcquisitiontimeNs = 76598d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten board->ui_MinAcquisitiontimeNs; 76698d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten devpriv->s_EeParameters.ui_MinDelaytimeNs = board->ui_MinDelaytimeNs; 76798d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten 76898d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten /* ## */ 76998d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten 77098d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten if (pcidev->irq > 0) { 77198d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten ret = request_irq(pcidev->irq, v_ADDI_Interrupt, IRQF_SHARED, 77298d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten dev->board_name, dev); 77398d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten if (ret == 0) 77498d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten dev->irq = pcidev->irq; 77598d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten } 77698d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten 77798d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten /* Read eepeom and fill addi_board Structure */ 77898d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten 77998d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten if (board->i_PCIEeprom) { 78098d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten if (!(strcmp(board->pc_EepromChip, "S5920"))) { 78198d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten /* Set 3 wait stait */ 78298d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten if (!(strcmp(dev->board_name, "apci035"))) 78398d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten outl(0x80808082, devpriv->i_IobaseAmcc + 0x60); 78498d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten else 78598d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten outl(0x83838383, devpriv->i_IobaseAmcc + 0x60); 78698d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten 78798d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten /* Enable the interrupt for the controller */ 78898d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten dw_Dummy = inl(devpriv->i_IobaseAmcc + 0x38); 78998d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten outl(dw_Dummy | 0x2000, devpriv->i_IobaseAmcc + 0x38); 79098d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten } 79198d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten addi_eeprom_read_info(dev, pci_resource_start(pcidev, 0)); 79298d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten } 79398d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten 79498d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten n_subdevices = 7; 79598d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten ret = comedi_alloc_subdevices(dev, n_subdevices); 79698d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten if (ret) 79798d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten return ret; 79898d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten 79998d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten /* Allocate and Initialise AI Subdevice Structures */ 80098d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s = &dev->subdevices[0]; 80198d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten if (devpriv->s_EeParameters.i_NbrAiChannel || 80298d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten board->i_NbrAiChannelDiff) { 80398d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten dev->read_subdev = s; 80498d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->type = COMEDI_SUBD_AI; 80598d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->subdev_flags = SDF_READABLE | SDF_COMMON | SDF_GROUND | 80698d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten SDF_DIFF; 80798d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten if (devpriv->s_EeParameters.i_NbrAiChannel) { 80898d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->n_chan = devpriv->s_EeParameters.i_NbrAiChannel; 80998d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten devpriv->b_SingelDiff = 0; 81098d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten } else { 81198d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->n_chan = board->i_NbrAiChannelDiff; 81298d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten devpriv->b_SingelDiff = 1; 81398d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten } 81498d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->maxdata = devpriv->s_EeParameters.i_AiMaxdata; 81598d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->len_chanlist = board->i_AiChannelList; 81698d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->range_table = board->pr_AiRangelist; 81798d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten 81898d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten /* Set the initialisation flag */ 81998d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten devpriv->b_AiInitialisation = 1; 82098d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten 82198d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->insn_config = board->ai_config; 82298d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->insn_read = board->ai_read; 82398d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->insn_write = board->ai_write; 82498d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->insn_bits = board->ai_bits; 82598d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->do_cmdtest = board->ai_cmdtest; 82698d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->do_cmd = board->ai_cmd; 82798d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->cancel = board->ai_cancel; 82898d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten 82998d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten } else { 83098d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->type = COMEDI_SUBD_UNUSED; 83198d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten } 83298d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten 83398d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten /* Allocate and Initialise AO Subdevice Structures */ 83498d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s = &dev->subdevices[1]; 83598d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten if (devpriv->s_EeParameters.i_NbrAoChannel) { 83698d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->type = COMEDI_SUBD_AO; 83798d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->subdev_flags = SDF_WRITEABLE | SDF_GROUND | SDF_COMMON; 83898d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->n_chan = devpriv->s_EeParameters.i_NbrAoChannel; 83998d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->maxdata = devpriv->s_EeParameters.i_AoMaxdata; 84098d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->len_chanlist = devpriv->s_EeParameters.i_NbrAoChannel; 84198d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->range_table = board->pr_AoRangelist; 84298d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->insn_config = board->ao_config; 84398d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->insn_write = board->ao_write; 84498d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten } else { 84598d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->type = COMEDI_SUBD_UNUSED; 84698d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten } 84798d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten /* Allocate and Initialise DI Subdevice Structures */ 84898d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s = &dev->subdevices[2]; 84998d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten if (devpriv->s_EeParameters.i_NbrDiChannel) { 85098d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->type = COMEDI_SUBD_DI; 85198d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->subdev_flags = SDF_READABLE | SDF_GROUND | SDF_COMMON; 85298d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->n_chan = devpriv->s_EeParameters.i_NbrDiChannel; 85398d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->maxdata = 1; 85498d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->len_chanlist = devpriv->s_EeParameters.i_NbrDiChannel; 85598d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->range_table = &range_digital; 85698d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->io_bits = 0; /* all bits input */ 857ae57b69639bcbd653821f7a4a14b87f6fa6743c0H Hartley Sweeten s->insn_bits = apci3xxx_di_insn_bits; 85898d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten } else { 85998d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->type = COMEDI_SUBD_UNUSED; 86098d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten } 86198d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten /* Allocate and Initialise DO Subdevice Structures */ 86298d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s = &dev->subdevices[3]; 86398d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten if (devpriv->s_EeParameters.i_NbrDoChannel) { 86498d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->type = COMEDI_SUBD_DO; 86598d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->subdev_flags = 86698d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten SDF_READABLE | SDF_WRITEABLE | SDF_GROUND | SDF_COMMON; 86798d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->n_chan = devpriv->s_EeParameters.i_NbrDoChannel; 86898d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->maxdata = devpriv->s_EeParameters.i_DoMaxdata; 86998d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->len_chanlist = devpriv->s_EeParameters.i_NbrDoChannel; 87098d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->range_table = &range_digital; 87198d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->io_bits = 0xf; /* all bits output */ 872c3d8605fca03adb70f712512b3df0e0311ac9b61H Hartley Sweeten s->insn_bits = apci3xxx_do_insn_bits; 87398d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten } else { 87498d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->type = COMEDI_SUBD_UNUSED; 87598d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten } 87698d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten 87798d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten /* Allocate and Initialise Timer Subdevice Structures */ 87898d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s = &dev->subdevices[4]; 87998d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten if (devpriv->s_EeParameters.i_Timer) { 88098d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->type = COMEDI_SUBD_TIMER; 88198d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->subdev_flags = SDF_WRITEABLE | SDF_GROUND | SDF_COMMON; 88298d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->n_chan = 1; 88398d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->maxdata = 0; 88498d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->len_chanlist = 1; 88598d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->range_table = &range_digital; 88698d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten 88798d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->insn_write = board->timer_write; 88898d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->insn_read = board->timer_read; 88998d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->insn_config = board->timer_config; 89098d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->insn_bits = board->timer_bits; 89198d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten } else { 89298d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->type = COMEDI_SUBD_UNUSED; 89398d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten } 89498d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten 89598d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten /* Allocate and Initialise TTL */ 89698d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s = &dev->subdevices[5]; 89798d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten if (board->i_NbrTTLChannel) { 89898d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->type = COMEDI_SUBD_TTLIO; 89998d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->subdev_flags = 90098d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten SDF_WRITEABLE | SDF_READABLE | SDF_GROUND | SDF_COMMON; 90198d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->n_chan = board->i_NbrTTLChannel; 90298d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->maxdata = 1; 90398d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->io_bits = 0; /* all bits input */ 90498d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->len_chanlist = board->i_NbrTTLChannel; 90598d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->range_table = &range_digital; 90698d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->insn_config = board->ttl_config; 90798d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->insn_bits = board->ttl_bits; 90898d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->insn_read = board->ttl_read; 90998d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->insn_write = board->ttl_write; 91098d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten } else { 91198d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->type = COMEDI_SUBD_UNUSED; 91298d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten } 91398d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten 91498d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten /* EEPROM */ 91598d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s = &dev->subdevices[6]; 91698d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten if (board->i_PCIEeprom) { 91798d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->type = COMEDI_SUBD_MEMORY; 91898d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->subdev_flags = SDF_READABLE | SDF_INTERNAL; 91998d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->n_chan = 256; 92098d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->maxdata = 0xffff; 92198d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->insn_read = i_ADDIDATA_InsnReadEeprom; 92298d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten } else { 92398d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->type = COMEDI_SUBD_UNUSED; 92498d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten } 92598d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten 9265e72c7a50709e60663217704b30501bf34afa448H Hartley Sweeten apci3xxx_reset(dev); 92798d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten return 0; 92898d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten} 92998d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten 93098d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweetenstatic void apci3xxx_detach(struct comedi_device *dev) 93198d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten{ 93298d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten struct addi_private *devpriv = dev->private; 933dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten 93498d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten if (devpriv) { 93598d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten if (dev->iobase) 9365e72c7a50709e60663217704b30501bf34afa448H Hartley Sweeten apci3xxx_reset(dev); 93798d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten if (dev->irq) 93898d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten free_irq(dev->irq, dev); 93998d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten if (devpriv->dw_AiBase) 94098d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten iounmap(devpriv->dw_AiBase); 94198d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten } 94298d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten comedi_pci_disable(dev); 943dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten} 944dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten 94520a22b706b8ee37d1a2282f2c9bf7f2c73a5a7a5H Hartley Sweetenstatic struct comedi_driver apci3xxx_driver = { 94620a22b706b8ee37d1a2282f2c9bf7f2c73a5a7a5H Hartley Sweeten .driver_name = "addi_apci_3xxx", 94720a22b706b8ee37d1a2282f2c9bf7f2c73a5a7a5H Hartley Sweeten .module = THIS_MODULE, 948dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten .auto_attach = apci3xxx_auto_attach, 94998d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten .detach = apci3xxx_detach, 95020a22b706b8ee37d1a2282f2c9bf7f2c73a5a7a5H Hartley Sweeten}; 95120a22b706b8ee37d1a2282f2c9bf7f2c73a5a7a5H Hartley Sweeten 952a690b7e535f2f97a3a05ee570715abeb60a8910fBill Pembertonstatic int apci3xxx_pci_probe(struct pci_dev *dev, 953b8f4ac237e382accd4b30c75043939f7ed9e79a6H Hartley Sweeten const struct pci_device_id *id) 95420a22b706b8ee37d1a2282f2c9bf7f2c73a5a7a5H Hartley Sweeten{ 955b8f4ac237e382accd4b30c75043939f7ed9e79a6H Hartley Sweeten return comedi_pci_auto_config(dev, &apci3xxx_driver, id->driver_data); 95620a22b706b8ee37d1a2282f2c9bf7f2c73a5a7a5H Hartley Sweeten} 95720a22b706b8ee37d1a2282f2c9bf7f2c73a5a7a5H Hartley Sweeten 95820a22b706b8ee37d1a2282f2c9bf7f2c73a5a7a5H Hartley Sweetenstatic DEFINE_PCI_DEVICE_TABLE(apci3xxx_pci_table) = { 959dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten { PCI_VDEVICE(ADDIDATA, 0x3010), BOARD_APCI3000_16 }, 960dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten { PCI_VDEVICE(ADDIDATA, 0x300f), BOARD_APCI3000_8 }, 961dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten { PCI_VDEVICE(ADDIDATA, 0x300e), BOARD_APCI3000_4 }, 962dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten { PCI_VDEVICE(ADDIDATA, 0x3013), BOARD_APCI3006_16 }, 963dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten { PCI_VDEVICE(ADDIDATA, 0x3014), BOARD_APCI3006_8 }, 964dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten { PCI_VDEVICE(ADDIDATA, 0x3015), BOARD_APCI3006_4 }, 965dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten { PCI_VDEVICE(ADDIDATA, 0x3016), BOARD_APCI3010_16 }, 966dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten { PCI_VDEVICE(ADDIDATA, 0x3017), BOARD_APCI3010_8 }, 967dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten { PCI_VDEVICE(ADDIDATA, 0x3018), BOARD_APCI3010_4 }, 968dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten { PCI_VDEVICE(ADDIDATA, 0x3019), BOARD_APCI3016_16 }, 969dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten { PCI_VDEVICE(ADDIDATA, 0x301a), BOARD_APCI3016_8 }, 970dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten { PCI_VDEVICE(ADDIDATA, 0x301b), BOARD_APCI3016_4 }, 971dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten { PCI_VDEVICE(ADDIDATA, 0x301c), BOARD_APCI3100_16_4 }, 972dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten { PCI_VDEVICE(ADDIDATA, 0x301d), BOARD_APCI3100_8_4 }, 973dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten { PCI_VDEVICE(ADDIDATA, 0x301e), BOARD_APCI3106_16_4 }, 974dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten { PCI_VDEVICE(ADDIDATA, 0x301f), BOARD_APCI3106_8_4 }, 975dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten { PCI_VDEVICE(ADDIDATA, 0x3020), BOARD_APCI3110_16_4 }, 976dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten { PCI_VDEVICE(ADDIDATA, 0x3021), BOARD_APCI3110_8_4 }, 977dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten { PCI_VDEVICE(ADDIDATA, 0x3022), BOARD_APCI3116_16_4 }, 978dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten { PCI_VDEVICE(ADDIDATA, 0x3023), BOARD_APCI3116_8_4 }, 979dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten { PCI_VDEVICE(ADDIDATA, 0x300B), BOARD_APCI3003 }, 980dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten { PCI_VDEVICE(ADDIDATA, 0x3002), BOARD_APCI3002_16 }, 981dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten { PCI_VDEVICE(ADDIDATA, 0x3003), BOARD_APCI3002_8 }, 982dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten { PCI_VDEVICE(ADDIDATA, 0x3004), BOARD_APCI3002_4 }, 983dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten { PCI_VDEVICE(ADDIDATA, 0x3024), BOARD_APCI3500 }, 984317285d71acccbda2fbab7e53d6b33c52a151a32H Hartley Sweeten { 0 } 985317285d71acccbda2fbab7e53d6b33c52a151a32H Hartley Sweeten}; 98620a22b706b8ee37d1a2282f2c9bf7f2c73a5a7a5H Hartley SweetenMODULE_DEVICE_TABLE(pci, apci3xxx_pci_table); 987317285d71acccbda2fbab7e53d6b33c52a151a32H Hartley Sweeten 98820a22b706b8ee37d1a2282f2c9bf7f2c73a5a7a5H Hartley Sweetenstatic struct pci_driver apci3xxx_pci_driver = { 98920a22b706b8ee37d1a2282f2c9bf7f2c73a5a7a5H Hartley Sweeten .name = "addi_apci_3xxx", 99020a22b706b8ee37d1a2282f2c9bf7f2c73a5a7a5H Hartley Sweeten .id_table = apci3xxx_pci_table, 99120a22b706b8ee37d1a2282f2c9bf7f2c73a5a7a5H Hartley Sweeten .probe = apci3xxx_pci_probe, 9929901a4d75d007686e8f6473189cafc4b216b7449Peter Huewe .remove = comedi_pci_auto_unconfig, 99320a22b706b8ee37d1a2282f2c9bf7f2c73a5a7a5H Hartley Sweeten}; 99420a22b706b8ee37d1a2282f2c9bf7f2c73a5a7a5H Hartley Sweetenmodule_comedi_pci_driver(apci3xxx_driver, apci3xxx_pci_driver); 99590f703d30dd3e0c16ff80f35e34e511385a05ad5Arun Thomas 99690f703d30dd3e0c16ff80f35e34e511385a05ad5Arun ThomasMODULE_AUTHOR("Comedi http://www.comedi.org"); 99790f703d30dd3e0c16ff80f35e34e511385a05ad5Arun ThomasMODULE_DESCRIPTION("Comedi low-level driver"); 99890f703d30dd3e0c16ff80f35e34e511385a05ad5Arun ThomasMODULE_LICENSE("GPL"); 999