1/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
2#ifndef _ALPHA_TERMBITS_H
3#define _ALPHA_TERMBITS_H
4
5#include <linux/posix_types.h>
6
7typedef unsigned char	cc_t;
8typedef unsigned int	speed_t;
9typedef unsigned int	tcflag_t;
10
11/*
12 * termios type and macro definitions.  Be careful about adding stuff
13 * to this file since it's used in GNU libc and there are strict rules
14 * concerning namespace pollution.
15 */
16
17#define NCCS 19
18struct termios {
19	tcflag_t c_iflag;		/* input mode flags */
20	tcflag_t c_oflag;		/* output mode flags */
21	tcflag_t c_cflag;		/* control mode flags */
22	tcflag_t c_lflag;		/* local mode flags */
23	cc_t c_cc[NCCS];		/* control characters */
24	cc_t c_line;			/* line discipline (== c_cc[19]) */
25	speed_t c_ispeed;		/* input speed */
26	speed_t c_ospeed;		/* output speed */
27};
28
29/* Alpha has identical termios and termios2 */
30
31struct termios2 {
32	tcflag_t c_iflag;		/* input mode flags */
33	tcflag_t c_oflag;		/* output mode flags */
34	tcflag_t c_cflag;		/* control mode flags */
35	tcflag_t c_lflag;		/* local mode flags */
36	cc_t c_cc[NCCS];		/* control characters */
37	cc_t c_line;			/* line discipline (== c_cc[19]) */
38	speed_t c_ispeed;		/* input speed */
39	speed_t c_ospeed;		/* output speed */
40};
41
42/* Alpha has matching termios and ktermios */
43
44struct ktermios {
45	tcflag_t c_iflag;		/* input mode flags */
46	tcflag_t c_oflag;		/* output mode flags */
47	tcflag_t c_cflag;		/* control mode flags */
48	tcflag_t c_lflag;		/* local mode flags */
49	cc_t c_cc[NCCS];		/* control characters */
50	cc_t c_line;			/* line discipline (== c_cc[19]) */
51	speed_t c_ispeed;		/* input speed */
52	speed_t c_ospeed;		/* output speed */
53};
54
55/* c_cc characters */
56#define VEOF 0
57#define VEOL 1
58#define VEOL2 2
59#define VERASE 3
60#define VWERASE 4
61#define VKILL 5
62#define VREPRINT 6
63#define VSWTC 7
64#define VINTR 8
65#define VQUIT 9
66#define VSUSP 10
67#define VSTART 12
68#define VSTOP 13
69#define VLNEXT 14
70#define VDISCARD 15
71#define VMIN 16
72#define VTIME 17
73
74/* c_iflag bits */
75#define IGNBRK	0000001
76#define BRKINT	0000002
77#define IGNPAR	0000004
78#define PARMRK	0000010
79#define INPCK	0000020
80#define ISTRIP	0000040
81#define INLCR	0000100
82#define IGNCR	0000200
83#define ICRNL	0000400
84#define IXON	0001000
85#define IXOFF	0002000
86#define IXANY	0004000
87#define IUCLC	0010000
88#define IMAXBEL	0020000
89#define IUTF8	0040000
90
91/* c_oflag bits */
92#define OPOST	0000001
93#define ONLCR	0000002
94#define OLCUC	0000004
95
96#define OCRNL	0000010
97#define ONOCR	0000020
98#define ONLRET	0000040
99
100#define OFILL	00000100
101#define OFDEL	00000200
102#define NLDLY	00001400
103#define   NL0	00000000
104#define   NL1	00000400
105#define   NL2	00001000
106#define   NL3	00001400
107#define TABDLY	00006000
108#define   TAB0	00000000
109#define   TAB1	00002000
110#define   TAB2	00004000
111#define   TAB3	00006000
112#define CRDLY	00030000
113#define   CR0	00000000
114#define   CR1	00010000
115#define   CR2	00020000
116#define   CR3	00030000
117#define FFDLY	00040000
118#define   FF0	00000000
119#define   FF1	00040000
120#define BSDLY	00100000
121#define   BS0	00000000
122#define   BS1	00100000
123#define VTDLY	00200000
124#define   VT0	00000000
125#define   VT1	00200000
126/*
127 * Should be equivalent to TAB3, see description of TAB3 in
128 * POSIX.1-2008, Ch. 11.2.3 "Output Modes"
129 */
130#define XTABS	TAB3
131
132/* c_cflag bit meaning */
133#define CBAUD	0000037
134#define  B0	0000000		/* hang up */
135#define  B50	0000001
136#define  B75	0000002
137#define  B110	0000003
138#define  B134	0000004
139#define  B150	0000005
140#define  B200	0000006
141#define  B300	0000007
142#define  B600	0000010
143#define  B1200	0000011
144#define  B1800	0000012
145#define  B2400	0000013
146#define  B4800	0000014
147#define  B9600	0000015
148#define  B19200	0000016
149#define  B38400	0000017
150#define EXTA B19200
151#define EXTB B38400
152#define CBAUDEX 0000000
153#define  B57600   00020
154#define  B115200  00021
155#define  B230400  00022
156#define  B460800  00023
157#define  B500000  00024
158#define  B576000  00025
159#define  B921600  00026
160#define B1000000  00027
161#define B1152000  00030
162#define B1500000  00031
163#define B2000000  00032
164#define B2500000  00033
165#define B3000000  00034
166#define B3500000  00035
167#define B4000000  00036
168#define BOTHER    00037
169
170#define CSIZE	00001400
171#define   CS5	00000000
172#define   CS6	00000400
173#define   CS7	00001000
174#define   CS8	00001400
175
176#define CSTOPB	00002000
177#define CREAD	00004000
178#define PARENB	00010000
179#define PARODD	00020000
180#define HUPCL	00040000
181
182#define CLOCAL	00100000
183#define CMSPAR	  010000000000		/* mark or space (stick) parity */
184#define CRTSCTS	  020000000000		/* flow control */
185
186#define CIBAUD	07600000
187#define IBSHIFT	16
188
189/* c_lflag bits */
190#define ISIG	0x00000080
191#define ICANON	0x00000100
192#define XCASE	0x00004000
193#define ECHO	0x00000008
194#define ECHOE	0x00000002
195#define ECHOK	0x00000004
196#define ECHONL	0x00000010
197#define NOFLSH	0x80000000
198#define TOSTOP	0x00400000
199#define ECHOCTL	0x00000040
200#define ECHOPRT	0x00000020
201#define ECHOKE	0x00000001
202#define FLUSHO	0x00800000
203#define PENDIN	0x20000000
204#define IEXTEN	0x00000400
205#define EXTPROC	0x10000000
206
207/* Values for the ACTION argument to `tcflow'.  */
208#define	TCOOFF		0
209#define	TCOON		1
210#define	TCIOFF		2
211#define	TCION		3
212
213/* Values for the QUEUE_SELECTOR argument to `tcflush'.  */
214#define	TCIFLUSH	0
215#define	TCOFLUSH	1
216#define	TCIOFLUSH	2
217
218/* Values for the OPTIONAL_ACTIONS argument to `tcsetattr'.  */
219#define	TCSANOW		0
220#define	TCSADRAIN	1
221#define	TCSAFLUSH	2
222
223#endif /* _ALPHA_TERMBITS_H */
224