at v2.6.12-rc3 232 lines 6.6 kB view raw
1#ifndef _PPC_TERMIOS_H 2#define _PPC_TERMIOS_H 3 4/* 5 * Liberally adapted from alpha/termios.h. In particular, the c_cc[] 6 * fields have been reordered so that termio & termios share the 7 * common subset in the same order (for brain dead programs that don't 8 * know or care about the differences). 9 */ 10 11#include <asm/ioctls.h> 12#include <asm/termbits.h> 13 14struct sgttyb { 15 char sg_ispeed; 16 char sg_ospeed; 17 char sg_erase; 18 char sg_kill; 19 short sg_flags; 20}; 21 22struct tchars { 23 char t_intrc; 24 char t_quitc; 25 char t_startc; 26 char t_stopc; 27 char t_eofc; 28 char t_brkc; 29}; 30 31struct ltchars { 32 char t_suspc; 33 char t_dsuspc; 34 char t_rprntc; 35 char t_flushc; 36 char t_werasc; 37 char t_lnextc; 38}; 39 40#define FIOCLEX _IO('f', 1) 41#define FIONCLEX _IO('f', 2) 42#define FIOASYNC _IOW('f', 125, int) 43#define FIONBIO _IOW('f', 126, int) 44#define FIONREAD _IOR('f', 127, int) 45#define TIOCINQ FIONREAD 46#define FIOQSIZE _IOR('f', 128, loff_t) 47 48#define TIOCGETP _IOR('t', 8, struct sgttyb) 49#define TIOCSETP _IOW('t', 9, struct sgttyb) 50#define TIOCSETN _IOW('t', 10, struct sgttyb) /* TIOCSETP wo flush */ 51 52#define TIOCSETC _IOW('t', 17, struct tchars) 53#define TIOCGETC _IOR('t', 18, struct tchars) 54#define TCGETS _IOR('t', 19, struct termios) 55#define TCSETS _IOW('t', 20, struct termios) 56#define TCSETSW _IOW('t', 21, struct termios) 57#define TCSETSF _IOW('t', 22, struct termios) 58 59#define TCGETA _IOR('t', 23, struct termio) 60#define TCSETA _IOW('t', 24, struct termio) 61#define TCSETAW _IOW('t', 25, struct termio) 62#define TCSETAF _IOW('t', 28, struct termio) 63 64#define TCSBRK _IO('t', 29) 65#define TCXONC _IO('t', 30) 66#define TCFLSH _IO('t', 31) 67 68#define TIOCSWINSZ _IOW('t', 103, struct winsize) 69#define TIOCGWINSZ _IOR('t', 104, struct winsize) 70#define TIOCSTART _IO('t', 110) /* start output, like ^Q */ 71#define TIOCSTOP _IO('t', 111) /* stop output, like ^S */ 72#define TIOCOUTQ _IOR('t', 115, int) /* output queue size */ 73 74#define TIOCGLTC _IOR('t', 116, struct ltchars) 75#define TIOCSLTC _IOW('t', 117, struct ltchars) 76#define TIOCSPGRP _IOW('t', 118, int) 77#define TIOCGPGRP _IOR('t', 119, int) 78 79#define TIOCEXCL 0x540C 80#define TIOCNXCL 0x540D 81#define TIOCSCTTY 0x540E 82 83#define TIOCSTI 0x5412 84#define TIOCMGET 0x5415 85#define TIOCMBIS 0x5416 86#define TIOCMBIC 0x5417 87#define TIOCMSET 0x5418 88#define TIOCGSOFTCAR 0x5419 89#define TIOCSSOFTCAR 0x541A 90#define TIOCLINUX 0x541C 91#define TIOCCONS 0x541D 92#define TIOCGSERIAL 0x541E 93#define TIOCSSERIAL 0x541F 94#define TIOCPKT 0x5420 95 96#define TIOCNOTTY 0x5422 97#define TIOCSETD 0x5423 98#define TIOCGETD 0x5424 99#define TCSBRKP 0x5425 /* Needed for POSIX tcsendbreak() */ 100 101#define TIOCSERCONFIG 0x5453 102#define TIOCSERGWILD 0x5454 103#define TIOCSERSWILD 0x5455 104#define TIOCGLCKTRMIOS 0x5456 105#define TIOCSLCKTRMIOS 0x5457 106#define TIOCSERGSTRUCT 0x5458 /* For debugging only */ 107#define TIOCSERGETLSR 0x5459 /* Get line status register */ 108#define TIOCSERGETMULTI 0x545A /* Get multiport config */ 109#define TIOCSERSETMULTI 0x545B /* Set multiport config */ 110 111#define TIOCMIWAIT 0x545C /* wait for a change on serial input line(s) */ 112#define TIOCGICOUNT 0x545D /* read serial port inline interrupt counts */ 113 114/* Used for packet mode */ 115#define TIOCPKT_DATA 0 116#define TIOCPKT_FLUSHREAD 1 117#define TIOCPKT_FLUSHWRITE 2 118#define TIOCPKT_STOP 4 119#define TIOCPKT_START 8 120#define TIOCPKT_NOSTOP 16 121#define TIOCPKT_DOSTOP 32 122 123struct winsize { 124 unsigned short ws_row; 125 unsigned short ws_col; 126 unsigned short ws_xpixel; 127 unsigned short ws_ypixel; 128}; 129 130#define NCC 10 131struct termio { 132 unsigned short c_iflag; /* input mode flags */ 133 unsigned short c_oflag; /* output mode flags */ 134 unsigned short c_cflag; /* control mode flags */ 135 unsigned short c_lflag; /* local mode flags */ 136 unsigned char c_line; /* line discipline */ 137 unsigned char c_cc[NCC]; /* control characters */ 138}; 139 140/* c_cc characters */ 141#define _VINTR 0 142#define _VQUIT 1 143#define _VERASE 2 144#define _VKILL 3 145#define _VEOF 4 146#define _VMIN 5 147#define _VEOL 6 148#define _VTIME 7 149#define _VEOL2 8 150#define _VSWTC 9 151 152#ifdef __KERNEL__ 153/* ^C ^\ del ^U ^D 1 0 0 0 0 ^W ^R ^Z ^Q ^S ^V ^U */ 154#define INIT_C_CC "\003\034\177\025\004\001\000\000\000\000\027\022\032\021\023\026\025" 155#endif /* __KERNEL__ */ 156 157/* modem lines */ 158#define TIOCM_LE 0x001 159#define TIOCM_DTR 0x002 160#define TIOCM_RTS 0x004 161#define TIOCM_ST 0x008 162#define TIOCM_SR 0x010 163#define TIOCM_CTS 0x020 164#define TIOCM_CAR 0x040 165#define TIOCM_RNG 0x080 166#define TIOCM_DSR 0x100 167#define TIOCM_CD TIOCM_CAR 168#define TIOCM_RI TIOCM_RNG 169#define TIOCM_OUT1 0x2000 170#define TIOCM_OUT2 0x4000 171#define TIOCM_LOOP 0x8000 172 173/* ioctl (fd, TIOCSERGETLSR, &result) where result may be as below */ 174#define TIOCSER_TEMT 0x01 /* Transmitter physically empty */ 175 176/* line disciplines */ 177#define N_TTY 0 178#define N_SLIP 1 179#define N_MOUSE 2 180#define N_PPP 3 181#define N_STRIP 4 182#define N_AX25 5 183#define N_X25 6 /* X.25 async */ 184#define N_6PACK 7 185#define N_MASC 8 /* Reserved for Mobitex module <kaz@cafe.net> */ 186#define N_R3964 9 /* Reserved for Simatic R3964 module */ 187#define N_PROFIBUS_FDL 10 /* Reserved for Profibus <Dave@mvhi.com> */ 188#define N_IRDA 11 /* Linux IrDa - http://irda.sourceforge.net/ */ 189#define N_SMSBLOCK 12 /* SMS block mode - for talking to GSM data cards about SMS messages */ 190#define N_HDLC 13 /* synchronous HDLC */ 191#define N_SYNC_PPP 14 192#define N_HCI 15 /* Bluetooth HCI UART */ 193 194#ifdef __KERNEL__ 195 196/* 197 * Translate a "termio" structure into a "termios". Ugh. 198 */ 199#define SET_LOW_TERMIOS_BITS(termios, termio, x) { \ 200 unsigned short __tmp; \ 201 get_user(__tmp,&(termio)->x); \ 202 (termios)->x = (0xffff0000 & (termios)->x) | __tmp; \ 203} 204 205#define user_termio_to_kernel_termios(termios, termio) \ 206({ \ 207 SET_LOW_TERMIOS_BITS(termios, termio, c_iflag); \ 208 SET_LOW_TERMIOS_BITS(termios, termio, c_oflag); \ 209 SET_LOW_TERMIOS_BITS(termios, termio, c_cflag); \ 210 SET_LOW_TERMIOS_BITS(termios, termio, c_lflag); \ 211 copy_from_user((termios)->c_cc, (termio)->c_cc, NCC); \ 212}) 213 214/* 215 * Translate a "termios" structure into a "termio". Ugh. 216 */ 217#define kernel_termios_to_user_termio(termio, termios) \ 218({ \ 219 put_user((termios)->c_iflag, &(termio)->c_iflag); \ 220 put_user((termios)->c_oflag, &(termio)->c_oflag); \ 221 put_user((termios)->c_cflag, &(termio)->c_cflag); \ 222 put_user((termios)->c_lflag, &(termio)->c_lflag); \ 223 put_user((termios)->c_line, &(termio)->c_line); \ 224 copy_to_user((termio)->c_cc, (termios)->c_cc, NCC); \ 225}) 226 227#define user_termios_to_kernel_termios(k, u) copy_from_user(k, u, sizeof(struct termios)) 228#define kernel_termios_to_user_termios(u, k) copy_to_user(u, k, sizeof(struct termios)) 229 230#endif /* __KERNEL__ */ 231 232#endif /* _PPC_TERMIOS_H */