addi_apci_3xxx.c revision 2107347327f7bfd47e6af9fe0510a1750f10f884
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 1698a856213efb9fec7a45491170d9b589ce55572dH Hartley Sweetenstatic const struct comedi_lrange apci3xxx_ai_range = { 1798a856213efb9fec7a45491170d9b589ce55572dH Hartley Sweeten 8, { 1898a856213efb9fec7a45491170d9b589ce55572dH Hartley Sweeten BIP_RANGE(10), 1998a856213efb9fec7a45491170d9b589ce55572dH Hartley Sweeten BIP_RANGE(5), 2098a856213efb9fec7a45491170d9b589ce55572dH Hartley Sweeten BIP_RANGE(2), 2198a856213efb9fec7a45491170d9b589ce55572dH Hartley Sweeten BIP_RANGE(1), 2298a856213efb9fec7a45491170d9b589ce55572dH Hartley Sweeten UNI_RANGE(10), 2398a856213efb9fec7a45491170d9b589ce55572dH Hartley Sweeten UNI_RANGE(5), 2498a856213efb9fec7a45491170d9b589ce55572dH Hartley Sweeten UNI_RANGE(2), 2598a856213efb9fec7a45491170d9b589ce55572dH Hartley Sweeten UNI_RANGE(1) 2698a856213efb9fec7a45491170d9b589ce55572dH Hartley Sweeten } 2798a856213efb9fec7a45491170d9b589ce55572dH Hartley Sweeten}; 2898a856213efb9fec7a45491170d9b589ce55572dH Hartley Sweeten 2998a856213efb9fec7a45491170d9b589ce55572dH Hartley Sweetenstatic const struct comedi_lrange apci3xxx_ao_range = { 3098a856213efb9fec7a45491170d9b589ce55572dH Hartley Sweeten 2, { 3198a856213efb9fec7a45491170d9b589ce55572dH Hartley Sweeten BIP_RANGE(10), 3298a856213efb9fec7a45491170d9b589ce55572dH Hartley Sweeten UNI_RANGE(10) 3398a856213efb9fec7a45491170d9b589ce55572dH Hartley Sweeten } 3498a856213efb9fec7a45491170d9b589ce55572dH Hartley Sweeten}; 3598a856213efb9fec7a45491170d9b589ce55572dH Hartley Sweeten 36dbae4575661da840353f12dd76499ad587c92519H Hartley Sweetenenum apci3xxx_boardid { 37dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten BOARD_APCI3000_16, 38dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten BOARD_APCI3000_8, 39dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten BOARD_APCI3000_4, 40dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten BOARD_APCI3006_16, 41dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten BOARD_APCI3006_8, 42dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten BOARD_APCI3006_4, 43dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten BOARD_APCI3010_16, 44dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten BOARD_APCI3010_8, 45dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten BOARD_APCI3010_4, 46dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten BOARD_APCI3016_16, 47dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten BOARD_APCI3016_8, 48dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten BOARD_APCI3016_4, 49dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten BOARD_APCI3100_16_4, 50dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten BOARD_APCI3100_8_4, 51dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten BOARD_APCI3106_16_4, 52dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten BOARD_APCI3106_8_4, 53dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten BOARD_APCI3110_16_4, 54dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten BOARD_APCI3110_8_4, 55dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten BOARD_APCI3116_16_4, 56dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten BOARD_APCI3116_8_4, 57dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten BOARD_APCI3003, 58dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten BOARD_APCI3002_16, 59dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten BOARD_APCI3002_8, 60dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten BOARD_APCI3002_4, 61dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten BOARD_APCI3500, 62dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten}; 63dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten 6420a22b706b8ee37d1a2282f2c9bf7f2c73a5a7a5H Hartley Sweetenstatic const struct addi_board apci3xxx_boardtypes[] = { 65dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten [BOARD_APCI3000_16] = { 66c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_DriverName = "apci3000-16", 67c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_IorangeBase1 = 256, 68c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_PCIEeprom = ADDIDATA_NO_EEPROM, 69c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_EepromChip = ADDIDATA_9054, 70c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannel = 16, 71c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannelDiff = 8, 72c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiChannelList = 16, 73c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiMaxdata = 4095, 74c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrTTLChannel = 24, 75c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .b_AvailableConvertUnit = 6, 76c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ui_MinAcquisitiontimeNs = 10000, 77c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_config = i_APCI3XXX_InsnConfigAnalogInput, 78c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_read = i_APCI3XXX_InsnReadAnalogInput, 79c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_config = i_APCI3XXX_InsnConfigInitTTLIO, 80c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_bits = i_APCI3XXX_InsnBitsTTLIO, 81c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_read = i_APCI3XXX_InsnReadTTLIO, 82c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_write = i_APCI3XXX_InsnWriteTTLIO, 83dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten }, 84dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten [BOARD_APCI3000_8] = { 85c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_DriverName = "apci3000-8", 86c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_IorangeBase1 = 256, 87c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_PCIEeprom = ADDIDATA_NO_EEPROM, 88c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_EepromChip = ADDIDATA_9054, 89c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannel = 8, 90c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannelDiff = 4, 91c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiChannelList = 8, 92c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiMaxdata = 4095, 93c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrTTLChannel = 24, 94c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .b_AvailableConvertUnit = 6, 95c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ui_MinAcquisitiontimeNs = 10000, 96c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_config = i_APCI3XXX_InsnConfigAnalogInput, 97c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_read = i_APCI3XXX_InsnReadAnalogInput, 98c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_config = i_APCI3XXX_InsnConfigInitTTLIO, 99c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_bits = i_APCI3XXX_InsnBitsTTLIO, 100c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_read = i_APCI3XXX_InsnReadTTLIO, 101c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_write = i_APCI3XXX_InsnWriteTTLIO, 102dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten }, 103dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten [BOARD_APCI3000_4] = { 104c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_DriverName = "apci3000-4", 105c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_IorangeBase1 = 256, 106c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_PCIEeprom = ADDIDATA_NO_EEPROM, 107c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_EepromChip = ADDIDATA_9054, 108c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannel = 4, 109c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannelDiff = 2, 110c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiChannelList = 4, 111c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiMaxdata = 4095, 112c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrTTLChannel = 24, 113c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .b_AvailableConvertUnit = 6, 114c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ui_MinAcquisitiontimeNs = 10000, 115c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_config = i_APCI3XXX_InsnConfigAnalogInput, 116c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_read = i_APCI3XXX_InsnReadAnalogInput, 117c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_config = i_APCI3XXX_InsnConfigInitTTLIO, 118c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_bits = i_APCI3XXX_InsnBitsTTLIO, 119c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_read = i_APCI3XXX_InsnReadTTLIO, 120c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_write = i_APCI3XXX_InsnWriteTTLIO, 121dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten }, 122dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten [BOARD_APCI3006_16] = { 123c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_DriverName = "apci3006-16", 124c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_IorangeBase1 = 256, 125c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_PCIEeprom = ADDIDATA_NO_EEPROM, 126c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_EepromChip = ADDIDATA_9054, 127c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannel = 16, 128c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannelDiff = 8, 129c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiChannelList = 16, 130c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiMaxdata = 65535, 131c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrTTLChannel = 24, 132c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .b_AvailableConvertUnit = 6, 133c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ui_MinAcquisitiontimeNs = 10000, 134c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_config = i_APCI3XXX_InsnConfigAnalogInput, 135c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_read = i_APCI3XXX_InsnReadAnalogInput, 136c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_config = i_APCI3XXX_InsnConfigInitTTLIO, 137c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_bits = i_APCI3XXX_InsnBitsTTLIO, 138c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_read = i_APCI3XXX_InsnReadTTLIO, 139c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_write = i_APCI3XXX_InsnWriteTTLIO, 140dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten }, 141dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten [BOARD_APCI3006_8] = { 142c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_DriverName = "apci3006-8", 143c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_IorangeBase1 = 256, 144c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_PCIEeprom = ADDIDATA_NO_EEPROM, 145c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_EepromChip = ADDIDATA_9054, 146c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannel = 8, 147c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannelDiff = 4, 148c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiChannelList = 8, 149c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiMaxdata = 65535, 150c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrTTLChannel = 24, 151c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .b_AvailableConvertUnit = 6, 152c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ui_MinAcquisitiontimeNs = 10000, 153c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_config = i_APCI3XXX_InsnConfigAnalogInput, 154c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_read = i_APCI3XXX_InsnReadAnalogInput, 155c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_config = i_APCI3XXX_InsnConfigInitTTLIO, 156c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_bits = i_APCI3XXX_InsnBitsTTLIO, 157c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_read = i_APCI3XXX_InsnReadTTLIO, 158c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_write = i_APCI3XXX_InsnWriteTTLIO, 159dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten }, 160dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten [BOARD_APCI3006_4] = { 161c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_DriverName = "apci3006-4", 162c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_IorangeBase1 = 256, 163c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_PCIEeprom = ADDIDATA_NO_EEPROM, 164c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_EepromChip = ADDIDATA_9054, 165c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannel = 4, 166c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannelDiff = 2, 167c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiChannelList = 4, 168c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiMaxdata = 65535, 169c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrTTLChannel = 24, 170c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .b_AvailableConvertUnit = 6, 171c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ui_MinAcquisitiontimeNs = 10000, 172c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_config = i_APCI3XXX_InsnConfigAnalogInput, 173c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_read = i_APCI3XXX_InsnReadAnalogInput, 174c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_config = i_APCI3XXX_InsnConfigInitTTLIO, 175c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_bits = i_APCI3XXX_InsnBitsTTLIO, 176c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_read = i_APCI3XXX_InsnReadTTLIO, 177c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_write = i_APCI3XXX_InsnWriteTTLIO, 178dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten }, 179dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten [BOARD_APCI3010_16] = { 180c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_DriverName = "apci3010-16", 181c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_IorangeBase1 = 256, 182c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_PCIEeprom = ADDIDATA_NO_EEPROM, 183c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_EepromChip = ADDIDATA_9054, 184c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannel = 16, 185c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannelDiff = 8, 186c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiChannelList = 16, 187c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiMaxdata = 4095, 188c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrDiChannel = 4, 189c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrDoChannel = 4, 190c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_DoMaxdata = 1, 191c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrTTLChannel = 24, 192c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .b_AvailableConvertUnit = 6, 193c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ui_MinAcquisitiontimeNs = 5000, 194c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_config = i_APCI3XXX_InsnConfigAnalogInput, 195c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_read = i_APCI3XXX_InsnReadAnalogInput, 196c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_config = i_APCI3XXX_InsnConfigInitTTLIO, 197c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_bits = i_APCI3XXX_InsnBitsTTLIO, 198c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_read = i_APCI3XXX_InsnReadTTLIO, 199c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_write = i_APCI3XXX_InsnWriteTTLIO, 200dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten }, 201dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten [BOARD_APCI3010_8] = { 202c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_DriverName = "apci3010-8", 203c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_IorangeBase1 = 256, 204c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_PCIEeprom = ADDIDATA_NO_EEPROM, 205c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_EepromChip = ADDIDATA_9054, 206c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannel = 8, 207c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannelDiff = 4, 208c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiChannelList = 8, 209c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiMaxdata = 4095, 210c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrDiChannel = 4, 211c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrDoChannel = 4, 212c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_DoMaxdata = 1, 213c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrTTLChannel = 24, 214c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .b_AvailableConvertUnit = 6, 215c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ui_MinAcquisitiontimeNs = 5000, 216c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_config = i_APCI3XXX_InsnConfigAnalogInput, 217c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_read = i_APCI3XXX_InsnReadAnalogInput, 218c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_config = i_APCI3XXX_InsnConfigInitTTLIO, 219c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_bits = i_APCI3XXX_InsnBitsTTLIO, 220c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_read = i_APCI3XXX_InsnReadTTLIO, 221c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_write = i_APCI3XXX_InsnWriteTTLIO, 222dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten }, 223dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten [BOARD_APCI3010_4] = { 224c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_DriverName = "apci3010-4", 225c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_IorangeBase1 = 256, 226c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_PCIEeprom = ADDIDATA_NO_EEPROM, 227c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_EepromChip = ADDIDATA_9054, 228c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannel = 4, 229c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannelDiff = 2, 230c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiChannelList = 4, 231c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiMaxdata = 4095, 232c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrDiChannel = 4, 233c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrDoChannel = 4, 234c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_DoMaxdata = 1, 235c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrTTLChannel = 24, 236c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .b_AvailableConvertUnit = 6, 237c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ui_MinAcquisitiontimeNs = 5000, 238c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_config = i_APCI3XXX_InsnConfigAnalogInput, 239c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_read = i_APCI3XXX_InsnReadAnalogInput, 240c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_config = i_APCI3XXX_InsnConfigInitTTLIO, 241c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_bits = i_APCI3XXX_InsnBitsTTLIO, 242c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_read = i_APCI3XXX_InsnReadTTLIO, 243c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_write = i_APCI3XXX_InsnWriteTTLIO, 244dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten }, 245dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten [BOARD_APCI3016_16] = { 246c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_DriverName = "apci3016-16", 247c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_IorangeBase1 = 256, 248c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_PCIEeprom = ADDIDATA_NO_EEPROM, 249c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_EepromChip = ADDIDATA_9054, 250c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannel = 16, 251c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannelDiff = 8, 252c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiChannelList = 16, 253c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiMaxdata = 65535, 254c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrDiChannel = 4, 255c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrDoChannel = 4, 256c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_DoMaxdata = 1, 257c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrTTLChannel = 24, 258c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .b_AvailableConvertUnit = 6, 259c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ui_MinAcquisitiontimeNs = 5000, 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 .i_NbrDiChannel = 4, 277c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrDoChannel = 4, 278c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_DoMaxdata = 1, 279c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrTTLChannel = 24, 280c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .b_AvailableConvertUnit = 6, 281c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ui_MinAcquisitiontimeNs = 5000, 282c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_config = i_APCI3XXX_InsnConfigAnalogInput, 283c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_read = i_APCI3XXX_InsnReadAnalogInput, 284c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_config = i_APCI3XXX_InsnConfigInitTTLIO, 285c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_bits = i_APCI3XXX_InsnBitsTTLIO, 286c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_read = i_APCI3XXX_InsnReadTTLIO, 287c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_write = i_APCI3XXX_InsnWriteTTLIO, 288dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten }, 289dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten [BOARD_APCI3016_4] = { 290c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_DriverName = "apci3016-4", 291c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_IorangeBase1 = 256, 292c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_PCIEeprom = ADDIDATA_NO_EEPROM, 293c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_EepromChip = ADDIDATA_9054, 294c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannel = 4, 295c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannelDiff = 2, 296c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiChannelList = 4, 297c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiMaxdata = 65535, 298c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrDiChannel = 4, 299c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrDoChannel = 4, 300c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_DoMaxdata = 1, 301c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrTTLChannel = 24, 302c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .b_AvailableConvertUnit = 6, 303c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ui_MinAcquisitiontimeNs = 5000, 304c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_config = i_APCI3XXX_InsnConfigAnalogInput, 305c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_read = i_APCI3XXX_InsnReadAnalogInput, 306c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_config = i_APCI3XXX_InsnConfigInitTTLIO, 307c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_bits = i_APCI3XXX_InsnBitsTTLIO, 308c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_read = i_APCI3XXX_InsnReadTTLIO, 309c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_write = i_APCI3XXX_InsnWriteTTLIO, 310dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten }, 311dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten [BOARD_APCI3100_16_4] = { 312c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_DriverName = "apci3100-16-4", 313c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_IorangeBase1 = 256, 314c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_PCIEeprom = ADDIDATA_NO_EEPROM, 315c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_EepromChip = ADDIDATA_9054, 316c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannel = 16, 317c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannelDiff = 8, 318c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiChannelList = 16, 319c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAoChannel = 4, 320c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiMaxdata = 4095, 321c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AoMaxdata = 4095, 322c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrTTLChannel = 24, 323c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .b_AvailableConvertUnit = 6, 324c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ui_MinAcquisitiontimeNs = 10000, 325c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_config = i_APCI3XXX_InsnConfigAnalogInput, 326c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_read = i_APCI3XXX_InsnReadAnalogInput, 327c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ao_write = i_APCI3XXX_InsnWriteAnalogOutput, 328c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_config = i_APCI3XXX_InsnConfigInitTTLIO, 329c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_bits = i_APCI3XXX_InsnBitsTTLIO, 330c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_read = i_APCI3XXX_InsnReadTTLIO, 331c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_write = i_APCI3XXX_InsnWriteTTLIO, 332dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten }, 333dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten [BOARD_APCI3100_8_4] = { 334c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_DriverName = "apci3100-8-4", 335c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_IorangeBase1 = 256, 336c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_PCIEeprom = ADDIDATA_NO_EEPROM, 337c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_EepromChip = ADDIDATA_9054, 338c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannel = 8, 339c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannelDiff = 4, 340c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiChannelList = 8, 341c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAoChannel = 4, 342c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiMaxdata = 4095, 343c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AoMaxdata = 4095, 344c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrTTLChannel = 24, 345c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .b_AvailableConvertUnit = 6, 346c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ui_MinAcquisitiontimeNs = 10000, 347c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_config = i_APCI3XXX_InsnConfigAnalogInput, 348c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_read = i_APCI3XXX_InsnReadAnalogInput, 349c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ao_write = i_APCI3XXX_InsnWriteAnalogOutput, 350c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_config = i_APCI3XXX_InsnConfigInitTTLIO, 351c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_bits = i_APCI3XXX_InsnBitsTTLIO, 352c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_read = i_APCI3XXX_InsnReadTTLIO, 353c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_write = i_APCI3XXX_InsnWriteTTLIO, 354dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten }, 355dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten [BOARD_APCI3106_16_4] = { 356c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_DriverName = "apci3106-16-4", 357c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_IorangeBase1 = 256, 358c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_PCIEeprom = ADDIDATA_NO_EEPROM, 359c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_EepromChip = ADDIDATA_9054, 360c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannel = 16, 361c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannelDiff = 8, 362c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiChannelList = 16, 363c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAoChannel = 4, 364c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiMaxdata = 65535, 365c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AoMaxdata = 4095, 366c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrTTLChannel = 24, 367c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .b_AvailableConvertUnit = 6, 368c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ui_MinAcquisitiontimeNs = 10000, 369c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_config = i_APCI3XXX_InsnConfigAnalogInput, 370c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_read = i_APCI3XXX_InsnReadAnalogInput, 371c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ao_write = i_APCI3XXX_InsnWriteAnalogOutput, 372c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_config = i_APCI3XXX_InsnConfigInitTTLIO, 373c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_bits = i_APCI3XXX_InsnBitsTTLIO, 374c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_read = i_APCI3XXX_InsnReadTTLIO, 375c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_write = i_APCI3XXX_InsnWriteTTLIO, 376dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten }, 377dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten [BOARD_APCI3106_8_4] = { 378c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_DriverName = "apci3106-8-4", 379c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_IorangeBase1 = 256, 380c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_PCIEeprom = ADDIDATA_NO_EEPROM, 381c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_EepromChip = ADDIDATA_9054, 382c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannel = 8, 383c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannelDiff = 4, 384c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiChannelList = 8, 385c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAoChannel = 4, 386c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiMaxdata = 65535, 387c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AoMaxdata = 4095, 388c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrTTLChannel = 24, 389c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .b_AvailableConvertUnit = 6, 390c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ui_MinAcquisitiontimeNs = 10000, 391c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_config = i_APCI3XXX_InsnConfigAnalogInput, 392c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_read = i_APCI3XXX_InsnReadAnalogInput, 393c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ao_write = i_APCI3XXX_InsnWriteAnalogOutput, 394c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_config = i_APCI3XXX_InsnConfigInitTTLIO, 395c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_bits = i_APCI3XXX_InsnBitsTTLIO, 396c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_read = i_APCI3XXX_InsnReadTTLIO, 397c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_write = i_APCI3XXX_InsnWriteTTLIO, 398dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten }, 399dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten [BOARD_APCI3110_16_4] = { 400c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_DriverName = "apci3110-16-4", 401c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_IorangeBase1 = 256, 402c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_PCIEeprom = ADDIDATA_NO_EEPROM, 403c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_EepromChip = ADDIDATA_9054, 404c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannel = 16, 405c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannelDiff = 8, 406c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiChannelList = 16, 407c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAoChannel = 4, 408c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiMaxdata = 4095, 409c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AoMaxdata = 4095, 410c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrDiChannel = 4, 411c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrDoChannel = 4, 412c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_DoMaxdata = 1, 413c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrTTLChannel = 24, 414c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .b_AvailableConvertUnit = 6, 415c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ui_MinAcquisitiontimeNs = 5000, 416c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_config = i_APCI3XXX_InsnConfigAnalogInput, 417c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_read = i_APCI3XXX_InsnReadAnalogInput, 418c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ao_write = i_APCI3XXX_InsnWriteAnalogOutput, 419c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_config = i_APCI3XXX_InsnConfigInitTTLIO, 420c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_bits = i_APCI3XXX_InsnBitsTTLIO, 421c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_read = i_APCI3XXX_InsnReadTTLIO, 422c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_write = i_APCI3XXX_InsnWriteTTLIO, 423dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten }, 424dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten [BOARD_APCI3110_8_4] = { 425c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_DriverName = "apci3110-8-4", 426c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_IorangeBase1 = 256, 427c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_PCIEeprom = ADDIDATA_NO_EEPROM, 428c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_EepromChip = ADDIDATA_9054, 429c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannel = 8, 430c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannelDiff = 4, 431c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiChannelList = 8, 432c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAoChannel = 4, 433c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiMaxdata = 4095, 434c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AoMaxdata = 4095, 435c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrDiChannel = 4, 436c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrDoChannel = 4, 437c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_DoMaxdata = 1, 438c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrTTLChannel = 24, 439c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .b_AvailableConvertUnit = 6, 440c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ui_MinAcquisitiontimeNs = 5000, 441c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_config = i_APCI3XXX_InsnConfigAnalogInput, 442c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_read = i_APCI3XXX_InsnReadAnalogInput, 443c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ao_write = i_APCI3XXX_InsnWriteAnalogOutput, 444c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_config = i_APCI3XXX_InsnConfigInitTTLIO, 445c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_bits = i_APCI3XXX_InsnBitsTTLIO, 446c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_read = i_APCI3XXX_InsnReadTTLIO, 447c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_write = i_APCI3XXX_InsnWriteTTLIO, 448dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten }, 449dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten [BOARD_APCI3116_16_4] = { 450c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_DriverName = "apci3116-16-4", 451c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_IorangeBase1 = 256, 452c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_PCIEeprom = ADDIDATA_NO_EEPROM, 453c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_EepromChip = ADDIDATA_9054, 454c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannel = 16, 455c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannelDiff = 8, 456c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiChannelList = 16, 457c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAoChannel = 4, 458c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiMaxdata = 65535, 459c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AoMaxdata = 4095, 460c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrDiChannel = 4, 461c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrDoChannel = 4, 462c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_DoMaxdata = 1, 463c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrTTLChannel = 24, 464c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .b_AvailableConvertUnit = 6, 465c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ui_MinAcquisitiontimeNs = 5000, 466c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_config = i_APCI3XXX_InsnConfigAnalogInput, 467c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_read = i_APCI3XXX_InsnReadAnalogInput, 468c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ao_write = i_APCI3XXX_InsnWriteAnalogOutput, 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_APCI3116_8_4] = { 475c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_DriverName = "apci3116-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 = 65535, 484c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AoMaxdata = 4095, 485c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrDiChannel = 4, 486c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrDoChannel = 4, 487c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_DoMaxdata = 1, 488c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrTTLChannel = 24, 489c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .b_AvailableConvertUnit = 6, 490c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ui_MinAcquisitiontimeNs = 5000, 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_APCI3003] = { 500c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_DriverName = "apci3003", 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_NbrAiChannelDiff = 4, 505c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiChannelList = 4, 506c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiMaxdata = 65535, 507c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrDiChannel = 4, 508c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrDoChannel = 4, 509c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_DoMaxdata = 1, 510c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .b_AvailableConvertUnit = 7, 511c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ui_MinAcquisitiontimeNs = 2500, 512c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_config = i_APCI3XXX_InsnConfigAnalogInput, 513c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_read = i_APCI3XXX_InsnReadAnalogInput, 514dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten }, 515dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten [BOARD_APCI3002_16] = { 516c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_DriverName = "apci3002-16", 517c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_IorangeBase1 = 256, 518c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_PCIEeprom = ADDIDATA_NO_EEPROM, 519c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_EepromChip = ADDIDATA_9054, 520c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannelDiff = 16, 521c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiChannelList = 16, 522c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiMaxdata = 65535, 523c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrDiChannel = 4, 524c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrDoChannel = 4, 525c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_DoMaxdata = 1, 526c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .b_AvailableConvertUnit = 6, 527c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ui_MinAcquisitiontimeNs = 5000, 528c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_config = i_APCI3XXX_InsnConfigAnalogInput, 529c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_read = i_APCI3XXX_InsnReadAnalogInput, 530dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten }, 531dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten [BOARD_APCI3002_8] = { 532c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_DriverName = "apci3002-8", 533c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_IorangeBase1 = 256, 534c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_PCIEeprom = ADDIDATA_NO_EEPROM, 535c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_EepromChip = ADDIDATA_9054, 536c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannelDiff = 8, 537c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiChannelList = 8, 538c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiMaxdata = 65535, 539c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrDiChannel = 4, 540c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrDoChannel = 4, 541c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_DoMaxdata = 1, 542c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .b_AvailableConvertUnit = 6, 543c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ui_MinAcquisitiontimeNs = 5000, 544c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_config = i_APCI3XXX_InsnConfigAnalogInput, 545c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_read = i_APCI3XXX_InsnReadAnalogInput, 546dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten }, 547dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten [BOARD_APCI3002_4] = { 548c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_DriverName = "apci3002-4", 549c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_IorangeBase1 = 256, 550c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_PCIEeprom = ADDIDATA_NO_EEPROM, 551c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_EepromChip = ADDIDATA_9054, 552c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrAiChannelDiff = 4, 553c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiChannelList = 4, 554c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AiMaxdata = 65535, 555c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrDiChannel = 4, 556c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrDoChannel = 4, 557c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_DoMaxdata = 1, 558c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .b_AvailableConvertUnit = 6, 559c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ui_MinAcquisitiontimeNs = 5000, 560c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_config = i_APCI3XXX_InsnConfigAnalogInput, 561c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ai_read = i_APCI3XXX_InsnReadAnalogInput, 562dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten }, 563dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten [BOARD_APCI3500] = { 564c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .pc_DriverName = "apci3500", 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_NbrAoChannel = 4, 569c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_AoMaxdata = 4095, 570c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .i_NbrTTLChannel = 24, 571c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ao_write = i_APCI3XXX_InsnWriteAnalogOutput, 572c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_config = i_APCI3XXX_InsnConfigInitTTLIO, 573c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_bits = i_APCI3XXX_InsnBitsTTLIO, 574c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_read = i_APCI3XXX_InsnReadTTLIO, 575c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten .ttl_write = i_APCI3XXX_InsnWriteTTLIO, 576c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten }, 577c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten}; 578c0a053b8b24d72413a82a16a41f635e6040ccf34H Hartley Sweeten 5796c5b0fff8eb76913f0d38e72f4e68e19ea91de04H Hartley Sweetenstatic irqreturn_t apci3xxx_irq_handler(int irq, void *d) 5806c5b0fff8eb76913f0d38e72f4e68e19ea91de04H Hartley Sweeten{ 5816c5b0fff8eb76913f0d38e72f4e68e19ea91de04H Hartley Sweeten struct comedi_device *dev = d; 5826c5b0fff8eb76913f0d38e72f4e68e19ea91de04H Hartley Sweeten struct addi_private *devpriv = dev->private; 5836c5b0fff8eb76913f0d38e72f4e68e19ea91de04H Hartley Sweeten unsigned int status; 5846c5b0fff8eb76913f0d38e72f4e68e19ea91de04H Hartley Sweeten int i; 5856c5b0fff8eb76913f0d38e72f4e68e19ea91de04H Hartley Sweeten 5866c5b0fff8eb76913f0d38e72f4e68e19ea91de04H Hartley Sweeten /* Test if interrupt occur */ 5876c5b0fff8eb76913f0d38e72f4e68e19ea91de04H Hartley Sweeten status = readl(devpriv->dw_AiBase + 16); 5886c5b0fff8eb76913f0d38e72f4e68e19ea91de04H Hartley Sweeten if ((status & 0x2) == 0x2) { 5896c5b0fff8eb76913f0d38e72f4e68e19ea91de04H Hartley Sweeten /* Reset the interrupt */ 5906c5b0fff8eb76913f0d38e72f4e68e19ea91de04H Hartley Sweeten writel(status, devpriv->dw_AiBase + 16); 5916c5b0fff8eb76913f0d38e72f4e68e19ea91de04H Hartley Sweeten 5926c5b0fff8eb76913f0d38e72f4e68e19ea91de04H Hartley Sweeten /* Test if interrupt enabled */ 5936c5b0fff8eb76913f0d38e72f4e68e19ea91de04H Hartley Sweeten if (devpriv->b_EocEosInterrupt == 1) { 5946c5b0fff8eb76913f0d38e72f4e68e19ea91de04H Hartley Sweeten /* Read all analog inputs value */ 5956c5b0fff8eb76913f0d38e72f4e68e19ea91de04H Hartley Sweeten for (i = 0; i < devpriv->ui_AiNbrofChannels; i++) { 5966c5b0fff8eb76913f0d38e72f4e68e19ea91de04H Hartley Sweeten unsigned int val; 5976c5b0fff8eb76913f0d38e72f4e68e19ea91de04H Hartley Sweeten 5986c5b0fff8eb76913f0d38e72f4e68e19ea91de04H Hartley Sweeten val = readl(devpriv->dw_AiBase + 28); 5996c5b0fff8eb76913f0d38e72f4e68e19ea91de04H Hartley Sweeten devpriv->ui_AiReadData[i] = val; 6006c5b0fff8eb76913f0d38e72f4e68e19ea91de04H Hartley Sweeten } 6016c5b0fff8eb76913f0d38e72f4e68e19ea91de04H Hartley Sweeten 6026c5b0fff8eb76913f0d38e72f4e68e19ea91de04H Hartley Sweeten /* Set the interrupt flag */ 6036c5b0fff8eb76913f0d38e72f4e68e19ea91de04H Hartley Sweeten devpriv->b_EocEosInterrupt = 2; 6046c5b0fff8eb76913f0d38e72f4e68e19ea91de04H Hartley Sweeten 6056c5b0fff8eb76913f0d38e72f4e68e19ea91de04H Hartley Sweeten /* Send a signal to from kernel to user space */ 6066c5b0fff8eb76913f0d38e72f4e68e19ea91de04H Hartley Sweeten send_sig(SIGIO, devpriv->tsk_Current, 0); 6076c5b0fff8eb76913f0d38e72f4e68e19ea91de04H Hartley Sweeten } 6086c5b0fff8eb76913f0d38e72f4e68e19ea91de04H Hartley Sweeten } 6096c5b0fff8eb76913f0d38e72f4e68e19ea91de04H Hartley Sweeten return IRQ_RETVAL(1); 6106c5b0fff8eb76913f0d38e72f4e68e19ea91de04H Hartley Sweeten} 6116c5b0fff8eb76913f0d38e72f4e68e19ea91de04H Hartley Sweeten 612ae57b69639bcbd653821f7a4a14b87f6fa6743c0H Hartley Sweetenstatic int apci3xxx_di_insn_bits(struct comedi_device *dev, 613ae57b69639bcbd653821f7a4a14b87f6fa6743c0H Hartley Sweeten struct comedi_subdevice *s, 614ae57b69639bcbd653821f7a4a14b87f6fa6743c0H Hartley Sweeten struct comedi_insn *insn, 615ae57b69639bcbd653821f7a4a14b87f6fa6743c0H Hartley Sweeten unsigned int *data) 616ae57b69639bcbd653821f7a4a14b87f6fa6743c0H Hartley Sweeten{ 617ae57b69639bcbd653821f7a4a14b87f6fa6743c0H Hartley Sweeten struct addi_private *devpriv = dev->private; 618ae57b69639bcbd653821f7a4a14b87f6fa6743c0H Hartley Sweeten 619ae57b69639bcbd653821f7a4a14b87f6fa6743c0H Hartley Sweeten data[1] = inl(devpriv->iobase + 32) & 0xf; 620ae57b69639bcbd653821f7a4a14b87f6fa6743c0H Hartley Sweeten 621ae57b69639bcbd653821f7a4a14b87f6fa6743c0H Hartley Sweeten return insn->n; 622ae57b69639bcbd653821f7a4a14b87f6fa6743c0H Hartley Sweeten} 623ae57b69639bcbd653821f7a4a14b87f6fa6743c0H Hartley Sweeten 624c3d8605fca03adb70f712512b3df0e0311ac9b61H Hartley Sweetenstatic int apci3xxx_do_insn_bits(struct comedi_device *dev, 625c3d8605fca03adb70f712512b3df0e0311ac9b61H Hartley Sweeten struct comedi_subdevice *s, 626c3d8605fca03adb70f712512b3df0e0311ac9b61H Hartley Sweeten struct comedi_insn *insn, 627c3d8605fca03adb70f712512b3df0e0311ac9b61H Hartley Sweeten unsigned int *data) 628c3d8605fca03adb70f712512b3df0e0311ac9b61H Hartley Sweeten{ 629c3d8605fca03adb70f712512b3df0e0311ac9b61H Hartley Sweeten struct addi_private *devpriv = dev->private; 630c3d8605fca03adb70f712512b3df0e0311ac9b61H Hartley Sweeten unsigned int mask = data[0]; 631c3d8605fca03adb70f712512b3df0e0311ac9b61H Hartley Sweeten unsigned int bits = data[1]; 632c3d8605fca03adb70f712512b3df0e0311ac9b61H Hartley Sweeten 633c3d8605fca03adb70f712512b3df0e0311ac9b61H Hartley Sweeten s->state = inl(devpriv->iobase + 48) & 0xf; 634c3d8605fca03adb70f712512b3df0e0311ac9b61H Hartley Sweeten if (mask) { 635c3d8605fca03adb70f712512b3df0e0311ac9b61H Hartley Sweeten s->state &= ~mask; 636c3d8605fca03adb70f712512b3df0e0311ac9b61H Hartley Sweeten s->state |= (bits & mask); 637c3d8605fca03adb70f712512b3df0e0311ac9b61H Hartley Sweeten 638c3d8605fca03adb70f712512b3df0e0311ac9b61H Hartley Sweeten outl(s->state, devpriv->iobase + 48); 639c3d8605fca03adb70f712512b3df0e0311ac9b61H Hartley Sweeten } 640c3d8605fca03adb70f712512b3df0e0311ac9b61H Hartley Sweeten 641c3d8605fca03adb70f712512b3df0e0311ac9b61H Hartley Sweeten data[1] = s->state; 642c3d8605fca03adb70f712512b3df0e0311ac9b61H Hartley Sweeten 643c3d8605fca03adb70f712512b3df0e0311ac9b61H Hartley Sweeten return insn->n; 644c3d8605fca03adb70f712512b3df0e0311ac9b61H Hartley Sweeten} 645c3d8605fca03adb70f712512b3df0e0311ac9b61H Hartley Sweeten 64698d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweetenstatic int i_ADDIDATA_InsnReadEeprom(struct comedi_device *dev, 64798d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten struct comedi_subdevice *s, 64898d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten struct comedi_insn *insn, 64998d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten unsigned int *data) 65098d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten{ 65198d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten const struct addi_board *this_board = comedi_board(dev); 65298d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten struct addi_private *devpriv = dev->private; 65398d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten unsigned short w_Address = CR_CHAN(insn->chanspec); 65498d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten unsigned short w_Data; 65598d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten 65698d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten w_Data = addi_eeprom_readw(devpriv->i_IobaseAmcc, 65798d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten this_board->pc_EepromChip, 2 * w_Address); 65898d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten data[0] = w_Data; 65998d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten 66098d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten return insn->n; 66198d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten} 66298d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten 6635e72c7a50709e60663217704b30501bf34afa448H Hartley Sweetenstatic int apci3xxx_reset(struct comedi_device *dev) 66498d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten{ 6655e72c7a50709e60663217704b30501bf34afa448H Hartley Sweeten struct addi_private *devpriv = dev->private; 6665e72c7a50709e60663217704b30501bf34afa448H Hartley Sweeten unsigned int val; 6675e72c7a50709e60663217704b30501bf34afa448H Hartley Sweeten int i; 6685e72c7a50709e60663217704b30501bf34afa448H Hartley Sweeten 6695e72c7a50709e60663217704b30501bf34afa448H Hartley Sweeten /* Disable the interrupt */ 6705e72c7a50709e60663217704b30501bf34afa448H Hartley Sweeten disable_irq(dev->irq); 6715e72c7a50709e60663217704b30501bf34afa448H Hartley Sweeten 6725e72c7a50709e60663217704b30501bf34afa448H Hartley Sweeten /* Reset the interrupt flag */ 6735e72c7a50709e60663217704b30501bf34afa448H Hartley Sweeten devpriv->b_EocEosInterrupt = 0; 6745e72c7a50709e60663217704b30501bf34afa448H Hartley Sweeten 6755e72c7a50709e60663217704b30501bf34afa448H Hartley Sweeten /* Clear the start command */ 6765e72c7a50709e60663217704b30501bf34afa448H Hartley Sweeten writel(0, devpriv->dw_AiBase + 8); 6775e72c7a50709e60663217704b30501bf34afa448H Hartley Sweeten 6785e72c7a50709e60663217704b30501bf34afa448H Hartley Sweeten /* Reset the interrupt flags */ 6795e72c7a50709e60663217704b30501bf34afa448H Hartley Sweeten val = readl(devpriv->dw_AiBase + 16); 6805e72c7a50709e60663217704b30501bf34afa448H Hartley Sweeten writel(val, devpriv->dw_AiBase + 16); 6815e72c7a50709e60663217704b30501bf34afa448H Hartley Sweeten 6825e72c7a50709e60663217704b30501bf34afa448H Hartley Sweeten /* clear the EOS */ 6835e72c7a50709e60663217704b30501bf34afa448H Hartley Sweeten readl(devpriv->dw_AiBase + 20); 6845e72c7a50709e60663217704b30501bf34afa448H Hartley Sweeten 6855e72c7a50709e60663217704b30501bf34afa448H Hartley Sweeten /* Clear the FIFO */ 6865e72c7a50709e60663217704b30501bf34afa448H Hartley Sweeten for (i = 0; i < 16; i++) 6875e72c7a50709e60663217704b30501bf34afa448H Hartley Sweeten val = readl(devpriv->dw_AiBase + 28); 6885e72c7a50709e60663217704b30501bf34afa448H Hartley Sweeten 6895e72c7a50709e60663217704b30501bf34afa448H Hartley Sweeten /* Enable the interrupt */ 6905e72c7a50709e60663217704b30501bf34afa448H Hartley Sweeten enable_irq(dev->irq); 69198d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten 69298d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten return 0; 69398d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten} 69498d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten 695dbae4575661da840353f12dd76499ad587c92519H Hartley Sweetenstatic int apci3xxx_auto_attach(struct comedi_device *dev, 696dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten unsigned long context) 697dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten{ 69898d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten struct pci_dev *pcidev = comedi_to_pci_dev(dev); 699dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten const struct addi_board *board = NULL; 70098d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten struct addi_private *devpriv; 70198d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten struct comedi_subdevice *s; 70298d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten int ret, n_subdevices; 70398d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten unsigned int dw_Dummy; 704dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten 705dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten if (context < ARRAY_SIZE(apci3xxx_boardtypes)) 706dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten board = &apci3xxx_boardtypes[context]; 707dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten if (!board) 708dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten return -ENODEV; 709dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten dev->board_ptr = board; 71098d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten dev->board_name = board->pc_DriverName; 71198d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten 71298d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten devpriv = kzalloc(sizeof(*devpriv), GFP_KERNEL); 71398d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten if (!devpriv) 71498d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten return -ENOMEM; 71598d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten dev->private = devpriv; 71698d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten 71798d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten ret = comedi_pci_enable(dev); 71898d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten if (ret) 71998d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten return ret; 72098d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten 7212107347327f7bfd47e6af9fe0510a1750f10f884H Hartley Sweeten /* board has an ADDIDATA_9054 eeprom */ 7222107347327f7bfd47e6af9fe0510a1750f10f884H Hartley Sweeten dev->iobase = pci_resource_start(pcidev, 2); 7232107347327f7bfd47e6af9fe0510a1750f10f884H Hartley Sweeten devpriv->iobase = pci_resource_start(pcidev, 2); 7242107347327f7bfd47e6af9fe0510a1750f10f884H Hartley Sweeten devpriv->dw_AiBase = pci_ioremap_bar(pcidev, 3); 72598d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten devpriv->i_IobaseReserved = pci_resource_start(pcidev, 3); 72698d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten 72798d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten /* Initialize parameters that can be overridden in EEPROM */ 72898d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten devpriv->s_EeParameters.i_NbrAiChannel = board->i_NbrAiChannel; 72998d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten devpriv->s_EeParameters.i_NbrAoChannel = board->i_NbrAoChannel; 73098d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten devpriv->s_EeParameters.i_AiMaxdata = board->i_AiMaxdata; 73198d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten devpriv->s_EeParameters.i_AoMaxdata = board->i_AoMaxdata; 73298d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten devpriv->s_EeParameters.i_NbrDiChannel = board->i_NbrDiChannel; 73398d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten devpriv->s_EeParameters.i_NbrDoChannel = board->i_NbrDoChannel; 73498d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten devpriv->s_EeParameters.i_DoMaxdata = board->i_DoMaxdata; 73598d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten devpriv->s_EeParameters.i_Dma = board->i_Dma; 73698d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten devpriv->s_EeParameters.i_Timer = board->i_Timer; 73798d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten devpriv->s_EeParameters.ui_MinAcquisitiontimeNs = 73898d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten board->ui_MinAcquisitiontimeNs; 73998d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten devpriv->s_EeParameters.ui_MinDelaytimeNs = board->ui_MinDelaytimeNs; 74098d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten 74198d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten /* ## */ 74298d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten 74398d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten if (pcidev->irq > 0) { 7446c5b0fff8eb76913f0d38e72f4e68e19ea91de04H Hartley Sweeten ret = request_irq(pcidev->irq, apci3xxx_irq_handler, 7456c5b0fff8eb76913f0d38e72f4e68e19ea91de04H Hartley Sweeten IRQF_SHARED, dev->board_name, dev); 74698d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten if (ret == 0) 74798d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten dev->irq = pcidev->irq; 74898d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten } 74998d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten 75098d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten /* Read eepeom and fill addi_board Structure */ 75198d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten 75298d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten if (board->i_PCIEeprom) { 75398d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten if (!(strcmp(board->pc_EepromChip, "S5920"))) { 75498d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten /* Set 3 wait stait */ 75598d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten if (!(strcmp(dev->board_name, "apci035"))) 75698d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten outl(0x80808082, devpriv->i_IobaseAmcc + 0x60); 75798d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten else 75898d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten outl(0x83838383, devpriv->i_IobaseAmcc + 0x60); 75998d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten 76098d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten /* Enable the interrupt for the controller */ 76198d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten dw_Dummy = inl(devpriv->i_IobaseAmcc + 0x38); 76298d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten outl(dw_Dummy | 0x2000, devpriv->i_IobaseAmcc + 0x38); 76398d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten } 76498d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten addi_eeprom_read_info(dev, pci_resource_start(pcidev, 0)); 76598d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten } 76698d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten 76798d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten n_subdevices = 7; 76898d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten ret = comedi_alloc_subdevices(dev, n_subdevices); 76998d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten if (ret) 77098d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten return ret; 77198d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten 77298d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten /* Allocate and Initialise AI Subdevice Structures */ 77398d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s = &dev->subdevices[0]; 77498d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten if (devpriv->s_EeParameters.i_NbrAiChannel || 77598d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten board->i_NbrAiChannelDiff) { 77698d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten dev->read_subdev = s; 77798d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->type = COMEDI_SUBD_AI; 77898d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->subdev_flags = SDF_READABLE | SDF_COMMON | SDF_GROUND | 77998d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten SDF_DIFF; 78098d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten if (devpriv->s_EeParameters.i_NbrAiChannel) { 78198d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->n_chan = devpriv->s_EeParameters.i_NbrAiChannel; 78298d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten devpriv->b_SingelDiff = 0; 78398d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten } else { 78498d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->n_chan = board->i_NbrAiChannelDiff; 78598d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten devpriv->b_SingelDiff = 1; 78698d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten } 78798d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->maxdata = devpriv->s_EeParameters.i_AiMaxdata; 78898d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->len_chanlist = board->i_AiChannelList; 78998a856213efb9fec7a45491170d9b589ce55572dH Hartley Sweeten s->range_table = &apci3xxx_ai_range; 79098d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten 79198d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten /* Set the initialisation flag */ 79298d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten devpriv->b_AiInitialisation = 1; 79398d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten 79498d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->insn_config = board->ai_config; 79598d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->insn_read = board->ai_read; 79698d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->insn_write = board->ai_write; 79798d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->insn_bits = board->ai_bits; 79898d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->do_cmdtest = board->ai_cmdtest; 79998d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->do_cmd = board->ai_cmd; 80098d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->cancel = board->ai_cancel; 80198d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten 80298d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten } else { 80398d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->type = COMEDI_SUBD_UNUSED; 80498d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten } 80598d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten 80698d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten /* Allocate and Initialise AO Subdevice Structures */ 80798d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s = &dev->subdevices[1]; 80898d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten if (devpriv->s_EeParameters.i_NbrAoChannel) { 80998d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->type = COMEDI_SUBD_AO; 81098d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->subdev_flags = SDF_WRITEABLE | SDF_GROUND | SDF_COMMON; 81198d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->n_chan = devpriv->s_EeParameters.i_NbrAoChannel; 81298d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->maxdata = devpriv->s_EeParameters.i_AoMaxdata; 81398d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->len_chanlist = devpriv->s_EeParameters.i_NbrAoChannel; 81498a856213efb9fec7a45491170d9b589ce55572dH Hartley Sweeten s->range_table = &apci3xxx_ao_range; 81598d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->insn_config = board->ao_config; 81698d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->insn_write = board->ao_write; 81798d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten } else { 81898d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->type = COMEDI_SUBD_UNUSED; 81998d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten } 82098d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten /* Allocate and Initialise DI Subdevice Structures */ 82198d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s = &dev->subdevices[2]; 82298d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten if (devpriv->s_EeParameters.i_NbrDiChannel) { 82398d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->type = COMEDI_SUBD_DI; 82498d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->subdev_flags = SDF_READABLE | SDF_GROUND | SDF_COMMON; 82598d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->n_chan = devpriv->s_EeParameters.i_NbrDiChannel; 82698d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->maxdata = 1; 82798d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->len_chanlist = devpriv->s_EeParameters.i_NbrDiChannel; 82898d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->range_table = &range_digital; 82998d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->io_bits = 0; /* all bits input */ 830ae57b69639bcbd653821f7a4a14b87f6fa6743c0H Hartley Sweeten s->insn_bits = apci3xxx_di_insn_bits; 83198d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten } else { 83298d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->type = COMEDI_SUBD_UNUSED; 83398d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten } 83498d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten /* Allocate and Initialise DO Subdevice Structures */ 83598d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s = &dev->subdevices[3]; 83698d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten if (devpriv->s_EeParameters.i_NbrDoChannel) { 83798d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->type = COMEDI_SUBD_DO; 83898d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->subdev_flags = 83998d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten SDF_READABLE | SDF_WRITEABLE | SDF_GROUND | SDF_COMMON; 84098d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->n_chan = devpriv->s_EeParameters.i_NbrDoChannel; 84198d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->maxdata = devpriv->s_EeParameters.i_DoMaxdata; 84298d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->len_chanlist = devpriv->s_EeParameters.i_NbrDoChannel; 84398d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->range_table = &range_digital; 84498d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->io_bits = 0xf; /* all bits output */ 845c3d8605fca03adb70f712512b3df0e0311ac9b61H Hartley Sweeten s->insn_bits = apci3xxx_do_insn_bits; 84698d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten } else { 84798d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->type = COMEDI_SUBD_UNUSED; 84898d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten } 84998d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten 85098d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten /* Allocate and Initialise Timer Subdevice Structures */ 85198d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s = &dev->subdevices[4]; 85298d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten if (devpriv->s_EeParameters.i_Timer) { 85398d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->type = COMEDI_SUBD_TIMER; 85498d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->subdev_flags = SDF_WRITEABLE | SDF_GROUND | SDF_COMMON; 85598d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->n_chan = 1; 85698d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->maxdata = 0; 85798d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->len_chanlist = 1; 85898d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->range_table = &range_digital; 85998d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten 86098d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->insn_write = board->timer_write; 86198d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->insn_read = board->timer_read; 86298d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->insn_config = board->timer_config; 86398d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->insn_bits = board->timer_bits; 86498d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten } else { 86598d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->type = COMEDI_SUBD_UNUSED; 86698d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten } 86798d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten 86898d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten /* Allocate and Initialise TTL */ 86998d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s = &dev->subdevices[5]; 87098d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten if (board->i_NbrTTLChannel) { 87198d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->type = COMEDI_SUBD_TTLIO; 87298d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->subdev_flags = 87398d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten SDF_WRITEABLE | SDF_READABLE | SDF_GROUND | SDF_COMMON; 87498d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->n_chan = board->i_NbrTTLChannel; 87598d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->maxdata = 1; 87698d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->io_bits = 0; /* all bits input */ 87798d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->len_chanlist = board->i_NbrTTLChannel; 87898d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->range_table = &range_digital; 87998d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->insn_config = board->ttl_config; 88098d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->insn_bits = board->ttl_bits; 88198d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->insn_read = board->ttl_read; 88298d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->insn_write = board->ttl_write; 88398d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten } else { 88498d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->type = COMEDI_SUBD_UNUSED; 88598d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten } 88698d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten 88798d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten /* EEPROM */ 88898d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s = &dev->subdevices[6]; 88998d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten if (board->i_PCIEeprom) { 89098d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->type = COMEDI_SUBD_MEMORY; 89198d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->subdev_flags = SDF_READABLE | SDF_INTERNAL; 89298d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->n_chan = 256; 89398d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->maxdata = 0xffff; 89498d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->insn_read = i_ADDIDATA_InsnReadEeprom; 89598d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten } else { 89698d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten s->type = COMEDI_SUBD_UNUSED; 89798d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten } 89898d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten 8995e72c7a50709e60663217704b30501bf34afa448H Hartley Sweeten apci3xxx_reset(dev); 90098d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten return 0; 90198d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten} 90298d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten 90398d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweetenstatic void apci3xxx_detach(struct comedi_device *dev) 90498d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten{ 90598d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten struct addi_private *devpriv = dev->private; 906dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten 90798d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten if (devpriv) { 90898d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten if (dev->iobase) 9095e72c7a50709e60663217704b30501bf34afa448H Hartley Sweeten apci3xxx_reset(dev); 91098d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten if (dev->irq) 91198d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten free_irq(dev->irq, dev); 91298d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten if (devpriv->dw_AiBase) 91398d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten iounmap(devpriv->dw_AiBase); 91498d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten } 91598d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten comedi_pci_disable(dev); 916dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten} 917dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten 91820a22b706b8ee37d1a2282f2c9bf7f2c73a5a7a5H Hartley Sweetenstatic struct comedi_driver apci3xxx_driver = { 91920a22b706b8ee37d1a2282f2c9bf7f2c73a5a7a5H Hartley Sweeten .driver_name = "addi_apci_3xxx", 92020a22b706b8ee37d1a2282f2c9bf7f2c73a5a7a5H Hartley Sweeten .module = THIS_MODULE, 921dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten .auto_attach = apci3xxx_auto_attach, 92298d3385dd68381dd2738a825f8513366c44018b2H Hartley Sweeten .detach = apci3xxx_detach, 92320a22b706b8ee37d1a2282f2c9bf7f2c73a5a7a5H Hartley Sweeten}; 92420a22b706b8ee37d1a2282f2c9bf7f2c73a5a7a5H Hartley Sweeten 925a690b7e535f2f97a3a05ee570715abeb60a8910fBill Pembertonstatic int apci3xxx_pci_probe(struct pci_dev *dev, 926b8f4ac237e382accd4b30c75043939f7ed9e79a6H Hartley Sweeten const struct pci_device_id *id) 92720a22b706b8ee37d1a2282f2c9bf7f2c73a5a7a5H Hartley Sweeten{ 928b8f4ac237e382accd4b30c75043939f7ed9e79a6H Hartley Sweeten return comedi_pci_auto_config(dev, &apci3xxx_driver, id->driver_data); 92920a22b706b8ee37d1a2282f2c9bf7f2c73a5a7a5H Hartley Sweeten} 93020a22b706b8ee37d1a2282f2c9bf7f2c73a5a7a5H Hartley Sweeten 93120a22b706b8ee37d1a2282f2c9bf7f2c73a5a7a5H Hartley Sweetenstatic DEFINE_PCI_DEVICE_TABLE(apci3xxx_pci_table) = { 932dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten { PCI_VDEVICE(ADDIDATA, 0x3010), BOARD_APCI3000_16 }, 933dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten { PCI_VDEVICE(ADDIDATA, 0x300f), BOARD_APCI3000_8 }, 934dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten { PCI_VDEVICE(ADDIDATA, 0x300e), BOARD_APCI3000_4 }, 935dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten { PCI_VDEVICE(ADDIDATA, 0x3013), BOARD_APCI3006_16 }, 936dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten { PCI_VDEVICE(ADDIDATA, 0x3014), BOARD_APCI3006_8 }, 937dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten { PCI_VDEVICE(ADDIDATA, 0x3015), BOARD_APCI3006_4 }, 938dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten { PCI_VDEVICE(ADDIDATA, 0x3016), BOARD_APCI3010_16 }, 939dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten { PCI_VDEVICE(ADDIDATA, 0x3017), BOARD_APCI3010_8 }, 940dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten { PCI_VDEVICE(ADDIDATA, 0x3018), BOARD_APCI3010_4 }, 941dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten { PCI_VDEVICE(ADDIDATA, 0x3019), BOARD_APCI3016_16 }, 942dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten { PCI_VDEVICE(ADDIDATA, 0x301a), BOARD_APCI3016_8 }, 943dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten { PCI_VDEVICE(ADDIDATA, 0x301b), BOARD_APCI3016_4 }, 944dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten { PCI_VDEVICE(ADDIDATA, 0x301c), BOARD_APCI3100_16_4 }, 945dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten { PCI_VDEVICE(ADDIDATA, 0x301d), BOARD_APCI3100_8_4 }, 946dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten { PCI_VDEVICE(ADDIDATA, 0x301e), BOARD_APCI3106_16_4 }, 947dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten { PCI_VDEVICE(ADDIDATA, 0x301f), BOARD_APCI3106_8_4 }, 948dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten { PCI_VDEVICE(ADDIDATA, 0x3020), BOARD_APCI3110_16_4 }, 949dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten { PCI_VDEVICE(ADDIDATA, 0x3021), BOARD_APCI3110_8_4 }, 950dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten { PCI_VDEVICE(ADDIDATA, 0x3022), BOARD_APCI3116_16_4 }, 951dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten { PCI_VDEVICE(ADDIDATA, 0x3023), BOARD_APCI3116_8_4 }, 952dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten { PCI_VDEVICE(ADDIDATA, 0x300B), BOARD_APCI3003 }, 953dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten { PCI_VDEVICE(ADDIDATA, 0x3002), BOARD_APCI3002_16 }, 954dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten { PCI_VDEVICE(ADDIDATA, 0x3003), BOARD_APCI3002_8 }, 955dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten { PCI_VDEVICE(ADDIDATA, 0x3004), BOARD_APCI3002_4 }, 956dbae4575661da840353f12dd76499ad587c92519H Hartley Sweeten { PCI_VDEVICE(ADDIDATA, 0x3024), BOARD_APCI3500 }, 957317285d71acccbda2fbab7e53d6b33c52a151a32H Hartley Sweeten { 0 } 958317285d71acccbda2fbab7e53d6b33c52a151a32H Hartley Sweeten}; 95920a22b706b8ee37d1a2282f2c9bf7f2c73a5a7a5H Hartley SweetenMODULE_DEVICE_TABLE(pci, apci3xxx_pci_table); 960317285d71acccbda2fbab7e53d6b33c52a151a32H Hartley Sweeten 96120a22b706b8ee37d1a2282f2c9bf7f2c73a5a7a5H Hartley Sweetenstatic struct pci_driver apci3xxx_pci_driver = { 96220a22b706b8ee37d1a2282f2c9bf7f2c73a5a7a5H Hartley Sweeten .name = "addi_apci_3xxx", 96320a22b706b8ee37d1a2282f2c9bf7f2c73a5a7a5H Hartley Sweeten .id_table = apci3xxx_pci_table, 96420a22b706b8ee37d1a2282f2c9bf7f2c73a5a7a5H Hartley Sweeten .probe = apci3xxx_pci_probe, 9659901a4d75d007686e8f6473189cafc4b216b7449Peter Huewe .remove = comedi_pci_auto_unconfig, 96620a22b706b8ee37d1a2282f2c9bf7f2c73a5a7a5H Hartley Sweeten}; 96720a22b706b8ee37d1a2282f2c9bf7f2c73a5a7a5H Hartley Sweetenmodule_comedi_pci_driver(apci3xxx_driver, apci3xxx_pci_driver); 96890f703d30dd3e0c16ff80f35e34e511385a05ad5Arun Thomas 96990f703d30dd3e0c16ff80f35e34e511385a05ad5Arun ThomasMODULE_AUTHOR("Comedi http://www.comedi.org"); 97090f703d30dd3e0c16ff80f35e34e511385a05ad5Arun ThomasMODULE_DESCRIPTION("Comedi low-level driver"); 97190f703d30dd3e0c16ff80f35e34e511385a05ad5Arun ThomasMODULE_LICENSE("GPL"); 972