162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ 262306a36Sopenharmony_ci#ifndef _UAPI_SPARC_TERMBITS_H 362306a36Sopenharmony_ci#define _UAPI_SPARC_TERMBITS_H 462306a36Sopenharmony_ci 562306a36Sopenharmony_ci#include <asm-generic/termbits-common.h> 662306a36Sopenharmony_ci 762306a36Sopenharmony_ci#if defined(__sparc__) && defined(__arch64__) 862306a36Sopenharmony_citypedef unsigned int tcflag_t; 962306a36Sopenharmony_ci#else 1062306a36Sopenharmony_citypedef unsigned long tcflag_t; 1162306a36Sopenharmony_ci#endif 1262306a36Sopenharmony_ci 1362306a36Sopenharmony_ci#define NCC 8 1462306a36Sopenharmony_cistruct termio { 1562306a36Sopenharmony_ci unsigned short c_iflag; /* input mode flags */ 1662306a36Sopenharmony_ci unsigned short c_oflag; /* output mode flags */ 1762306a36Sopenharmony_ci unsigned short c_cflag; /* control mode flags */ 1862306a36Sopenharmony_ci unsigned short c_lflag; /* local mode flags */ 1962306a36Sopenharmony_ci unsigned char c_line; /* line discipline */ 2062306a36Sopenharmony_ci unsigned char c_cc[NCC]; /* control characters */ 2162306a36Sopenharmony_ci}; 2262306a36Sopenharmony_ci 2362306a36Sopenharmony_ci#define NCCS 17 2462306a36Sopenharmony_cistruct termios { 2562306a36Sopenharmony_ci tcflag_t c_iflag; /* input mode flags */ 2662306a36Sopenharmony_ci tcflag_t c_oflag; /* output mode flags */ 2762306a36Sopenharmony_ci tcflag_t c_cflag; /* control mode flags */ 2862306a36Sopenharmony_ci tcflag_t c_lflag; /* local mode flags */ 2962306a36Sopenharmony_ci cc_t c_line; /* line discipline */ 3062306a36Sopenharmony_ci#ifndef __KERNEL__ 3162306a36Sopenharmony_ci cc_t c_cc[NCCS]; /* control characters */ 3262306a36Sopenharmony_ci#else 3362306a36Sopenharmony_ci cc_t c_cc[NCCS+2]; /* kernel needs 2 more to hold vmin/vtime */ 3462306a36Sopenharmony_ci#define SIZEOF_USER_TERMIOS sizeof (struct termios) - (2*sizeof (cc_t)) 3562306a36Sopenharmony_ci#endif 3662306a36Sopenharmony_ci}; 3762306a36Sopenharmony_ci 3862306a36Sopenharmony_cistruct termios2 { 3962306a36Sopenharmony_ci tcflag_t c_iflag; /* input mode flags */ 4062306a36Sopenharmony_ci tcflag_t c_oflag; /* output mode flags */ 4162306a36Sopenharmony_ci tcflag_t c_cflag; /* control mode flags */ 4262306a36Sopenharmony_ci tcflag_t c_lflag; /* local mode flags */ 4362306a36Sopenharmony_ci cc_t c_line; /* line discipline */ 4462306a36Sopenharmony_ci cc_t c_cc[NCCS+2]; /* control characters */ 4562306a36Sopenharmony_ci speed_t c_ispeed; /* input speed */ 4662306a36Sopenharmony_ci speed_t c_ospeed; /* output speed */ 4762306a36Sopenharmony_ci}; 4862306a36Sopenharmony_ci 4962306a36Sopenharmony_cistruct ktermios { 5062306a36Sopenharmony_ci tcflag_t c_iflag; /* input mode flags */ 5162306a36Sopenharmony_ci tcflag_t c_oflag; /* output mode flags */ 5262306a36Sopenharmony_ci tcflag_t c_cflag; /* control mode flags */ 5362306a36Sopenharmony_ci tcflag_t c_lflag; /* local mode flags */ 5462306a36Sopenharmony_ci cc_t c_line; /* line discipline */ 5562306a36Sopenharmony_ci cc_t c_cc[NCCS+2]; /* control characters */ 5662306a36Sopenharmony_ci speed_t c_ispeed; /* input speed */ 5762306a36Sopenharmony_ci speed_t c_ospeed; /* output speed */ 5862306a36Sopenharmony_ci}; 5962306a36Sopenharmony_ci 6062306a36Sopenharmony_ci/* c_cc characters */ 6162306a36Sopenharmony_ci#define VINTR 0 6262306a36Sopenharmony_ci#define VQUIT 1 6362306a36Sopenharmony_ci#define VERASE 2 6462306a36Sopenharmony_ci#define VKILL 3 6562306a36Sopenharmony_ci#define VEOF 4 6662306a36Sopenharmony_ci#define VEOL 5 6762306a36Sopenharmony_ci#define VEOL2 6 6862306a36Sopenharmony_ci#define VSWTC 7 6962306a36Sopenharmony_ci#define VSTART 8 7062306a36Sopenharmony_ci#define VSTOP 9 7162306a36Sopenharmony_ci 7262306a36Sopenharmony_ci#define VSUSP 10 7362306a36Sopenharmony_ci#define VDSUSP 11 /* SunOS POSIX nicety I do believe... */ 7462306a36Sopenharmony_ci#define VREPRINT 12 7562306a36Sopenharmony_ci#define VDISCARD 13 7662306a36Sopenharmony_ci#define VWERASE 14 7762306a36Sopenharmony_ci#define VLNEXT 15 7862306a36Sopenharmony_ci 7962306a36Sopenharmony_ci/* Kernel keeps vmin/vtime separated, user apps assume vmin/vtime is 8062306a36Sopenharmony_ci * shared with eof/eol 8162306a36Sopenharmony_ci */ 8262306a36Sopenharmony_ci#ifndef __KERNEL__ 8362306a36Sopenharmony_ci#define VMIN VEOF 8462306a36Sopenharmony_ci#define VTIME VEOL 8562306a36Sopenharmony_ci#endif 8662306a36Sopenharmony_ci 8762306a36Sopenharmony_ci/* c_iflag bits */ 8862306a36Sopenharmony_ci#define IUCLC 0x0200 8962306a36Sopenharmony_ci#define IXON 0x0400 9062306a36Sopenharmony_ci#define IXOFF 0x1000 9162306a36Sopenharmony_ci#define IMAXBEL 0x2000 9262306a36Sopenharmony_ci#define IUTF8 0x4000 9362306a36Sopenharmony_ci 9462306a36Sopenharmony_ci/* c_oflag bits */ 9562306a36Sopenharmony_ci#define OLCUC 0x00002 9662306a36Sopenharmony_ci#define ONLCR 0x00004 9762306a36Sopenharmony_ci#define NLDLY 0x00100 9862306a36Sopenharmony_ci#define NL0 0x00000 9962306a36Sopenharmony_ci#define NL1 0x00100 10062306a36Sopenharmony_ci#define CRDLY 0x00600 10162306a36Sopenharmony_ci#define CR0 0x00000 10262306a36Sopenharmony_ci#define CR1 0x00200 10362306a36Sopenharmony_ci#define CR2 0x00400 10462306a36Sopenharmony_ci#define CR3 0x00600 10562306a36Sopenharmony_ci#define TABDLY 0x01800 10662306a36Sopenharmony_ci#define TAB0 0x00000 10762306a36Sopenharmony_ci#define TAB1 0x00800 10862306a36Sopenharmony_ci#define TAB2 0x01000 10962306a36Sopenharmony_ci#define TAB3 0x01800 11062306a36Sopenharmony_ci#define XTABS 0x01800 11162306a36Sopenharmony_ci#define BSDLY 0x02000 11262306a36Sopenharmony_ci#define BS0 0x00000 11362306a36Sopenharmony_ci#define BS1 0x02000 11462306a36Sopenharmony_ci#define VTDLY 0x04000 11562306a36Sopenharmony_ci#define VT0 0x00000 11662306a36Sopenharmony_ci#define VT1 0x04000 11762306a36Sopenharmony_ci#define FFDLY 0x08000 11862306a36Sopenharmony_ci#define FF0 0x00000 11962306a36Sopenharmony_ci#define FF1 0x08000 12062306a36Sopenharmony_ci#define PAGEOUT 0x10000 /* SUNOS specific */ 12162306a36Sopenharmony_ci#define WRAP 0x20000 /* SUNOS specific */ 12262306a36Sopenharmony_ci 12362306a36Sopenharmony_ci/* c_cflag bit meaning */ 12462306a36Sopenharmony_ci#define CBAUD 0x0000100f 12562306a36Sopenharmony_ci#define CSIZE 0x00000030 12662306a36Sopenharmony_ci#define CS5 0x00000000 12762306a36Sopenharmony_ci#define CS6 0x00000010 12862306a36Sopenharmony_ci#define CS7 0x00000020 12962306a36Sopenharmony_ci#define CS8 0x00000030 13062306a36Sopenharmony_ci#define CSTOPB 0x00000040 13162306a36Sopenharmony_ci#define CREAD 0x00000080 13262306a36Sopenharmony_ci#define PARENB 0x00000100 13362306a36Sopenharmony_ci#define PARODD 0x00000200 13462306a36Sopenharmony_ci#define HUPCL 0x00000400 13562306a36Sopenharmony_ci#define CLOCAL 0x00000800 13662306a36Sopenharmony_ci#define CBAUDEX 0x00001000 13762306a36Sopenharmony_ci/* We'll never see these speeds with the Zilogs, but for completeness... */ 13862306a36Sopenharmony_ci#define BOTHER 0x00001000 13962306a36Sopenharmony_ci#define B57600 0x00001001 14062306a36Sopenharmony_ci#define B115200 0x00001002 14162306a36Sopenharmony_ci#define B230400 0x00001003 14262306a36Sopenharmony_ci#define B460800 0x00001004 14362306a36Sopenharmony_ci/* This is what we can do with the Zilogs. */ 14462306a36Sopenharmony_ci#define B76800 0x00001005 14562306a36Sopenharmony_ci/* This is what we can do with the SAB82532. */ 14662306a36Sopenharmony_ci#define B153600 0x00001006 14762306a36Sopenharmony_ci#define B307200 0x00001007 14862306a36Sopenharmony_ci#define B614400 0x00001008 14962306a36Sopenharmony_ci#define B921600 0x00001009 15062306a36Sopenharmony_ci/* And these are the rest... */ 15162306a36Sopenharmony_ci#define B500000 0x0000100a 15262306a36Sopenharmony_ci#define B576000 0x0000100b 15362306a36Sopenharmony_ci#define B1000000 0x0000100c 15462306a36Sopenharmony_ci#define B1152000 0x0000100d 15562306a36Sopenharmony_ci#define B1500000 0x0000100e 15662306a36Sopenharmony_ci#define B2000000 0x0000100f 15762306a36Sopenharmony_ci/* These have totally bogus values and nobody uses them 15862306a36Sopenharmony_ci so far. Later on we'd have to use say 0x10000x and 15962306a36Sopenharmony_ci adjust CBAUD constant and drivers accordingly. 16062306a36Sopenharmony_ci#define B2500000 0x00001010 16162306a36Sopenharmony_ci#define B3000000 0x00001011 16262306a36Sopenharmony_ci#define B3500000 0x00001012 16362306a36Sopenharmony_ci#define B4000000 0x00001013 */ 16462306a36Sopenharmony_ci#define CIBAUD 0x100f0000 /* input baud rate (not used) */ 16562306a36Sopenharmony_ci 16662306a36Sopenharmony_ci/* c_lflag bits */ 16762306a36Sopenharmony_ci#define ISIG 0x00000001 16862306a36Sopenharmony_ci#define ICANON 0x00000002 16962306a36Sopenharmony_ci#define XCASE 0x00000004 17062306a36Sopenharmony_ci#define ECHO 0x00000008 17162306a36Sopenharmony_ci#define ECHOE 0x00000010 17262306a36Sopenharmony_ci#define ECHOK 0x00000020 17362306a36Sopenharmony_ci#define ECHONL 0x00000040 17462306a36Sopenharmony_ci#define NOFLSH 0x00000080 17562306a36Sopenharmony_ci#define TOSTOP 0x00000100 17662306a36Sopenharmony_ci#define ECHOCTL 0x00000200 17762306a36Sopenharmony_ci#define ECHOPRT 0x00000400 17862306a36Sopenharmony_ci#define ECHOKE 0x00000800 17962306a36Sopenharmony_ci#define DEFECHO 0x00001000 /* SUNOS thing, what is it? */ 18062306a36Sopenharmony_ci#define FLUSHO 0x00002000 18162306a36Sopenharmony_ci#define PENDIN 0x00004000 18262306a36Sopenharmony_ci#define IEXTEN 0x00008000 18362306a36Sopenharmony_ci#define EXTPROC 0x00010000 18462306a36Sopenharmony_ci 18562306a36Sopenharmony_ci/* modem lines */ 18662306a36Sopenharmony_ci#define TIOCM_LE 0x001 18762306a36Sopenharmony_ci#define TIOCM_DTR 0x002 18862306a36Sopenharmony_ci#define TIOCM_RTS 0x004 18962306a36Sopenharmony_ci#define TIOCM_ST 0x008 19062306a36Sopenharmony_ci#define TIOCM_SR 0x010 19162306a36Sopenharmony_ci#define TIOCM_CTS 0x020 19262306a36Sopenharmony_ci#define TIOCM_CAR 0x040 19362306a36Sopenharmony_ci#define TIOCM_RNG 0x080 19462306a36Sopenharmony_ci#define TIOCM_DSR 0x100 19562306a36Sopenharmony_ci#define TIOCM_CD TIOCM_CAR 19662306a36Sopenharmony_ci#define TIOCM_RI TIOCM_RNG 19762306a36Sopenharmony_ci#define TIOCM_OUT1 0x2000 19862306a36Sopenharmony_ci#define TIOCM_OUT2 0x4000 19962306a36Sopenharmony_ci#define TIOCM_LOOP 0x8000 20062306a36Sopenharmony_ci 20162306a36Sopenharmony_ci/* ioctl (fd, TIOCSERGETLSR, &result) where result may be as below */ 20262306a36Sopenharmony_ci#define TIOCSER_TEMT 0x01 /* Transmitter physically empty */ 20362306a36Sopenharmony_ci 20462306a36Sopenharmony_ci/* tcsetattr uses these */ 20562306a36Sopenharmony_ci#define TCSANOW 0 20662306a36Sopenharmony_ci#define TCSADRAIN 1 20762306a36Sopenharmony_ci#define TCSAFLUSH 2 20862306a36Sopenharmony_ci 20962306a36Sopenharmony_ci#endif /* _UAPI_SPARC_TERMBITS_H */ 210