• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright 2003 Digi International (www.digi.com)
3  *	Scott H Kilau <Scott_Kilau at digi dot com>
4  *
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License as published by
7  * the Free Software Foundation; either version 2, or (at your option)
8  * any later version.
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY, EXPRESS OR IMPLIED; without even the
12  * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
13  * PURPOSE.  See the GNU General Public License for more details.
14  */
15 
16 #ifndef __DIGI_H
17 #define __DIGI_H
18 
19 #ifndef TIOCM_LE
20 #define		TIOCM_LE	0x01		/* line enable		*/
21 #define		TIOCM_DTR	0x02		/* data terminal ready	*/
22 #define		TIOCM_RTS	0x04		/* request to send	*/
23 #define		TIOCM_ST	0x08		/* secondary transmit	*/
24 #define		TIOCM_SR	0x10		/* secondary receive	*/
25 #define		TIOCM_CTS	0x20		/* clear to send	*/
26 #define		TIOCM_CAR	0x40		/* carrier detect	*/
27 #define		TIOCM_RNG	0x80		/* ring	indicator	*/
28 #define		TIOCM_DSR	0x100		/* data set ready	*/
29 #define		TIOCM_RI	TIOCM_RNG	/* ring (alternate)	*/
30 #define		TIOCM_CD	TIOCM_CAR	/* carrier detect (alt)	*/
31 #endif
32 
33 #if !defined(TIOCMSET)
34 #define	TIOCMSET	(('d' << 8) | 252)	/* set modem ctrl state	*/
35 #define	TIOCMGET	(('d' << 8) | 253)	/* set modem ctrl state	*/
36 #endif
37 
38 #if !defined(TIOCMBIC)
39 #define	TIOCMBIC	(('d' << 8) | 254)	/* set modem ctrl state */
40 #define	TIOCMBIS	(('d' << 8) | 255)	/* set modem ctrl state */
41 #endif
42 
43 #define DIGI_GETA	(('e' << 8) | 94)	/* Read params		*/
44 #define DIGI_SETA	(('e' << 8) | 95)	/* Set params		*/
45 #define DIGI_SETAW	(('e' << 8) | 96)	/* Drain & set params	*/
46 #define DIGI_SETAF	(('e' << 8) | 97)	/* Drain, flush & set params */
47 #define DIGI_GET_NI_INFO (('d' << 8) | 250) /* Non-intelligent state info */
48 #define DIGI_LOOPBACK (('d' << 8) | 252) /*
49 					* Enable/disable UART
50 					* internal loopback
51 					*/
52 #define DIGI_FAST	0x0002		/* Fast baud rates		*/
53 #define RTSPACE		0x0004		/* RTS input flow control	*/
54 #define CTSPACE		0x0008		/* CTS output flow control	*/
55 #define DIGI_COOK	0x0080		/* Cooked processing done in FEP */
56 #define DIGI_FORCEDCD	0x0100		/* Force carrier		*/
57 #define	DIGI_ALTPIN	0x0200		/* Alternate RJ-45 pin config	*/
58 #define	DIGI_PRINTER	0x0800		/* Hold port open for flow cntrl*/
59 #define DIGI_DTR_TOGGLE	0x2000		/* Support DTR Toggle           */
60 #define DIGI_RTS_TOGGLE	0x8000		/* Support RTS Toggle		*/
61 #define DIGI_PLEN	28		/* String length		*/
62 #define	DIGI_TSIZ	10		/* Terminal string len		*/
63 
64 /************************************************************************
65  * Structure used with ioctl commands for DIGI parameters.
66  ************************************************************************/
67 struct digi_t {
68 	unsigned short	digi_flags;		/* Flags (see above)	*/
69 	unsigned short	digi_maxcps;		/* Max printer CPS	*/
70 	unsigned short	digi_maxchar;		/* Max chars in print queue */
71 	unsigned short	digi_bufsize;		/* Buffer size		*/
72 	unsigned char	digi_onlen;		/* Length of ON string	*/
73 	unsigned char	digi_offlen;		/* Length of OFF string	*/
74 	char		digi_onstr[DIGI_PLEN];	/* Printer on string	*/
75 	char		digi_offstr[DIGI_PLEN];	/* Printer off string	*/
76 	char		digi_term[DIGI_TSIZ];	/* terminal string	*/
77 };
78 
79 /************************************************************************
80  * Structure to get driver status information
81  ************************************************************************/
82 struct digi_dinfo {
83 	unsigned int	dinfo_nboards;		/* # boards configured	*/
84 	char		dinfo_reserved[12];	/* for future expansion */
85 	char		dinfo_version[16];	/* driver version       */
86 };
87 
88 #define	DIGI_GETDD	(('d' << 8) | 248)	/* get driver info      */
89 
90 /************************************************************************
91  * Structure used with ioctl commands for per-board information
92  *
93  * physsize and memsize differ when board has "windowed" memory
94  ************************************************************************/
95 struct digi_info {
96 	unsigned int	info_bdnum;		/* Board number (0 based)  */
97 	unsigned int	info_ioport;		/* io port address         */
98 	unsigned int	info_physaddr;		/* memory address          */
99 	unsigned int	info_physsize;		/* Size of host mem window */
100 	unsigned int	info_memsize;		/* Amount of dual-port mem */
101 						/* on board                */
102 	unsigned short	info_bdtype;		/* Board type              */
103 	unsigned short	info_nports;		/* number of ports         */
104 	char		info_bdstate;		/* board state             */
105 	char		info_reserved[7];	/* for future expansion    */
106 };
107 
108 #define	DIGI_GETBD	(('d' << 8) | 249)	/* get board info          */
109 
110 struct digi_getbuffer /* Struct for holding buffer use counts */
111 {
112 	unsigned long tx_in;
113 	unsigned long tx_out;
114 	unsigned long rxbuf;
115 	unsigned long txbuf;
116 	unsigned long txdone;
117 };
118 
119 struct digi_getcounter {
120 	unsigned long norun;		/* number of UART overrun errors */
121 	unsigned long noflow;		/* number of buffer overflow errors */
122 	unsigned long nframe;		/* number of framing errors */
123 	unsigned long nparity;		/* number of parity errors */
124 	unsigned long nbreak;		/* number of breaks received */
125 	unsigned long rbytes;		/* number of received bytes */
126 	unsigned long tbytes;		/* number of bytes transmitted fully */
127 };
128 
129 /* Board State Definitions */
130 #define	BD_RUNNING	0x0
131 #define	BD_NOFEP	0x5
132 
133 #define DIGI_SETCUSTOMBAUD _IOW('e', 106, int)	/* Set integer baud rate */
134 #define DIGI_GETCUSTOMBAUD _IOR('e', 107, int)	/* Get integer baud rate */
135 
136 #define DIGI_REALPORT_GETBUFFERS (('e' << 8) | 108)
137 #define DIGI_REALPORT_SENDIMMEDIATE (('e' << 8) | 109)
138 #define DIGI_REALPORT_GETCOUNTERS (('e' << 8) | 110)
139 #define DIGI_REALPORT_GETEVENTS (('e' << 8) | 111)
140 
141 #define EV_OPU 0x0001 /* !<Output paused by client */
142 #define EV_OPS 0x0002 /* !<Output paused by reqular sw flowctrl */
143 #define EV_IPU 0x0010 /* !<Input paused unconditionally by user */
144 #define EV_IPS 0x0020 /* !<Input paused by high/low water marks */
145 #define EV_TXB 0x0040 /* !<Transmit break pending */
146 
147 /*
148  * This structure holds data needed for the intelligent <--> nonintelligent
149  * DPA translation
150  */
151 struct ni_info {
152 	int board;
153 	int channel;
154 	int dtr;
155 	int rts;
156 	int cts;
157 	int dsr;
158 	int ri;
159 	int dcd;
160 	int curtx;
161 	int currx;
162 	unsigned short iflag;
163 	unsigned short oflag;
164 	unsigned short cflag;
165 	unsigned short lflag;
166 	unsigned int mstat;
167 	unsigned char hflow;
168 	unsigned char xmit_stopped;
169 	unsigned char recv_stopped;
170 	unsigned int baud;
171 };
172 
173 #define T_CLASSIC 0002
174 #define T_PCIBUS 0400
175 #define T_NEO_EXPRESS 0001
176 #define T_NEO 0000
177 
178 #define TTY_FLIPBUF_SIZE 512
179 #endif /* DIGI_H */
180