1/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
2#ifndef __ASM_GENERIC_TERMBITS_H
3#define __ASM_GENERIC_TERMBITS_H
4
5#include <asm-generic/termbits-common.h>
6
7typedef unsigned int	tcflag_t;
8
9#define NCCS 19
10struct termios {
11	tcflag_t c_iflag;		/* input mode flags */
12	tcflag_t c_oflag;		/* output mode flags */
13	tcflag_t c_cflag;		/* control mode flags */
14	tcflag_t c_lflag;		/* local mode flags */
15	cc_t c_line;			/* line discipline */
16	cc_t c_cc[NCCS];		/* control characters */
17};
18
19struct termios2 {
20	tcflag_t c_iflag;		/* input mode flags */
21	tcflag_t c_oflag;		/* output mode flags */
22	tcflag_t c_cflag;		/* control mode flags */
23	tcflag_t c_lflag;		/* local mode flags */
24	cc_t c_line;			/* line discipline */
25	cc_t c_cc[NCCS];		/* control characters */
26	speed_t c_ispeed;		/* input speed */
27	speed_t c_ospeed;		/* output speed */
28};
29
30struct ktermios {
31	tcflag_t c_iflag;		/* input mode flags */
32	tcflag_t c_oflag;		/* output mode flags */
33	tcflag_t c_cflag;		/* control mode flags */
34	tcflag_t c_lflag;		/* local mode flags */
35	cc_t c_line;			/* line discipline */
36	cc_t c_cc[NCCS];		/* control characters */
37	speed_t c_ispeed;		/* input speed */
38	speed_t c_ospeed;		/* output speed */
39};
40
41/* c_cc characters */
42#define VINTR		 0
43#define VQUIT		 1
44#define VERASE		 2
45#define VKILL		 3
46#define VEOF		 4
47#define VTIME		 5
48#define VMIN		 6
49#define VSWTC		 7
50#define VSTART		 8
51#define VSTOP		 9
52#define VSUSP		10
53#define VEOL		11
54#define VREPRINT	12
55#define VDISCARD	13
56#define VWERASE		14
57#define VLNEXT		15
58#define VEOL2		16
59
60/* c_iflag bits */
61#define IUCLC	0x0200
62#define IXON	0x0400
63#define IXOFF	0x1000
64#define IMAXBEL	0x2000
65#define IUTF8	0x4000
66
67/* c_oflag bits */
68#define OLCUC	0x00002
69#define ONLCR	0x00004
70#define NLDLY	0x00100
71#define   NL0	0x00000
72#define   NL1	0x00100
73#define CRDLY	0x00600
74#define   CR0	0x00000
75#define   CR1	0x00200
76#define   CR2	0x00400
77#define   CR3	0x00600
78#define TABDLY	0x01800
79#define   TAB0	0x00000
80#define   TAB1	0x00800
81#define   TAB2	0x01000
82#define   TAB3	0x01800
83#define   XTABS	0x01800
84#define BSDLY	0x02000
85#define   BS0	0x00000
86#define   BS1	0x02000
87#define VTDLY	0x04000
88#define   VT0	0x00000
89#define   VT1	0x04000
90#define FFDLY	0x08000
91#define   FF0	0x00000
92#define   FF1	0x08000
93
94/* c_cflag bit meaning */
95#define CBAUD		0x0000100f
96#define CSIZE		0x00000030
97#define   CS5		0x00000000
98#define   CS6		0x00000010
99#define   CS7		0x00000020
100#define   CS8		0x00000030
101#define CSTOPB		0x00000040
102#define CREAD		0x00000080
103#define PARENB		0x00000100
104#define PARODD		0x00000200
105#define HUPCL		0x00000400
106#define CLOCAL		0x00000800
107#define CBAUDEX		0x00001000
108#define BOTHER		0x00001000
109#define     B57600	0x00001001
110#define    B115200	0x00001002
111#define    B230400	0x00001003
112#define    B460800	0x00001004
113#define    B500000	0x00001005
114#define    B576000	0x00001006
115#define    B921600	0x00001007
116#define   B1000000	0x00001008
117#define   B1152000	0x00001009
118#define   B1500000	0x0000100a
119#define   B2000000	0x0000100b
120#define   B2500000	0x0000100c
121#define   B3000000	0x0000100d
122#define   B3500000	0x0000100e
123#define   B4000000	0x0000100f
124#define CIBAUD		0x100f0000	/* input baud rate */
125
126/* c_lflag bits */
127#define ISIG	0x00001
128#define ICANON	0x00002
129#define XCASE	0x00004
130#define ECHO	0x00008
131#define ECHOE	0x00010
132#define ECHOK	0x00020
133#define ECHONL	0x00040
134#define NOFLSH	0x00080
135#define TOSTOP	0x00100
136#define ECHOCTL	0x00200
137#define ECHOPRT	0x00400
138#define ECHOKE	0x00800
139#define FLUSHO	0x01000
140#define PENDIN	0x04000
141#define IEXTEN	0x08000
142#define EXTPROC	0x10000
143
144/* tcsetattr uses these */
145#define	TCSANOW		0
146#define	TCSADRAIN	1
147#define	TCSAFLUSH	2
148
149#endif /* __ASM_GENERIC_TERMBITS_H */
150