1#ifndef _SPARC_TERMBITS_H
2#define _SPARC_TERMBITS_H
3
4#include <linux/posix_types.h>
5
6typedef unsigned char   cc_t;
7typedef unsigned int    speed_t;
8typedef unsigned long   tcflag_t;
9
10#define NCC 8
11struct termio {
12	unsigned short c_iflag;		/* input mode flags */
13	unsigned short c_oflag;		/* output mode flags */
14	unsigned short c_cflag;		/* control mode flags */
15	unsigned short c_lflag;		/* local mode flags */
16	unsigned char c_line;		/* line discipline */
17	unsigned char c_cc[NCC];	/* control characters */
18};
19
20#define NCCS 17
21struct termios {
22	tcflag_t c_iflag;		/* input mode flags */
23	tcflag_t c_oflag;		/* output mode flags */
24	tcflag_t c_cflag;		/* control mode flags */
25	tcflag_t c_lflag;		/* local mode flags */
26	cc_t c_line;			/* line discipline */
27	cc_t c_cc[NCCS];		/* control characters */
28#ifdef __KERNEL__
29#define SIZEOF_USER_TERMIOS sizeof (struct termios) - (2*sizeof (cc_t))
30	cc_t _x_cc[2];                  /* We need them to hold vmin/vtime */
31#endif
32};
33
34/* c_cc characters */
35#define VINTR    0
36#define VQUIT    1
37#define VERASE   2
38#define VKILL    3
39#define VEOF     4
40#define VEOL     5
41#define VEOL2    6
42#define VSWTC    7
43#define VSTART   8
44#define VSTOP    9
45
46
47
48#define VSUSP    10
49#define VDSUSP   11  /* SunOS POSIX nicety I do believe... */
50#define VREPRINT 12
51#define VDISCARD 13
52#define VWERASE  14
53#define VLNEXT   15
54
55/* Kernel keeps vmin/vtime separated, user apps assume vmin/vtime is
56 * shared with eof/eol
57 */
58#ifdef __KERNEL__
59#define VMIN     16
60#define VTIME    17
61#else
62#define VMIN     VEOF
63#define VTIME    VEOL
64#endif
65
66/* c_iflag bits */
67#define IGNBRK	0x00000001
68#define BRKINT	0x00000002
69#define IGNPAR	0x00000004
70#define PARMRK	0x00000008
71#define INPCK	0x00000010
72#define ISTRIP	0x00000020
73#define INLCR	0x00000040
74#define IGNCR	0x00000080
75#define ICRNL	0x00000100
76#define IUCLC	0x00000200
77#define IXON	0x00000400
78#define IXANY	0x00000800
79#define IXOFF	0x00001000
80#define IMAXBEL	0x00002000
81
82/* c_oflag bits */
83#define OPOST	0x00000001
84#define OLCUC	0x00000002
85#define ONLCR	0x00000004
86#define OCRNL	0x00000008
87#define ONOCR	0x00000010
88#define ONLRET	0x00000020
89#define OFILL	0x00000040
90#define OFDEL	0x00000080
91#define NLDLY	0x00000100
92#define   NL0	0x00000000
93#define   NL1	0x00000100
94#define CRDLY	0x00000600
95#define   CR0	0x00000000
96#define   CR1	0x00000200
97#define   CR2	0x00000400
98#define   CR3	0x00000600
99#define TABDLY	0x00001800
100#define   TAB0	0x00000000
101#define   TAB1	0x00000800
102#define   TAB2	0x00001000
103#define   TAB3	0x00001800
104#define   XTABS	0x00001800
105#define BSDLY	0x00002000
106#define   BS0	0x00000000
107#define   BS1	0x00002000
108#define VTDLY	0x00004000
109#define   VT0	0x00000000
110#define   VT1	0x00004000
111#define FFDLY	0x00008000
112#define   FF0	0x00000000
113#define   FF1	0x00008000
114#define PAGEOUT 0x00010000  /* SUNOS specific */
115#define WRAP    0x00020000  /* SUNOS specific */
116
117/* c_cflag bit meaning */
118#define CBAUD	  0x0000100f
119#define  B0	  0x00000000   /* hang up */
120#define  B50	  0x00000001
121#define  B75	  0x00000002
122#define  B110	  0x00000003
123#define  B134	  0x00000004
124#define  B150	  0x00000005
125#define  B200	  0x00000006
126#define  B300	  0x00000007
127#define  B600	  0x00000008
128#define  B1200	  0x00000009
129#define  B1800	  0x0000000a
130#define  B2400	  0x0000000b
131#define  B4800	  0x0000000c
132#define  B9600	  0x0000000d
133#define  B19200	  0x0000000e
134#define  B38400	  0x0000000f
135#define EXTA      B19200
136#define EXTB      B38400
137#define  CSIZE    0x00000030
138#define   CS5	  0x00000000
139#define   CS6	  0x00000010
140#define   CS7	  0x00000020
141#define   CS8	  0x00000030
142#define CSTOPB	  0x00000040
143#define CREAD	  0x00000080
144#define PARENB	  0x00000100
145#define PARODD	  0x00000200
146#define HUPCL	  0x00000400
147#define CLOCAL	  0x00000800
148#define CBAUDEX   0x00001000
149/* We'll never see these speeds with the Zilogs, but for completeness... */
150#define  B57600   0x00001001
151#define  B115200  0x00001002
152#define  B230400  0x00001003
153#define  B460800  0x00001004
154/* This is what we can do with the Zilogs. */
155#define  B76800   0x00001005
156/* This is what we can do with the SAB82532. */
157#define  B153600  0x00001006
158#define  B307200  0x00001007
159#define  B614400  0x00001008
160#define  B921600  0x00001009
161/* And these are the rest... */
162#define  B500000  0x0000100a
163#define  B576000  0x0000100b
164#define B1000000  0x0000100c
165#define B1152000  0x0000100d
166#define B1500000  0x0000100e
167#define B2000000  0x0000100f
168/* These have totally bogus values and nobody uses them
169   so far. Later on we'd have to use say 0x10000x and
170   adjust CBAUD constant and drivers accordingly.
171#define B2500000  0x00001010
172#define B3000000  0x00001011
173#define B3500000  0x00001012
174#define B4000000  0x00001013  */
175#define CIBAUD	  0x100f0000  /* input baud rate (not used) */
176#define CMSPAR	  0x40000000  /* mark or space (stick) parity */
177#define CRTSCTS	  0x80000000  /* flow control */
178
179/* c_lflag bits */
180#define ISIG	0x00000001
181#define ICANON	0x00000002
182#define XCASE	0x00000004
183#define ECHO	0x00000008
184#define ECHOE	0x00000010
185#define ECHOK	0x00000020
186#define ECHONL	0x00000040
187#define NOFLSH	0x00000080
188#define TOSTOP	0x00000100
189#define ECHOCTL	0x00000200
190#define ECHOPRT	0x00000400
191#define ECHOKE	0x00000800
192#define DEFECHO 0x00001000  /* SUNOS thing, what is it? */
193#define FLUSHO	0x00002000
194#define PENDIN	0x00004000
195#define IEXTEN	0x00008000
196
197/* modem lines */
198#define TIOCM_LE	0x001
199#define TIOCM_DTR	0x002
200#define TIOCM_RTS	0x004
201#define TIOCM_ST	0x008
202#define TIOCM_SR	0x010
203#define TIOCM_CTS	0x020
204#define TIOCM_CAR	0x040
205#define TIOCM_RNG	0x080
206#define TIOCM_DSR	0x100
207#define TIOCM_CD	TIOCM_CAR
208#define TIOCM_RI	TIOCM_RNG
209#define TIOCM_OUT1	0x2000
210#define TIOCM_OUT2	0x4000
211#define TIOCM_LOOP	0x8000
212
213#define TIOCM_MODEM_BITS       TIOCM_OUT2      /* IRDA support */
214
215/* ioctl (fd, TIOCSERGETLSR, &result) where result may be as below */
216#define TIOCSER_TEMT    0x01	/* Transmitter physically empty */
217
218
219/* tcflow() and TCXONC use these */
220#define	TCOOFF		0
221#define	TCOON		1
222#define	TCIOFF		2
223#define	TCION		3
224
225/* tcflush() and TCFLSH use these */
226#define	TCIFLUSH	0
227#define	TCOFLUSH	1
228#define	TCIOFLUSH	2
229
230/* tcsetattr uses these */
231#define	TCSANOW		0
232#define	TCSADRAIN	1
233#define	TCSAFLUSH	2
234
235#endif /* !(_SPARC_TERMBITS_H) */
236