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