1 /* SPDX-License-Identifier: GPL-2.0 */
2 #ifndef _LINUX_TERMIOS_CONV_H
3 #define _LINUX_TERMIOS_CONV_H
4 
5 #include <linux/uaccess.h>
6 #include <asm/termios.h>
7 
8 /*	intr=^C		quit=^\		erase=del	kill=^U
9 	eof=^D		vtime=\0	vmin=\1		sxtc=\0
10 	start=^Q	stop=^S		susp=^Z		eol=\0
11 	reprint=^R	discard=^O	werase=^W	lnext=^V
12 	eol2=\0
13 */
14 
15 #ifdef VDSUSP
16 #define INIT_C_CC_VDSUSP_EXTRA [VDSUSP] = 'Y'-0x40,
17 #else
18 #define INIT_C_CC_VDSUSP_EXTRA
19 #endif
20 
21 #define INIT_C_CC {		\
22 	[VINTR] = 'C'-0x40,	\
23 	[VQUIT] = '\\'-0x40,	\
24 	[VERASE] = '\177',	\
25 	[VKILL] = 'U'-0x40,	\
26 	[VEOF] = 'D'-0x40,	\
27 	[VSTART] = 'Q'-0x40,	\
28 	[VSTOP] = 'S'-0x40,	\
29 	[VSUSP] = 'Z'-0x40,	\
30 	[VREPRINT] = 'R'-0x40,	\
31 	[VDISCARD] = 'O'-0x40,	\
32 	[VWERASE] = 'W'-0x40,	\
33 	[VLNEXT] = 'V'-0x40,	\
34 	INIT_C_CC_VDSUSP_EXTRA	\
35 	[VMIN] = 1 }
36 
37 int user_termio_to_kernel_termios(struct ktermios *, struct termio __user *);
38 int kernel_termios_to_user_termio(struct termio __user *, struct ktermios *);
39 #ifdef TCGETS2
40 int user_termios_to_kernel_termios(struct ktermios *, struct termios2 __user *);
41 int kernel_termios_to_user_termios(struct termios2 __user *, struct ktermios *);
42 int user_termios_to_kernel_termios_1(struct ktermios *, struct termios __user *);
43 int kernel_termios_to_user_termios_1(struct termios __user *, struct ktermios *);
44 #else /* TCGETS2 */
45 int user_termios_to_kernel_termios(struct ktermios *, struct termios __user *);
46 int kernel_termios_to_user_termios(struct termios __user *, struct ktermios *);
47 #endif /* TCGETS2 */
48 
49 #endif /* _LINUX_TERMIOS_CONV_H */
50