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) /*
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 */
64 /************************************************************************
65 * Structure used with ioctl commands for DIGI parameters.
66 ************************************************************************/
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 */
79 /************************************************************************
80 * Structure to get driver status information
81 ************************************************************************/
83 unsigned int dinfo_nboards
; /* # boards configured */
84 char dinfo_reserved
[12]; /* for future expansion */
85 char dinfo_version
[16]; /* driver version */
88 #define DIGI_GETDD (('d'<<8) | 248) /* get driver info */
90 /************************************************************************
91 * Structure used with ioctl commands for per-board information
93 * physsize and memsize differ when board has "windowed" memory
94 ************************************************************************/
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 */
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 */
108 #define DIGI_GETBD (('d'<<8) | 249) /* get board info */
110 struct digi_getbuffer
/* Struct for holding buffer use counts */
116 unsigned long txdone
;
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 */
129 /* Board State Definitions */
130 #define BD_RUNNING 0x0
133 #define DIGI_SETCUSTOMBAUD _IOW('e', 106, int) /* Set integer baud rate */
134 #define DIGI_GETCUSTOMBAUD _IOR('e', 107, int) /* Get integer baud rate */
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)
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 */
148 * This structure holds data needed for the intelligent <--> nonintelligent
162 unsigned short iflag
;
163 unsigned short oflag
;
164 unsigned short cflag
;
165 unsigned short lflag
;
168 unsigned char xmit_stopped
;
169 unsigned char recv_stopped
;
173 #define T_CLASSIC 0002
174 #define T_PCIBUS 0400
175 #define T_NEO_EXPRESS 0001
178 #define TTY_FLIPBUF_SIZE 512