1c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH/**
2c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH@verbatim
3c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
4c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbHCopyright (C) 2004,2005  ADDI-DATA GmbH for the source code of this module.
5c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
6356cdbcb838ebcc234a43ec81621a39231fdcb7aBill Pemberton	ADDI-DATA GmbH
7356cdbcb838ebcc234a43ec81621a39231fdcb7aBill Pemberton	Dieselstrasse 3
8356cdbcb838ebcc234a43ec81621a39231fdcb7aBill Pemberton	D-77833 Ottersweier
9356cdbcb838ebcc234a43ec81621a39231fdcb7aBill Pemberton	Tel: +19(0)7223/9493-0
10356cdbcb838ebcc234a43ec81621a39231fdcb7aBill Pemberton	Fax: +49(0)7223/9493-92
1125417922694e60f04cd4dc8448ada9236f18c532Justin P. Mattock	http://www.addi-data.com
12356cdbcb838ebcc234a43ec81621a39231fdcb7aBill Pemberton	info@addi-data.com
13c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
14c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbHThis program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
15c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
16c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbHThis program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
17c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
18c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbHYou should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
2039cfb97b0d89a99c8e50782b17e65114b89c2e59Adam BuchbinderYou should also find the complete GPL in the COPYING file accompanying this source code.
21c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
22c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH@endverbatim
23c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH*/
24c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH/*
25c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
26c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH  +-----------------------------------------------------------------------+
27c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH  | (C) ADDI-DATA GmbH          Dieselstraße 3       D-77833 Ottersweier  |
28c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH  +-----------------------------------------------------------------------+
29c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH  | Tel : +49 (0) 7223/9493-0     | email    : info@addi-data.com         |
30c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH  | Fax : +49 (0) 7223/9493-92    | Internet : http://www.addi-data.com   |
31c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH  +-----------------------------------------------------------------------+
32c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH  | Project     : API APCI1648    | Compiler : gcc                        |
33c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH  | Module name : TTL.C           | Version  : 2.96                       |
34c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH  +-------------------------------+---------------------------------------+
35c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH  | Project manager: S. Weber     | Date     :  25/05/2005                |
36c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH  +-----------------------------------------------------------------------+
37c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH  | Description :   APCI-16XX TTL I/O module                              |
38c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH  |                                                                       |
39c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH  |                                                                       |
40c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH  +-----------------------------------------------------------------------+
41c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH  |                             UPDATES                                   |
42c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH  +-----------------------------------------------------------------------+
43c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH  |   Date   |   Author  |          Description of updates                |
44c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH  +----------+-----------+------------------------------------------------+
45c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH  |25.05.2005| S.Weber   | Creation                                       |
46c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH  |          |           |                                                |
47c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH  +-----------------------------------------------------------------------+
48c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH*/
49c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
50c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH/*
51c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH+----------------------------------------------------------------------------+
52c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH|                               Included files                               |
53c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH+----------------------------------------------------------------------------+
54c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH*/
55c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
56c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH#include "hwdrv_apci16xx.h"
57c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
58c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH/*
59c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH+----------------------------------------------------------------------------+
6074b894e56abcb2403894b268100773f4aabe1999Bill Pemberton| Function Name     : int   i_APCI16XX_InsnConfigInitTTLIO                   |
6171b5f4f11971dea972832ad63a994c7e5b45db6bBill Pemberton|                          (struct comedi_device    *dev,                           |
6234c43922e62708d45e9660eee4b4f1fb7b4bf2c7Bill Pemberton|                           struct comedi_subdevice *s,                             |
6390035c0886b256d75bced13b3b3cea5234aff136Bill Pemberton|                           struct comedi_insn      *insn,                          |
64790c55415aa31f4c732729f94d2c3a54f7d3bfc2Bill Pemberton|                           unsigned int         *data)                          |
65c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH+----------------------------------------------------------------------------+
66c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH| Task           APCI16XX_TTL_INIT (using defaults)   :                      |
67c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH|                Configure the TTL I/O operating mode from all ports         |
68c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH|                You must calling this function be                           |
69c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH|                for you call any other function witch access of TTL.        |
70c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH|                APCI16XX_TTL_INITDIRECTION(user inputs for direction)       |
71c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH+----------------------------------------------------------------------------+
721783fbfe023b7c2b912fbb020e01ff46985aa0abBill Pemberton| Input Parameters  : b_InitType    = (unsigned char) data[0];                        |
731783fbfe023b7c2b912fbb020e01ff46985aa0abBill Pemberton|                     b_Port0Mode   = (unsigned char) data[1];                        |
741783fbfe023b7c2b912fbb020e01ff46985aa0abBill Pemberton|                     b_Port1Mode   = (unsigned char) data[2];                        |
751783fbfe023b7c2b912fbb020e01ff46985aa0abBill Pemberton|                     b_Port2Mode   = (unsigned char) data[3];                        |
761783fbfe023b7c2b912fbb020e01ff46985aa0abBill Pemberton|                     b_Port3Mode   = (unsigned char) data[4];                        |
77c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH|                     ........                                               |
78c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH+----------------------------------------------------------------------------+
79c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH| Output Parameters : -                                                      |
80c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH+----------------------------------------------------------------------------+
81c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH| Return Value      :>0: No error                                            |
82c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH|                    -1: Port 0 mode selection is wrong                      |
83c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH|                    -2: Port 1 mode selection is wrong                      |
84c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH|                    -3: Port 2 mode selection is wrong                      |
85c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH|                    -4: Port 3 mode selection is wrong                      |
86c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH|                    -X: Port X-1 mode selection is wrong                    |
87c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH|                    ....                                                    |
88c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH|                    -100 : Config command error                             |
89c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH|                    -101 : Data size error                                  |
90c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH+----------------------------------------------------------------------------+
91c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH*/
92c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
93da91b2692e0939b307f9047192d2b9fe07793e7aBill Pembertonint i_APCI16XX_InsnConfigInitTTLIO(struct comedi_device *dev,
94da91b2692e0939b307f9047192d2b9fe07793e7aBill Pemberton	struct comedi_subdevice *s, struct comedi_insn *insn, unsigned int *data)
95c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH{
9674b894e56abcb2403894b268100773f4aabe1999Bill Pemberton	int i_ReturnValue = insn->n;
971783fbfe023b7c2b912fbb020e01ff46985aa0abBill Pemberton	unsigned char b_Command = 0;
981783fbfe023b7c2b912fbb020e01ff46985aa0abBill Pemberton	unsigned char b_Cpt = 0;
991783fbfe023b7c2b912fbb020e01ff46985aa0abBill Pemberton	unsigned char b_NumberOfPort =
1007e0b3bf3abec4cd30c58e6311f913759a9e324d7Ian Abbott		(unsigned char) (this_board->i_NbrTTLChannel / 8);
101c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
102c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	/************************/
103c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	/* Test the buffer size */
104c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	/************************/
105c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
106c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	if (insn->n >= 1) {
107c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	   /*******************/
108c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		/* Get the command */
109c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		/* **************** */
110c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
1111783fbfe023b7c2b912fbb020e01ff46985aa0abBill Pemberton		b_Command = (unsigned char) data[0];
112c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
113c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	   /********************/
114c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		/* Test the command */
115c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	   /********************/
116c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
117c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		if ((b_Command == APCI16XX_TTL_INIT) ||
118c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH			(b_Command == APCI16XX_TTL_INITDIRECTION) ||
119c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH			(b_Command == APCI16XX_TTL_OUTPUTMEMORY)) {
120c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	      /***************************************/
121c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH			/* Test the initialisation buffer size */
122c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	      /***************************************/
123c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
124c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH			if ((b_Command == APCI16XX_TTL_INITDIRECTION)
1251783fbfe023b7c2b912fbb020e01ff46985aa0abBill Pemberton				&& ((unsigned char) (insn->n - 1) != b_NumberOfPort)) {
126c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		 /*******************/
127c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH				/* Data size error */
128c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		 /*******************/
129c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
130c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH				printk("\nBuffer size error");
131c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH				i_ReturnValue = -101;
132c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH			}
133c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
134c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH			if ((b_Command == APCI16XX_TTL_OUTPUTMEMORY)
1351783fbfe023b7c2b912fbb020e01ff46985aa0abBill Pemberton				&& ((unsigned char) (insn->n) != 2)) {
136c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		 /*******************/
137c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH				/* Data size error */
138c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		 /*******************/
139c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
140c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH				printk("\nBuffer size error");
141c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH				i_ReturnValue = -101;
142c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH			}
143c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		} else {
144c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	      /************************/
145c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH			/* Config command error */
146c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	      /************************/
147c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
148c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH			printk("\nCommand selection error");
149c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH			i_ReturnValue = -100;
150c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		}
151c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	} else {
152c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	   /*******************/
153c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		/* Data size error */
154c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	   /*******************/
155c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
156c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		printk("\nBuffer size error");
157c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		i_ReturnValue = -101;
158c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	}
159c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
160c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	/**************************************************************************/
161c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	/* Test if no error occur and APCI16XX_TTL_INITDIRECTION command selected */
162c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	/**************************************************************************/
163c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
164c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	if ((i_ReturnValue >= 0) && (b_Command == APCI16XX_TTL_INITDIRECTION)) {
165c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		memset(devpriv->ul_TTLPortConfiguration, 0,
166c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH			sizeof(devpriv->ul_TTLPortConfiguration));
167c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
168c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	   /*************************************/
169c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		/* Test the port direction selection */
170c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	   /*************************************/
171c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
172c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		for (b_Cpt = 1;
173c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH			(b_Cpt <= b_NumberOfPort) && (i_ReturnValue >= 0);
174c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH			b_Cpt++) {
175c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	      /**********************/
176c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH			/* Test the direction */
177c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	      /**********************/
178c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
179c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH			if ((data[b_Cpt] != 0) && (data[b_Cpt] != 0xFF)) {
180c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		 /************************/
181c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH				/* Port direction error */
182c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		 /************************/
183c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
184c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH				printk("\nPort %d direction selection error",
18574b894e56abcb2403894b268100773f4aabe1999Bill Pemberton					(int) b_Cpt);
18674b894e56abcb2403894b268100773f4aabe1999Bill Pemberton				i_ReturnValue = -(int) b_Cpt;
187c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH			}
188c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
189c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	      /**************************/
190c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH			/* Save the configuration */
191c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	      /**************************/
192c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
193c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH			devpriv->ul_TTLPortConfiguration[(b_Cpt - 1) / 4] =
194c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH				devpriv->ul_TTLPortConfiguration[(b_Cpt -
195c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH					1) / 4] | (data[b_Cpt] << (8 * ((b_Cpt -
196c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH							1) % 4)));
197c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		}
198c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	}
199c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
200c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	/**************************/
201c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	/* Test if no error occur */
202c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	/**************************/
203c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
204c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	if (i_ReturnValue >= 0) {
205c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	   /***********************************/
206c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		/* Test if TTL port initilaisation */
207c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	   /***********************************/
208c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
209c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		if ((b_Command == APCI16XX_TTL_INIT)
210c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH			|| (b_Command == APCI16XX_TTL_INITDIRECTION)) {
211c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	      /******************************/
212c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH			/* Set all port configuration */
213c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	      /******************************/
214c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
215c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH			for (b_Cpt = 0; b_Cpt <= b_NumberOfPort; b_Cpt++) {
216c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH				if ((b_Cpt % 4) == 0) {
217c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		    /*************************/
218c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH					/* Set the configuration */
219c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		    /*************************/
220c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
221c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH					outl(devpriv->
222c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH						ul_TTLPortConfiguration[b_Cpt /
223c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH							4],
224c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH						devpriv->iobase + 32 + b_Cpt);
225c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH				}
226c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH			}
227c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		}
228c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	}
229c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
230c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	/************************************************/
231c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	/* Test if output memory initialisation command */
232c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	/************************************************/
233c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
234c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	if (b_Command == APCI16XX_TTL_OUTPUTMEMORY) {
235c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		if (data[1]) {
236c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH			devpriv->b_OutputMemoryStatus = ADDIDATA_ENABLE;
237c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		} else {
238c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH			devpriv->b_OutputMemoryStatus = ADDIDATA_DISABLE;
239c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		}
240c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	}
241c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
242dae0dc30be7fa21b15a9d9534589286c6c3e68a3Bill Pemberton	return i_ReturnValue;
243c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH}
244c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
245c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH/*
246c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH+----------------------------------------------------------------------------+
247c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH|                            INPUT FUNCTIONS                                 |
248c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH+----------------------------------------------------------------------------+
249c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH*/
250c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
251c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH/*
252c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH+----------------------------------------------------------------------------+
25374b894e56abcb2403894b268100773f4aabe1999Bill Pemberton| Function Name     : int     i_APCI16XX_InsnBitsReadTTLIO                   |
25471b5f4f11971dea972832ad63a994c7e5b45db6bBill Pemberton|                          (struct comedi_device    *dev,                           |
25534c43922e62708d45e9660eee4b4f1fb7b4bf2c7Bill Pemberton|                           struct comedi_subdevice *s,                             |
25690035c0886b256d75bced13b3b3cea5234aff136Bill Pemberton|                           struct comedi_insn      *insn,                          |
257790c55415aa31f4c732729f94d2c3a54f7d3bfc2Bill Pemberton|                           unsigned int         *data)                          |
258c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH+----------------------------------------------------------------------------+
259c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH| Task              : Read the status from selected TTL digital input        |
260c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH|                     (b_InputChannel)                                       |
261c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH+----------------------------------------------------------------------------+
262c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH| Task              : Read the status from digital input port                |
263c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH|                     (b_SelectedPort)                                       |
264c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH+----------------------------------------------------------------------------+
265c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH| Input Parameters  :                                                        |
266c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH|              APCI16XX_TTL_READCHANNEL                                      |
267c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH|                    b_SelectedPort= CR_RANGE(insn->chanspec);               |
268c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH|                    b_InputChannel= CR_CHAN(insn->chanspec);                |
2691783fbfe023b7c2b912fbb020e01ff46985aa0abBill Pemberton|                    b_ReadType	  = (unsigned char) data[0];                          |
270c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH|                                                                            |
271c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH|              APCI16XX_TTL_READPORT                                         |
272c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH|                    b_SelectedPort= CR_RANGE(insn->chanspec);               |
2731783fbfe023b7c2b912fbb020e01ff46985aa0abBill Pemberton|                    b_ReadType	  = (unsigned char) data[0];                          |
274c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH+----------------------------------------------------------------------------+
275c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH| Output Parameters : data[0]    0 : Channle is not active                   |
276c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH|                                1 : Channle is active                       |
277c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH+----------------------------------------------------------------------------+
278c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH| Return Value      : >0  : No error                                         |
279c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH|                    -100 : Config command error                             |
280c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH|                    -101 : Data size error                                  |
281c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH|                    -102 : The selected TTL input port is wrong             |
282c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH|                    -103 : The selected TTL digital input is wrong          |
283c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH+----------------------------------------------------------------------------+
284c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH*/
285c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
286da91b2692e0939b307f9047192d2b9fe07793e7aBill Pembertonint i_APCI16XX_InsnBitsReadTTLIO(struct comedi_device *dev,
287da91b2692e0939b307f9047192d2b9fe07793e7aBill Pemberton	struct comedi_subdevice *s, struct comedi_insn *insn, unsigned int *data)
288c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH{
28974b894e56abcb2403894b268100773f4aabe1999Bill Pemberton	int i_ReturnValue = insn->n;
2901783fbfe023b7c2b912fbb020e01ff46985aa0abBill Pemberton	unsigned char b_Command = 0;
2911783fbfe023b7c2b912fbb020e01ff46985aa0abBill Pemberton	unsigned char b_NumberOfPort =
2927e0b3bf3abec4cd30c58e6311f913759a9e324d7Ian Abbott		(unsigned char) (this_board->i_NbrTTLChannel / 8);
2931783fbfe023b7c2b912fbb020e01ff46985aa0abBill Pemberton	unsigned char b_SelectedPort = CR_RANGE(insn->chanspec);
2941783fbfe023b7c2b912fbb020e01ff46985aa0abBill Pemberton	unsigned char b_InputChannel = CR_CHAN(insn->chanspec);
2951783fbfe023b7c2b912fbb020e01ff46985aa0abBill Pemberton	unsigned char *pb_Status;
296756e9d7ca6292ba21a6a63bf35ed1abc5250b98dBill Pemberton	unsigned int dw_Status;
297c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
298c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	/************************/
299c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	/* Test the buffer size */
300c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	/************************/
301c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
302c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	if (insn->n >= 1) {
303c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	   /*******************/
304c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		/* Get the command */
305c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		/* **************** */
306c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
3071783fbfe023b7c2b912fbb020e01ff46985aa0abBill Pemberton		b_Command = (unsigned char) data[0];
308c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
309c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	   /********************/
310c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		/* Test the command */
311c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	   /********************/
312c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
313c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		if ((b_Command == APCI16XX_TTL_READCHANNEL)
314c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH			|| (b_Command == APCI16XX_TTL_READPORT)) {
315c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	      /**************************/
316c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH			/* Test the selected port */
317c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	      /**************************/
318c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
319c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH			if (b_SelectedPort < b_NumberOfPort) {
320c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		 /**********************/
321c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH				/* Test if input port */
322c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		 /**********************/
323c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
324c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH				if (((devpriv->ul_TTLPortConfiguration
325c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH							[b_SelectedPort /
326c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH								4] >> (8 *
327c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH								(b_SelectedPort
328c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH									%
329c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH									4))) &
330c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH						0xFF) == 0) {
331c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		    /***************************/
332c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH					/* Test the channel number */
333c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		    /***************************/
334c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
335c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH					if ((b_Command ==
336c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH							APCI16XX_TTL_READCHANNEL)
337c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH						&& (b_InputChannel > 7)) {
338c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		       /*******************************************/
339c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH						/* The selected TTL digital input is wrong */
340c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		       /*******************************************/
341c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
342c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH						printk("\nChannel selection error");
343c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH						i_ReturnValue = -103;
344c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH					}
345c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH				} else {
346c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		    /****************************************/
347c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH					/* The selected TTL input port is wrong */
348c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		    /****************************************/
349c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
350c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH					printk("\nPort selection error");
351c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH					i_ReturnValue = -102;
352c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH				}
353c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH			} else {
354c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		 /****************************************/
355c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH				/* The selected TTL input port is wrong */
356c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		 /****************************************/
357c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
358c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH				printk("\nPort selection error");
359c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH				i_ReturnValue = -102;
360c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH			}
361c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		} else {
362c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	      /************************/
363c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH			/* Config command error */
364c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	      /************************/
365c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
366c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH			printk("\nCommand selection error");
367c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH			i_ReturnValue = -100;
368c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		}
369c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	} else {
370c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	   /*******************/
371c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		/* Data size error */
372c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	   /*******************/
373c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
374c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		printk("\nBuffer size error");
375c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		i_ReturnValue = -101;
376c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	}
377c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
378c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	/**************************/
379c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	/* Test if no error occur */
380c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	/**************************/
381c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
382c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	if (i_ReturnValue >= 0) {
3839b9bcba0cafa2578cebbe0eca01eaafd49f3e43bBill Pemberton		pb_Status = (unsigned char *) &data[0];
384c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
385c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	   /*******************************/
386c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		/* Get the digital inpu status */
387c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	   /*******************************/
388c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
389c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		dw_Status =
390c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH			inl(devpriv->iobase + 8 + ((b_SelectedPort / 4) * 4));
391c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		dw_Status = (dw_Status >> (8 * (b_SelectedPort % 4))) & 0xFF;
392c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
393c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	   /***********************/
394c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		/* Save the port value */
395c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	   /***********************/
396c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
3971783fbfe023b7c2b912fbb020e01ff46985aa0abBill Pemberton		*pb_Status = (unsigned char) dw_Status;
398c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
399c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	   /***************************************/
400c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		/* Test if read channel status command */
401c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	   /***************************************/
402c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
403c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		if (b_Command == APCI16XX_TTL_READCHANNEL) {
404c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH			*pb_Status = (*pb_Status >> b_InputChannel) & 1;
405c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		}
406c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	}
407c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
408dae0dc30be7fa21b15a9d9534589286c6c3e68a3Bill Pemberton	return i_ReturnValue;
409c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH}
410c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
411c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH/*
412c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH+----------------------------------------------------------------------------+
41374b894e56abcb2403894b268100773f4aabe1999Bill Pemberton| Function Name     : int i_APCI16XX_InsnReadTTLIOAllPortValue               |
41471b5f4f11971dea972832ad63a994c7e5b45db6bBill Pemberton|                          (struct comedi_device    *dev,                           |
41534c43922e62708d45e9660eee4b4f1fb7b4bf2c7Bill Pemberton|                           struct comedi_subdevice *s,                             |
41690035c0886b256d75bced13b3b3cea5234aff136Bill Pemberton|                           struct comedi_insn      *insn,                          |
417790c55415aa31f4c732729f94d2c3a54f7d3bfc2Bill Pemberton|                           unsigned int         *data)                          |
418c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH+----------------------------------------------------------------------------+
419c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH| Task              : Read the status from all digital input ports           |
420c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH+----------------------------------------------------------------------------+
421c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH| Input Parameters  : -                                                      |
422c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH+----------------------------------------------------------------------------+
423c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH| Output Parameters : data[0] : Port 0 to 3 data                             |
424c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH|                     data[1] : Port 4 to 7 data                             |
425c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH|                     ....                                                   |
426c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH+----------------------------------------------------------------------------+
427c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH| Return Value      : 0: No error                                            |
428c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH|                    -100 : Read command error                               |
429c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH|                    -101 : Data size error                                  |
430c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH+----------------------------------------------------------------------------+
431c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH*/
432c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
433da91b2692e0939b307f9047192d2b9fe07793e7aBill Pembertonint i_APCI16XX_InsnReadTTLIOAllPortValue(struct comedi_device *dev,
434da91b2692e0939b307f9047192d2b9fe07793e7aBill Pemberton	struct comedi_subdevice *s, struct comedi_insn *insn, unsigned int *data)
435c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH{
4361783fbfe023b7c2b912fbb020e01ff46985aa0abBill Pemberton	unsigned char b_Command = (unsigned char) CR_AREF(insn->chanspec);
43774b894e56abcb2403894b268100773f4aabe1999Bill Pemberton	int i_ReturnValue = insn->n;
4381783fbfe023b7c2b912fbb020e01ff46985aa0abBill Pemberton	unsigned char b_Cpt = 0;
4391783fbfe023b7c2b912fbb020e01ff46985aa0abBill Pemberton	unsigned char b_NumberOfPort = 0;
440790c55415aa31f4c732729f94d2c3a54f7d3bfc2Bill Pemberton	unsigned int *pls_ReadData = data;
441c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
442c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	/********************/
443c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	/* Test the command */
444c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	/********************/
445c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
446c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	if ((b_Command == APCI16XX_TTL_READ_ALL_INPUTS)
447c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		|| (b_Command == APCI16XX_TTL_READ_ALL_OUTPUTS)) {
448c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	   /**********************************/
449c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		/* Get the number of 32-Bit ports */
450c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	   /**********************************/
451c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
452c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		b_NumberOfPort =
4537e0b3bf3abec4cd30c58e6311f913759a9e324d7Ian Abbott			(unsigned char) (this_board->i_NbrTTLChannel / 32);
454c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		if ((b_NumberOfPort * 32) <
4557e0b3bf3abec4cd30c58e6311f913759a9e324d7Ian Abbott			this_board->i_NbrTTLChannel) {
456c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH			b_NumberOfPort = b_NumberOfPort + 1;
457c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		}
458c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
459c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	   /************************/
460c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		/* Test the buffer size */
461c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	   /************************/
462c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
463c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		if (insn->n >= b_NumberOfPort) {
464c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH			if (b_Command == APCI16XX_TTL_READ_ALL_INPUTS) {
465c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		 /**************************/
466c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH				/* Read all digital input */
467c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		 /**************************/
468c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
469c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH				for (b_Cpt = 0; b_Cpt < b_NumberOfPort; b_Cpt++) {
470c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		    /************************/
471c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH					/* Read the 32-Bit port */
472c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		    /************************/
473c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
474c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH					pls_ReadData[b_Cpt] =
475c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH						inl(devpriv->iobase + 8 +
476c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH						(b_Cpt * 4));
477c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
478c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		    /**************************************/
479c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH					/* Mask all channels used als outputs */
480c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		    /**************************************/
481c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
482c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH					pls_ReadData[b_Cpt] =
483c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH						pls_ReadData[b_Cpt] &
484c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH						(~devpriv->
485c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH						ul_TTLPortConfiguration[b_Cpt]);
486c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH				}
487c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH			} else {
488c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		 /****************************/
489c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH				/* Read all digital outputs */
490c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		 /****************************/
491c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
492c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH				for (b_Cpt = 0; b_Cpt < b_NumberOfPort; b_Cpt++) {
493c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		    /************************/
494c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH					/* Read the 32-Bit port */
495c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		    /************************/
496c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
497c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH					pls_ReadData[b_Cpt] =
498c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH						inl(devpriv->iobase + 20 +
499c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH						(b_Cpt * 4));
500c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
501c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		    /**************************************/
502c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH					/* Mask all channels used als outputs */
503c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		    /**************************************/
504c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
505c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH					pls_ReadData[b_Cpt] =
506c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH						pls_ReadData[b_Cpt] & devpriv->
507c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH						ul_TTLPortConfiguration[b_Cpt];
508c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH				}
509c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH			}
510c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		} else {
511c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	      /*******************/
512c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH			/* Data size error */
513c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	      /*******************/
514c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
515c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH			printk("\nBuffer size error");
516c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH			i_ReturnValue = -101;
517c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		}
518c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	} else {
519c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	   /*****************/
520c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		/* Command error */
521c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	   /*****************/
522c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
523c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		printk("\nCommand selection error");
524c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		i_ReturnValue = -100;
525c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	}
526c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
527dae0dc30be7fa21b15a9d9534589286c6c3e68a3Bill Pemberton	return i_ReturnValue;
528c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH}
529c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
530c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH/*
531c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH+----------------------------------------------------------------------------+
532c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH|                            OUTPUT FUNCTIONS                                |
533c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH+----------------------------------------------------------------------------+
534c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH*/
535c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
536c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH/*
537c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH+----------------------------------------------------------------------------+
53874b894e56abcb2403894b268100773f4aabe1999Bill Pemberton| Function Name     : int     i_APCI16XX_InsnBitsWriteTTLIO                  |
53971b5f4f11971dea972832ad63a994c7e5b45db6bBill Pemberton|                          (struct comedi_device    *dev,                           |
54034c43922e62708d45e9660eee4b4f1fb7b4bf2c7Bill Pemberton|                           struct comedi_subdevice *s,                             |
54190035c0886b256d75bced13b3b3cea5234aff136Bill Pemberton|                           struct comedi_insn      *insn,                          |
542790c55415aa31f4c732729f94d2c3a54f7d3bfc2Bill Pemberton|                           unsigned int         *data)                          |
543c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH+----------------------------------------------------------------------------+
544c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH| Task              : Set the state from selected TTL digital output         |
545c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH|                     (b_OutputChannel)                                      |
546c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH+----------------------------------------------------------------------------+
547c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH| Task              : Set the state from digital output port                 |
548c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH|                     (b_SelectedPort)                                       |
549c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH+----------------------------------------------------------------------------+
550c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH| Input Parameters  :                                                        |
551c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH|              APCI16XX_TTL_WRITECHANNEL_ON | APCI16XX_TTL_WRITECHANNEL_OFF  |
552c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH|                    b_SelectedPort = CR_RANGE(insn->chanspec);              |
553c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH|                    b_OutputChannel= CR_CHAN(insn->chanspec);               |
5541783fbfe023b7c2b912fbb020e01ff46985aa0abBill Pemberton|                    b_Command      = (unsigned char) data[0];                        |
555c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH|                                                                            |
556c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH|              APCI16XX_TTL_WRITEPORT_ON | APCI16XX_TTL_WRITEPORT_OFF        |
557c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH|                    b_SelectedPort = CR_RANGE(insn->chanspec);              |
5581783fbfe023b7c2b912fbb020e01ff46985aa0abBill Pemberton|                    b_Command      = (unsigned char) data[0];                        |
559c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH+----------------------------------------------------------------------------+
560c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH| Output Parameters : data[0] : TTL output port 0 to 3 data                  |
561c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH|                     data[1] : TTL output port 4 to 7 data                  |
562c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH|                     ....                                                   |
563c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH+----------------------------------------------------------------------------+
564c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH| Return Value      : >0  : No error                                         |
565c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH|                    -100 : Command error                                    |
566c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH|                    -101 : Data size error                                  |
567c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH|                    -102 : The selected TTL output port is wrong            |
568c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH|                    -103 : The selected TTL digital output is wrong         |
569c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH|                    -104 : Output memory disabled                           |
570c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH+----------------------------------------------------------------------------+
571c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH*/
572c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
573da91b2692e0939b307f9047192d2b9fe07793e7aBill Pembertonint i_APCI16XX_InsnBitsWriteTTLIO(struct comedi_device *dev,
574da91b2692e0939b307f9047192d2b9fe07793e7aBill Pemberton	struct comedi_subdevice *s, struct comedi_insn *insn, unsigned int *data)
575c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH{
57674b894e56abcb2403894b268100773f4aabe1999Bill Pemberton	int i_ReturnValue = insn->n;
5771783fbfe023b7c2b912fbb020e01ff46985aa0abBill Pemberton	unsigned char b_Command = 0;
5781783fbfe023b7c2b912fbb020e01ff46985aa0abBill Pemberton	unsigned char b_NumberOfPort =
5797e0b3bf3abec4cd30c58e6311f913759a9e324d7Ian Abbott		(unsigned char) (this_board->i_NbrTTLChannel / 8);
5801783fbfe023b7c2b912fbb020e01ff46985aa0abBill Pemberton	unsigned char b_SelectedPort = CR_RANGE(insn->chanspec);
5811783fbfe023b7c2b912fbb020e01ff46985aa0abBill Pemberton	unsigned char b_OutputChannel = CR_CHAN(insn->chanspec);
582756e9d7ca6292ba21a6a63bf35ed1abc5250b98dBill Pemberton	unsigned int dw_Status = 0;
583c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
584c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	/************************/
585c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	/* Test the buffer size */
586c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	/************************/
587c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
588c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	if (insn->n >= 1) {
589c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	   /*******************/
590c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		/* Get the command */
591c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		/* **************** */
592c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
5931783fbfe023b7c2b912fbb020e01ff46985aa0abBill Pemberton		b_Command = (unsigned char) data[0];
594c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
595c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	   /********************/
596c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		/* Test the command */
597c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	   /********************/
598c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
599c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		if ((b_Command == APCI16XX_TTL_WRITECHANNEL_ON) ||
600c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH			(b_Command == APCI16XX_TTL_WRITEPORT_ON) ||
601c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH			(b_Command == APCI16XX_TTL_WRITECHANNEL_OFF) ||
602c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH			(b_Command == APCI16XX_TTL_WRITEPORT_OFF)) {
603c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	      /**************************/
604c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH			/* Test the selected port */
605c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	      /**************************/
606c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
607c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH			if (b_SelectedPort < b_NumberOfPort) {
608c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		 /***********************/
609c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH				/* Test if output port */
610c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		 /***********************/
611c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
612c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH				if (((devpriv->ul_TTLPortConfiguration
613c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH							[b_SelectedPort /
614c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH								4] >> (8 *
615c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH								(b_SelectedPort
616c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH									%
617c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH									4))) &
618c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH						0xFF) == 0xFF) {
619c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		    /***************************/
620c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH					/* Test the channel number */
621c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		    /***************************/
622c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
623c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH					if (((b_Command == APCI16XX_TTL_WRITECHANNEL_ON) || (b_Command == APCI16XX_TTL_WRITECHANNEL_OFF)) && (b_OutputChannel > 7)) {
624c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		       /********************************************/
625c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH						/* The selected TTL digital output is wrong */
626c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		       /********************************************/
627c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
628c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH						printk("\nChannel selection error");
629c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH						i_ReturnValue = -103;
630c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH					}
631c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
632c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH					if (((b_Command == APCI16XX_TTL_WRITECHANNEL_OFF) || (b_Command == APCI16XX_TTL_WRITEPORT_OFF)) && (devpriv->b_OutputMemoryStatus == ADDIDATA_DISABLE)) {
633c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		       /********************************************/
634c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH						/* The selected TTL digital output is wrong */
635c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		       /********************************************/
636c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
637c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH						printk("\nOutput memory disabled");
638c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH						i_ReturnValue = -104;
639c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH					}
640c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
641c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		    /************************/
642c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH					/* Test the buffer size */
643c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		    /************************/
644c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
645c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH					if (((b_Command == APCI16XX_TTL_WRITEPORT_ON) || (b_Command == APCI16XX_TTL_WRITEPORT_OFF)) && (insn->n < 2)) {
646c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		       /*******************/
647c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH						/* Data size error */
648c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		       /*******************/
649c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
650c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH						printk("\nBuffer size error");
651c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH						i_ReturnValue = -101;
652c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH					}
653c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH				} else {
654c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		    /*****************************************/
655c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH					/* The selected TTL output port is wrong */
656c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		    /*****************************************/
657c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
658c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH					printk("\nPort selection error %lX",
659c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH						(unsigned long)devpriv->
660c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH						ul_TTLPortConfiguration[0]);
661c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH					i_ReturnValue = -102;
662c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH				}
663c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH			} else {
664c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		 /****************************************/
665c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH				/* The selected TTL output port is wrong */
666c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		 /****************************************/
667c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
668c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH				printk("\nPort selection error %d %d",
669c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH					b_SelectedPort, b_NumberOfPort);
670c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH				i_ReturnValue = -102;
671c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH			}
672c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		} else {
673c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	      /************************/
674c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH			/* Config command error */
675c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	      /************************/
676c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
677c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH			printk("\nCommand selection error");
678c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH			i_ReturnValue = -100;
679c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		}
680c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	} else {
681c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	   /*******************/
682c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		/* Data size error */
683c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	   /*******************/
684c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
685c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		printk("\nBuffer size error");
686c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		i_ReturnValue = -101;
687c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	}
688c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
689c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	/**************************/
690c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	/* Test if no error occur */
691c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	/**************************/
692c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
693c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	if (i_ReturnValue >= 0) {
694c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	   /********************************/
695c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		/* Get the digital output state */
696c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	   /********************************/
697c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
698c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		dw_Status =
699c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH			inl(devpriv->iobase + 20 + ((b_SelectedPort / 4) * 4));
700c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
701c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	   /**********************************/
702c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		/* Test if output memory not used */
703c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	   /**********************************/
704c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
705c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		if (devpriv->b_OutputMemoryStatus == ADDIDATA_DISABLE) {
706c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	      /*********************************/
707c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH			/* Clear the selected port value */
708c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	      /*********************************/
709c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
710c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH			dw_Status =
711c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH				dw_Status & (0xFFFFFFFFUL -
712c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH				(0xFFUL << (8 * (b_SelectedPort % 4))));
713c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		}
714c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
715c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	   /******************************/
716c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		/* Test if setting channel ON */
717c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	   /******************************/
718c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
719c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		if (b_Command == APCI16XX_TTL_WRITECHANNEL_ON) {
720c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH			dw_Status =
721c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH				dw_Status | (1UL << ((8 * (b_SelectedPort %
722c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH							4)) + b_OutputChannel));
723c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		}
724c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
725c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	   /***************************/
726c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		/* Test if setting port ON */
727c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	   /***************************/
728c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
729c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		if (b_Command == APCI16XX_TTL_WRITEPORT_ON) {
730c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH			dw_Status =
731c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH				dw_Status | ((data[1] & 0xFF) << (8 *
732c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH					(b_SelectedPort % 4)));
733c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		}
734c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
735c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	   /*******************************/
736c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		/* Test if setting channel OFF */
737c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	   /*******************************/
738c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
739c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		if (b_Command == APCI16XX_TTL_WRITECHANNEL_OFF) {
740c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH			dw_Status =
741c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH				dw_Status & (0xFFFFFFFFUL -
742c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH				(1UL << ((8 * (b_SelectedPort % 4)) +
743c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH						b_OutputChannel)));
744c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		}
745c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
746c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	   /****************************/
747c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		/* Test if setting port OFF */
748c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	   /****************************/
749c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
750c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		if (b_Command == APCI16XX_TTL_WRITEPORT_OFF) {
751c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH			dw_Status =
752c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH				dw_Status & (0xFFFFFFFFUL -
753c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH				((data[1] & 0xFF) << (8 * (b_SelectedPort %
754c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH							4))));
755c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		}
756c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
757c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH		outl(dw_Status,
758c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH			devpriv->iobase + 20 + ((b_SelectedPort / 4) * 4));
759c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	}
760c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
761dae0dc30be7fa21b15a9d9534589286c6c3e68a3Bill Pemberton	return i_ReturnValue;
762c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH}
763c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
764c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH/*
765c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH+----------------------------------------------------------------------------+
76671b5f4f11971dea972832ad63a994c7e5b45db6bBill Pemberton| Function   Name   : int i_APCI2200_Reset(struct comedi_device *dev)               |                                                         +----------------------------------------------------------------------------+
767c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH| Task              :resets all the registers                                |
768c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH+----------------------------------------------------------------------------+
76971b5f4f11971dea972832ad63a994c7e5b45db6bBill Pemberton| Input Parameters  : struct comedi_device *dev                                     |
770c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH+----------------------------------------------------------------------------+
771c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH| Output Parameters : -                                                      |
772c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH+----------------------------------------------------------------------------+
773c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH| Return Value      : -                                                      |
774c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH+----------------------------------------------------------------------------+
775c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH*/
776c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
777da91b2692e0939b307f9047192d2b9fe07793e7aBill Pembertonint i_APCI16XX_Reset(struct comedi_device *dev)
778c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH{
779c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH	return 0;
780c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH}
781