2 * Copyright 2003 Digi International (www.digi.com)
3 * Scott H Kilau <Scott_Kilau at digi dot com>
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)
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.
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) */
33 #if !defined(TIOCMSET)
34 #define TIOCMSET (('d' << 8) | 252) /* set modem ctrl state */
35 #define TIOCMGET (('d' << 8) | 253) /* set modem ctrl state */
38 #if !defined(TIOCMBIC)
39 #define TIOCMBIC (('d' << 8) | 254) /* set modem ctrl state */
40 #define TIOCMBIS (('d' << 8) | 255) /* set modem ctrl state */
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) /* Enable/disable UART
51 #define DIGI_FAST 0x0002 /* Fast baud rates */
52 #define RTSPACE 0x0004 /* RTS input flow control */
53 #define CTSPACE 0x0008 /* CTS output flow control */
54 #define DIGI_COOK 0x0080 /* Cooked processing done in FEP */
55 #define DIGI_FORCEDCD 0x0100 /* Force carrier */
56 #define DIGI_ALTPIN 0x0200 /* Alternate RJ-45 pin config */
57 #define DIGI_PRINTER 0x0800 /* Hold port open for flow cntrl*/
58 #define DIGI_DTR_TOGGLE 0x2000 /* Support DTR Toggle */
59 #define DIGI_RTS_TOGGLE 0x8000 /* Support RTS Toggle */
60 #define DIGI_PLEN 28 /* String length */
61 #define DIGI_TSIZ 10 /* Terminal string len */
64 * Structure used with ioctl commands for DIGI parameters.
67 * struct digi_t - Ioctl commands for DIGI parameters.
69 * @digi_maxcps: Maximum printer CPS.
70 * @digi_maxchar: Maximum characters in the print queue.
71 * @digi_bufsize: Buffer size.
72 * @digi_onlen: Length of ON string.
73 * @digi_offlen: Length of OFF string.
74 * @digi_onstr: Printer ON string.
75 * @digi_offstr: Printer OFF string.
76 * @digi_term: Terminal string.
79 unsigned short digi_flags;
80 unsigned short digi_maxcps;
81 unsigned short digi_maxchar;
82 unsigned short digi_bufsize;
83 unsigned char digi_onlen;
84 unsigned char digi_offlen;
85 char digi_onstr[DIGI_PLEN];
86 char digi_offstr[DIGI_PLEN];
87 char digi_term[DIGI_TSIZ];
91 * struct digi_dinfo - Driver status information.
92 * @dinfo_nboards: Number of boards configured.
93 * @dinfo_reserved: Not used, for future expansion.
94 * @dinfio_version: Driver version.
97 unsigned int dinfo_nboards;
98 char dinfo_reserved[12];
99 char dinfo_version[16];
102 #define DIGI_GETDD (('d' << 8) | 248) /* get driver info */
105 * struct digi_info - Ioctl commands for per board information.
107 * Physsize and memsize differ when board has "windowed" memory.
109 * @info_bdnum: Board number (0 based).
110 * @info_ioport: IO port address.
111 * @indo_physaddr: Memory address.
112 * @info_physize: Size of host memory window.
113 * @info_memsize: Amount of dual-port memory on board.
114 * @info_bdtype: Board type.
115 * @info_nports: Number of ports.
116 * @info_bdstate: Board state.
117 * @info_reserved: Not used, for future expansion.
120 unsigned int info_bdnum;
121 unsigned int info_ioport;
122 unsigned int info_physaddr;
123 unsigned int info_physsize;
124 unsigned int info_memsize;
125 unsigned short info_bdtype;
126 unsigned short info_nports;
128 char info_reserved[7];
131 #define DIGI_GETBD (('d' << 8) | 249) /* get board info */
134 * struct digi_getbuffer - Holds buffer use counts.
136 struct digi_getbuffer {
138 unsigned long tx_out;
141 unsigned long txdone;
145 * struct digi_getcounter
146 * @norun: Number of UART overrun errors.
147 * @noflow: Number of buffer overflow errors.
148 * @nframe: Number of framing errors.
149 * @nparity: Number of parity errors.
150 * @nbreak: Number of breaks received.
151 * @rbytes: Number of received bytes.
152 * @tbytes: Number of transmitted bytes.
154 struct digi_getcounter {
156 unsigned long noflow;
157 unsigned long nframe;
158 unsigned long nparity;
159 unsigned long nbreak;
160 unsigned long rbytes;
161 unsigned long tbytes;
164 /* Board State Definitions */
165 #define BD_RUNNING 0x0
168 #define DIGI_SETCUSTOMBAUD _IOW('e', 106, int) /* Set integer baud rate */
169 #define DIGI_GETCUSTOMBAUD _IOR('e', 107, int) /* Get integer baud rate */
171 #define DIGI_REALPORT_GETBUFFERS (('e' << 8) | 108)
172 #define DIGI_REALPORT_SENDIMMEDIATE (('e' << 8) | 109)
173 #define DIGI_REALPORT_GETCOUNTERS (('e' << 8) | 110)
174 #define DIGI_REALPORT_GETEVENTS (('e' << 8) | 111)
176 #define EV_OPU 0x0001 /* Output paused by client */
177 #define EV_OPS 0x0002 /* Output paused by regular sw flowctrl */
178 #define EV_IPU 0x0010 /* Input paused unconditionally by user */
179 #define EV_IPS 0x0020 /* Input paused by high/low water marks */
180 #define EV_TXB 0x0040 /* Transmit break pending */
183 * struct ni_info - intelligent <--> non-intelligent DPA translation.
196 unsigned short iflag;
197 unsigned short oflag;
198 unsigned short cflag;
199 unsigned short lflag;
202 unsigned char xmit_stopped;
203 unsigned char recv_stopped;
207 #define T_CLASSIC 0002
208 #define T_PCIBUS 0400
209 #define T_NEO_EXPRESS 0001
212 #define TTY_FLIPBUF_SIZE 512