1c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH 22696fb57e6af653dd8b4df41b16754579f42fc78Bill Pemberton/* hwdrv_apci3120.h */ 3c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH 4c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH/* 515d8826a6a2ed954ce7daf1d321cce99d5c12668Greg Kroah-Hartman * Copyright (C) 2004,2005 ADDI-DATA GmbH for the source code of this module. 615d8826a6a2ed954ce7daf1d321cce99d5c12668Greg Kroah-Hartman * 715d8826a6a2ed954ce7daf1d321cce99d5c12668Greg Kroah-Hartman * ADDI-DATA GmbH 815d8826a6a2ed954ce7daf1d321cce99d5c12668Greg Kroah-Hartman * Dieselstrasse 3 915d8826a6a2ed954ce7daf1d321cce99d5c12668Greg Kroah-Hartman * D-77833 Ottersweier 1015d8826a6a2ed954ce7daf1d321cce99d5c12668Greg Kroah-Hartman * Tel: +19(0)7223/9493-0 1115d8826a6a2ed954ce7daf1d321cce99d5c12668Greg Kroah-Hartman * Fax: +49(0)7223/9493-92 1225417922694e60f04cd4dc8448ada9236f18c532Justin P. Mattock * http://www.addi-data.com 1315d8826a6a2ed954ce7daf1d321cce99d5c12668Greg Kroah-Hartman * info@addi-data.com 1415d8826a6a2ed954ce7daf1d321cce99d5c12668Greg Kroah-Hartman * 1515d8826a6a2ed954ce7daf1d321cce99d5c12668Greg Kroah-Hartman * This program is free software; you can redistribute it and/or modify it 1615d8826a6a2ed954ce7daf1d321cce99d5c12668Greg Kroah-Hartman * under the terms of the GNU General Public License as published by the Free 1715d8826a6a2ed954ce7daf1d321cce99d5c12668Greg Kroah-Hartman * Software Foundation; either version 2 of the License, or (at your option) 1815d8826a6a2ed954ce7daf1d321cce99d5c12668Greg Kroah-Hartman * any later version. 1915d8826a6a2ed954ce7daf1d321cce99d5c12668Greg Kroah-Hartman */ 20c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH 212696fb57e6af653dd8b4df41b16754579f42fc78Bill Pemberton/* comedi related defines */ 22c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH 232696fb57e6af653dd8b4df41b16754579f42fc78Bill Pemberton/* ANALOG INPUT RANGE */ 249ced1de69125b60f40127eddaa3be2a92bb0a1dfBill Pembertonstatic const struct comedi_lrange range_apci3120_ai = { 8, { 2515d8826a6a2ed954ce7daf1d321cce99d5c12668Greg Kroah-Hartman BIP_RANGE(10), 2615d8826a6a2ed954ce7daf1d321cce99d5c12668Greg Kroah-Hartman BIP_RANGE(5), 2715d8826a6a2ed954ce7daf1d321cce99d5c12668Greg Kroah-Hartman BIP_RANGE(2), 2815d8826a6a2ed954ce7daf1d321cce99d5c12668Greg Kroah-Hartman BIP_RANGE(1), 2915d8826a6a2ed954ce7daf1d321cce99d5c12668Greg Kroah-Hartman UNI_RANGE(10), 3015d8826a6a2ed954ce7daf1d321cce99d5c12668Greg Kroah-Hartman UNI_RANGE(5), 3115d8826a6a2ed954ce7daf1d321cce99d5c12668Greg Kroah-Hartman UNI_RANGE(2), 3215d8826a6a2ed954ce7daf1d321cce99d5c12668Greg Kroah-Hartman UNI_RANGE(1) 3315d8826a6a2ed954ce7daf1d321cce99d5c12668Greg Kroah-Hartman } 34c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH}; 35c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH 362696fb57e6af653dd8b4df41b16754579f42fc78Bill Pemberton/* ANALOG OUTPUT RANGE */ 379ced1de69125b60f40127eddaa3be2a92bb0a1dfBill Pembertonstatic const struct comedi_lrange range_apci3120_ao = { 2, { 3815d8826a6a2ed954ce7daf1d321cce99d5c12668Greg Kroah-Hartman BIP_RANGE(10), 3915d8826a6a2ed954ce7daf1d321cce99d5c12668Greg Kroah-Hartman UNI_RANGE(10) 4015d8826a6a2ed954ce7daf1d321cce99d5c12668Greg Kroah-Hartman } 41c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH}; 42c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH 432696fb57e6af653dd8b4df41b16754579f42fc78Bill Pemberton#define APCI3120_BIPOLAR_RANGES 4 /* used for test on mixture of BIP/UNI ranges */ 44c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH 45c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH#define APCI3120_BOARD_VENDOR_ID 0x10E8 46c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH#define APCI3120_ADDRESS_RANGE 16 47c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH 48c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH#define APCI3120_DISABLE 0 49c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH#define APCI3120_ENABLE 1 50c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH 51c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH#define APCI3120_START 1 52c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH#define APCI3120_STOP 0 53c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH 54c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH#define APCI3120_EOC_MODE 1 55c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH#define APCI3120_EOS_MODE 2 56c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH#define APCI3120_DMA_MODE 3 57c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH 582696fb57e6af653dd8b4df41b16754579f42fc78Bill Pemberton/* DIGITAL INPUT-OUTPUT DEFINE */ 59c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH 60c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH#define APCI3120_DIGITAL_OUTPUT 0x0D 61c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH#define APCI3120_RD_STATUS 0x02 62c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH#define APCI3120_RD_FIFO 0x00 63c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH 642696fb57e6af653dd8b4df41b16754579f42fc78Bill Pemberton/* digital output insn_write ON /OFF selection */ 65c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH#define APCI3120_SET4DIGITALOUTPUTON 1 66c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH#define APCI3120_SET4DIGITALOUTPUTOFF 0 67c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH 682696fb57e6af653dd8b4df41b16754579f42fc78Bill Pemberton/* analog output SELECT BIT */ 69c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH#define APCI3120_ANALOG_OP_CHANNEL_1 0x0000 70c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH#define APCI3120_ANALOG_OP_CHANNEL_2 0x4000 71c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH#define APCI3120_ANALOG_OP_CHANNEL_3 0x8000 72c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH#define APCI3120_ANALOG_OP_CHANNEL_4 0xC000 73c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH#define APCI3120_ANALOG_OP_CHANNEL_5 0x0000 74c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH#define APCI3120_ANALOG_OP_CHANNEL_6 0x4000 75c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH#define APCI3120_ANALOG_OP_CHANNEL_7 0x8000 76c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH#define APCI3120_ANALOG_OP_CHANNEL_8 0xC000 77c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH 782696fb57e6af653dd8b4df41b16754579f42fc78Bill Pemberton/* Enable external trigger bit in nWrAddress */ 79c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH#define APCI3120_ENABLE_EXT_TRIGGER 0x8000 80c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH 812696fb57e6af653dd8b4df41b16754579f42fc78Bill Pemberton/* ANALOG OUTPUT AND INPUT DEFINE */ 822696fb57e6af653dd8b4df41b16754579f42fc78Bill Pemberton#define APCI3120_UNIPOLAR 0x80 /* $$ RAM sequence polarity BIT */ 832696fb57e6af653dd8b4df41b16754579f42fc78Bill Pemberton#define APCI3120_BIPOLAR 0x00 /* $$ RAM sequence polarity BIT */ 842696fb57e6af653dd8b4df41b16754579f42fc78Bill Pemberton#define APCI3120_ANALOG_OUTPUT_1 0x08 /* (ADDRESS ) */ 852696fb57e6af653dd8b4df41b16754579f42fc78Bill Pemberton#define APCI3120_ANALOG_OUTPUT_2 0x0A /* (ADDRESS ) */ 862696fb57e6af653dd8b4df41b16754579f42fc78Bill Pemberton#define APCI3120_1_GAIN 0x00 /* $$ RAM sequence Gain Bits for gain 1 */ 872696fb57e6af653dd8b4df41b16754579f42fc78Bill Pemberton#define APCI3120_2_GAIN 0x10 /* $$ RAM sequence Gain Bits for gain 2 */ 882696fb57e6af653dd8b4df41b16754579f42fc78Bill Pemberton#define APCI3120_5_GAIN 0x20 /* $$ RAM sequence Gain Bits for gain 5 */ 892696fb57e6af653dd8b4df41b16754579f42fc78Bill Pemberton#define APCI3120_10_GAIN 0x30 /* $$ RAM sequence Gain Bits for gain 10 */ 902696fb57e6af653dd8b4df41b16754579f42fc78Bill Pemberton#define APCI3120_SEQ_RAM_ADDRESS 0x06 /* $$ EARLIER NAMED APCI3120_FIFO_ADDRESS */ 912696fb57e6af653dd8b4df41b16754579f42fc78Bill Pemberton#define APCI3120_RESET_FIFO 0x0C /* (ADDRESS) */ 922696fb57e6af653dd8b4df41b16754579f42fc78Bill Pemberton#define APCI3120_TIMER_0_MODE_2 0x01 /* $$ Bits for timer mode */ 93c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH#define APCI3120_TIMER_0_MODE_4 0x2 94c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH#define APCI3120_SELECT_TIMER_0_WORD 0x00 952696fb57e6af653dd8b4df41b16754579f42fc78Bill Pemberton#define APCI3120_ENABLE_TIMER0 0x1000 /* $$Gatebit 0 in nWrAddress */ 96c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH#define APCI3120_CLEAR_PR 0xF0FF 97c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH#define APCI3120_CLEAR_PA 0xFFF0 98c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH#define APCI3120_CLEAR_PA_PR (APCI3120_CLEAR_PR & APCI3120_CLEAR_PA) 99c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH 1002696fb57e6af653dd8b4df41b16754579f42fc78Bill Pemberton/* nWrMode_Select */ 1012696fb57e6af653dd8b4df41b16754579f42fc78Bill Pemberton#define APCI3120_ENABLE_SCAN 0x8 /* $$ bit in nWrMode_Select */ 102c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH#define APCI3120_DISABLE_SCAN (~APCI3120_ENABLE_SCAN) 1032696fb57e6af653dd8b4df41b16754579f42fc78Bill Pemberton#define APCI3120_ENABLE_EOS_INT 0x2 /* $$ bit in nWrMode_Select */ 104c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH 105c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH#define APCI3120_DISABLE_EOS_INT (~APCI3120_ENABLE_EOS_INT) 106c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH#define APCI3120_ENABLE_EOC_INT 0x1 107c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH#define APCI3120_DISABLE_EOC_INT (~APCI3120_ENABLE_EOC_INT) 108c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH#define APCI3120_DISABLE_ALL_INTERRUPT_WITHOUT_TIMER (APCI3120_DISABLE_EOS_INT & APCI3120_DISABLE_EOC_INT) 109c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH#define APCI3120_DISABLE_ALL_INTERRUPT (APCI3120_DISABLE_TIMER_INT & APCI3120_DISABLE_EOS_INT & APCI3120_DISABLE_EOC_INT) 110c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH 1112696fb57e6af653dd8b4df41b16754579f42fc78Bill Pemberton/* status register bits */ 112c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH#define APCI3120_EOC 0x8000 113c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH#define APCI3120_EOS 0x2000 114c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH 1152696fb57e6af653dd8b4df41b16754579f42fc78Bill Pemberton/* software trigger dummy register */ 1162696fb57e6af653dd8b4df41b16754579f42fc78Bill Pemberton#define APCI3120_START_CONVERSION 0x02 /* (ADDRESS) */ 117c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH 1182696fb57e6af653dd8b4df41b16754579f42fc78Bill Pemberton/* TIMER DEFINE */ 119c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH#define APCI3120_QUARTZ_A 70 120c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH#define APCI3120_QUARTZ_B 50 121c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH#define APCI3120_TIMER 1 122c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH#define APCI3120_WATCHDOG 2 123c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH#define APCI3120_TIMER_DISABLE 0 124c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH#define APCI3120_TIMER_ENABLE 1 1252696fb57e6af653dd8b4df41b16754579f42fc78Bill Pemberton#define APCI3120_ENABLE_TIMER2 0x4000 /* $$ gatebit 2 in nWrAddress */ 126c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH#define APCI3120_DISABLE_TIMER2 (~APCI3120_ENABLE_TIMER2) 1272696fb57e6af653dd8b4df41b16754579f42fc78Bill Pemberton#define APCI3120_ENABLE_TIMER_INT 0x04 /* $$ ENAIRQ_FC_Bit in nWrModeSelect */ 128c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH#define APCI3120_DISABLE_TIMER_INT (~APCI3120_ENABLE_TIMER_INT) 1292696fb57e6af653dd8b4df41b16754579f42fc78Bill Pemberton#define APCI3120_WRITE_MODE_SELECT 0x0E /* (ADDRESS) */ 130c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH#define APCI3120_SELECT_TIMER_0_WORD 0x00 131c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH#define APCI3120_SELECT_TIMER_1_WORD 0x01 132c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH#define APCI3120_TIMER_1_MODE_2 0x4 133c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH 1342696fb57e6af653dd8b4df41b16754579f42fc78Bill Pemberton/* $$ BIT FOR MODE IN nCsTimerCtr1 */ 135c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH#define APCI3120_TIMER_2_MODE_0 0x0 136c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH#define APCI3120_TIMER_2_MODE_2 0x10 137c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH#define APCI3120_TIMER_2_MODE_5 0x30 138c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH 1392696fb57e6af653dd8b4df41b16754579f42fc78Bill Pemberton/* $$ BIT FOR MODE IN nCsTimerCtr0 */ 140c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH#define APCI3120_SELECT_TIMER_2_LOW_WORD 0x02 141c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH#define APCI3120_SELECT_TIMER_2_HIGH_WORD 0x03 142c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH 1432696fb57e6af653dd8b4df41b16754579f42fc78Bill Pemberton#define APCI3120_TIMER_CRT0 0x0D /* (ADDRESS for cCsTimerCtr0) */ 1442696fb57e6af653dd8b4df41b16754579f42fc78Bill Pemberton#define APCI3120_TIMER_CRT1 0x0C /* (ADDRESS for cCsTimerCtr1) */ 145c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH 1462696fb57e6af653dd8b4df41b16754579f42fc78Bill Pemberton#define APCI3120_TIMER_VALUE 0x04 /* ADDRESS for nCsTimerWert */ 1472696fb57e6af653dd8b4df41b16754579f42fc78Bill Pemberton#define APCI3120_TIMER_STATUS_REGISTER 0x0D /* ADDRESS for delete timer 2 interrupt */ 1482696fb57e6af653dd8b4df41b16754579f42fc78Bill Pemberton#define APCI3120_RD_STATUS 0x02 /* ADDRESS */ 1492696fb57e6af653dd8b4df41b16754579f42fc78Bill Pemberton#define APCI3120_WR_ADDRESS 0x00 /* ADDRESS */ 1502696fb57e6af653dd8b4df41b16754579f42fc78Bill Pemberton#define APCI3120_ENABLE_WATCHDOG 0x20 /* $$BIT in nWrMode_Select */ 151c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH#define APCI3120_DISABLE_WATCHDOG (~APCI3120_ENABLE_WATCHDOG) 1522696fb57e6af653dd8b4df41b16754579f42fc78Bill Pemberton#define APCI3120_ENABLE_TIMER_COUNTER 0x10 /* $$BIT in nWrMode_Select */ 153c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH#define APCI3120_DISABLE_TIMER_COUNTER (~APCI3120_ENABLE_TIMER_COUNTER) 1542696fb57e6af653dd8b4df41b16754579f42fc78Bill Pemberton#define APCI3120_FC_TIMER 0x1000 /* bit in status register */ 155c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH#define APCI3120_ENABLE_TIMER0 0x1000 156c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH#define APCI3120_ENABLE_TIMER1 0x2000 157c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH#define APCI3120_ENABLE_TIMER2 0x4000 158c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH#define APCI3120_DISABLE_TIMER0 (~APCI3120_ENABLE_TIMER0) 159c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH#define APCI3120_DISABLE_TIMER1 (~APCI3120_ENABLE_TIMER1) 160c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH#define APCI3120_DISABLE_TIMER2 (~APCI3120_ENABLE_TIMER2) 161c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH 1622696fb57e6af653dd8b4df41b16754579f42fc78Bill Pemberton#define APCI3120_TIMER2_SELECT_EOS 0xC0 /* ADDED on 20-6 */ 1632696fb57e6af653dd8b4df41b16754579f42fc78Bill Pemberton#define APCI3120_COUNTER 3 /* on 20-6 */ 16453106ae68acf6eda9593150a25fc44e30fd5ff68Bill Pemberton#define APCI3120_DISABLE_ALL_TIMER (APCI3120_DISABLE_TIMER0 & APCI3120_DISABLE_TIMER1 & APCI3120_DISABLE_TIMER2) /* on 20-6 */ 165c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH 166c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH#define MAX_ANALOGINPUT_CHANNELS 32 167c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH 1680077f93c5a7fa82857f6b50a3be5f732e0079e1cBill Pembertonstruct str_AnalogReadInformation { 1690077f93c5a7fa82857f6b50a3be5f732e0079e1cBill Pemberton 1701783fbfe023b7c2b912fbb020e01ff46985aa0abBill Pemberton unsigned char b_Type; /* EOC or EOS */ 1711783fbfe023b7c2b912fbb020e01ff46985aa0abBill Pemberton unsigned char b_InterruptFlag; /* Interrupt use or not */ 17225985edcedea6396277003854657b5f3cb31a628Lucas De Marchi unsigned int ui_ConvertTiming; /* Selection of the conversion time */ 1731783fbfe023b7c2b912fbb020e01ff46985aa0abBill Pemberton unsigned char b_NbrOfChannel; /* Number of channel to read */ 174117102b0f6e0a9ab3ea4fa9fd89b7eb4a8888fb9Bill Pemberton unsigned int ui_ChannelList[MAX_ANALOGINPUT_CHANNELS]; /* Number of the channel to be read */ 175117102b0f6e0a9ab3ea4fa9fd89b7eb4a8888fb9Bill Pemberton unsigned int ui_RangeList[MAX_ANALOGINPUT_CHANNELS]; /* Gain of each channel */ 176c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH 1770077f93c5a7fa82857f6b50a3be5f732e0079e1cBill Pemberton}; 1780077f93c5a7fa82857f6b50a3be5f732e0079e1cBill Pemberton 179c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH 1802696fb57e6af653dd8b4df41b16754579f42fc78Bill Pemberton/* Function Declaration For APCI-3120 */ 181c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH 1822696fb57e6af653dd8b4df41b16754579f42fc78Bill Pemberton/* Internal functions */ 18334c43922e62708d45e9660eee4b4f1fb7b4bf2c7Bill Pembertonint i_APCI3120_SetupChannelList(struct comedi_device *dev, struct comedi_subdevice *s, 18415d8826a6a2ed954ce7daf1d321cce99d5c12668Greg Kroah-Hartman int n_chan, unsigned int *chanlist, char check); 18571b5f4f11971dea972832ad63a994c7e5b45db6bBill Pembertonint i_APCI3120_ExttrigEnable(struct comedi_device *dev); 18671b5f4f11971dea972832ad63a994c7e5b45db6bBill Pembertonint i_APCI3120_ExttrigDisable(struct comedi_device *dev); 18734c43922e62708d45e9660eee4b4f1fb7b4bf2c7Bill Pembertonint i_APCI3120_StopCyclicAcquisition(struct comedi_device *dev, struct comedi_subdevice *s); 18871b5f4f11971dea972832ad63a994c7e5b45db6bBill Pembertonint i_APCI3120_Reset(struct comedi_device *dev); 18971b5f4f11971dea972832ad63a994c7e5b45db6bBill Pembertonint i_APCI3120_CyclicAnalogInput(int mode, struct comedi_device *dev, 19034c43922e62708d45e9660eee4b4f1fb7b4bf2c7Bill Pemberton struct comedi_subdevice *s); 1912696fb57e6af653dd8b4df41b16754579f42fc78Bill Pemberton/* Interrupt functions */ 192c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbHvoid v_APCI3120_Interrupt(int irq, void *d); 1932696fb57e6af653dd8b4df41b16754579f42fc78Bill Pemberton/* UPDATE-0.7.57->0.7.68 void v_APCI3120_InterruptDmaMoveBlock16bit(struct comedi_device *dev,struct comedi_subdevice *s,short *dma,short *data,int n); */ 19471b5f4f11971dea972832ad63a994c7e5b45db6bBill Pembertonvoid v_APCI3120_InterruptDmaMoveBlock16bit(struct comedi_device *dev, 19534c43922e62708d45e9660eee4b4f1fb7b4bf2c7Bill Pemberton struct comedi_subdevice *s, 196790c55415aa31f4c732729f94d2c3a54f7d3bfc2Bill Pemberton short *dma_buffer, 19715d8826a6a2ed954ce7daf1d321cce99d5c12668Greg Kroah-Hartman unsigned int num_samples); 19871b5f4f11971dea972832ad63a994c7e5b45db6bBill Pembertonint i_APCI3120_InterruptHandleEos(struct comedi_device *dev); 199c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbHvoid v_APCI3120_InterruptDma(int irq, void *d); 200c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH 2012696fb57e6af653dd8b4df41b16754579f42fc78Bill Pemberton/* TIMER */ 202c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH 20334c43922e62708d45e9660eee4b4f1fb7b4bf2c7Bill Pembertonint i_APCI3120_InsnConfigTimer(struct comedi_device *dev, struct comedi_subdevice *s, 20490035c0886b256d75bced13b3b3cea5234aff136Bill Pemberton struct comedi_insn *insn, unsigned int *data); 20534c43922e62708d45e9660eee4b4f1fb7b4bf2c7Bill Pembertonint i_APCI3120_InsnWriteTimer(struct comedi_device *dev, struct comedi_subdevice *s, 20690035c0886b256d75bced13b3b3cea5234aff136Bill Pemberton struct comedi_insn *insn, unsigned int *data); 20734c43922e62708d45e9660eee4b4f1fb7b4bf2c7Bill Pembertonint i_APCI3120_InsnReadTimer(struct comedi_device *dev, struct comedi_subdevice *s, 20890035c0886b256d75bced13b3b3cea5234aff136Bill Pemberton struct comedi_insn *insn, unsigned int *data); 209c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH 2102696fb57e6af653dd8b4df41b16754579f42fc78Bill Pemberton/* 2112696fb57e6af653dd8b4df41b16754579f42fc78Bill Pemberton* DI for di read 2122696fb57e6af653dd8b4df41b16754579f42fc78Bill Pemberton*/ 213c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH 21434c43922e62708d45e9660eee4b4f1fb7b4bf2c7Bill Pembertonint i_APCI3120_InsnBitsDigitalInput(struct comedi_device *dev, struct comedi_subdevice *s, 21590035c0886b256d75bced13b3b3cea5234aff136Bill Pemberton struct comedi_insn *insn, unsigned int *data); 21634c43922e62708d45e9660eee4b4f1fb7b4bf2c7Bill Pembertonint i_APCI3120_InsnReadDigitalInput(struct comedi_device *dev, struct comedi_subdevice *s, 21790035c0886b256d75bced13b3b3cea5234aff136Bill Pemberton struct comedi_insn *insn, unsigned int *data); 218c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH 2192696fb57e6af653dd8b4df41b16754579f42fc78Bill Pemberton/* DO */ 2202696fb57e6af653dd8b4df41b16754579f42fc78Bill Pemberton/* int i_APCI3120_WriteDigitalOutput(struct comedi_device *dev, 2212696fb57e6af653dd8b4df41b16754579f42fc78Bill Pemberton * unsigned char data); 2222696fb57e6af653dd8b4df41b16754579f42fc78Bill Pemberton */ 22371b5f4f11971dea972832ad63a994c7e5b45db6bBill Pembertonint i_APCI3120_InsnConfigDigitalOutput(struct comedi_device *dev, 22490035c0886b256d75bced13b3b3cea5234aff136Bill Pemberton struct comedi_subdevice *s, struct comedi_insn *insn, 225790c55415aa31f4c732729f94d2c3a54f7d3bfc2Bill Pemberton unsigned int *data); 22634c43922e62708d45e9660eee4b4f1fb7b4bf2c7Bill Pembertonint i_APCI3120_InsnBitsDigitalOutput(struct comedi_device *dev, struct comedi_subdevice *s, 22790035c0886b256d75bced13b3b3cea5234aff136Bill Pemberton struct comedi_insn *insn, unsigned int *data); 22834c43922e62708d45e9660eee4b4f1fb7b4bf2c7Bill Pembertonint i_APCI3120_InsnWriteDigitalOutput(struct comedi_device *dev, struct comedi_subdevice *s, 22990035c0886b256d75bced13b3b3cea5234aff136Bill Pemberton struct comedi_insn *insn, unsigned int *data); 230c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH 2312696fb57e6af653dd8b4df41b16754579f42fc78Bill Pemberton/* AO */ 2322696fb57e6af653dd8b4df41b16754579f42fc78Bill Pemberton/* int i_APCI3120_Write1AnalogValue(struct comedi_device *dev,UINT ui_Range, 2332696fb57e6af653dd8b4df41b16754579f42fc78Bill Pemberton * UINT ui_Channel,UINT data ); 2342696fb57e6af653dd8b4df41b16754579f42fc78Bill Pemberton */ 2352696fb57e6af653dd8b4df41b16754579f42fc78Bill Pemberton 23634c43922e62708d45e9660eee4b4f1fb7b4bf2c7Bill Pembertonint i_APCI3120_InsnWriteAnalogOutput(struct comedi_device *dev, struct comedi_subdevice *s, 23790035c0886b256d75bced13b3b3cea5234aff136Bill Pemberton struct comedi_insn *insn, unsigned int *data); 238c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH 2392696fb57e6af653dd8b4df41b16754579f42fc78Bill Pemberton/* AI HArdware layer */ 240c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH 24134c43922e62708d45e9660eee4b4f1fb7b4bf2c7Bill Pembertonint i_APCI3120_InsnConfigAnalogInput(struct comedi_device *dev, struct comedi_subdevice *s, 24290035c0886b256d75bced13b3b3cea5234aff136Bill Pemberton struct comedi_insn *insn, unsigned int *data); 24334c43922e62708d45e9660eee4b4f1fb7b4bf2c7Bill Pembertonint i_APCI3120_InsnReadAnalogInput(struct comedi_device *dev, struct comedi_subdevice *s, 24490035c0886b256d75bced13b3b3cea5234aff136Bill Pemberton struct comedi_insn *insn, unsigned int *data); 24534c43922e62708d45e9660eee4b4f1fb7b4bf2c7Bill Pembertonint i_APCI3120_CommandTestAnalogInput(struct comedi_device *dev, struct comedi_subdevice *s, 246ea6d0d4cab4f4f2d6a88f3bce4707fe92696fd3fBill Pemberton struct comedi_cmd *cmd); 24734c43922e62708d45e9660eee4b4f1fb7b4bf2c7Bill Pembertonint i_APCI3120_CommandAnalogInput(struct comedi_device *dev, struct comedi_subdevice *s); 2482696fb57e6af653dd8b4df41b16754579f42fc78Bill Pemberton/* int i_APCI3120_CancelAnalogInput(struct comedi_device *dev, struct comedi_subdevice *s); */ 24934c43922e62708d45e9660eee4b4f1fb7b4bf2c7Bill Pembertonint i_APCI3120_StopCyclicAcquisition(struct comedi_device *dev, struct comedi_subdevice *s); 250