Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

[ARM] enable arbitary speed tty ioctls and split input/output speed

Add the ioctls and values needed for this to the ARM26/ARM32 ports. The
actual code has been in the base kernel for a while and automatically turns
on when a port sets the required defines.

[RMK: also added termbits.h changes to avoid build breakage]

Signed-off-by: Alan Cox <alan@redhat.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>

authored by

Alan Cox and committed by
Russell King
3abc1201 43e7f6ad

+23 -3
+4
include/asm-arm/ioctls.h
··· 46 46 #define TIOCSBRK 0x5427 /* BSD compatibility */ 47 47 #define TIOCCBRK 0x5428 /* BSD compatibility */ 48 48 #define TIOCGSID 0x5429 /* Return the session ID of FD */ 49 + #define TCGETS2 _IOR('T',0x2A, struct termios2) 50 + #define TCSETS2 _IOW('T',0x2B, struct termios2) 51 + #define TCSETSW2 _IOW('T',0x2C, struct termios2) 52 + #define TCSETSF2 _IOW('T',0x2D, struct termios2) 49 53 #define TIOCGPTN _IOR('T',0x30, unsigned int) /* Get Pty Number (of pty-mux device) */ 50 54 #define TIOCSPTLCK _IOW('T',0x31, int) /* Lock/unlock Pty */ 51 55
+15 -1
include/asm-arm/termbits.h
··· 15 15 cc_t c_cc[NCCS]; /* control characters */ 16 16 }; 17 17 18 + struct termios2 { 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_line; /* line discipline */ 24 + cc_t c_cc[NCCS]; /* control characters */ 25 + speed_t c_ispeed; /* input speed */ 26 + speed_t c_ospeed; /* output speed */ 27 + }; 28 + 18 29 struct ktermios { 19 30 tcflag_t c_iflag; /* input mode flags */ 20 31 tcflag_t c_oflag; /* output mode flags */ ··· 139 128 #define HUPCL 0002000 140 129 #define CLOCAL 0004000 141 130 #define CBAUDEX 0010000 131 + #define BOTHER 0010000 142 132 #define B57600 0010001 143 133 #define B115200 0010002 144 134 #define B230400 0010003 ··· 155 143 #define B3000000 0010015 156 144 #define B3500000 0010016 157 145 #define B4000000 0010017 158 - #define CIBAUD 002003600000 /* input baud rate (not used) */ 146 + #define CIBAUD 002003600000 /* input baud rate */ 159 147 #define CMSPAR 010000000000 /* mark or space (stick) parity */ 160 148 #define CRTSCTS 020000000000 /* flow control */ 149 + 150 + #define IBSHIFT 16 161 151 162 152 /* c_lflag bits */ 163 153 #define ISIG 0000001
+4 -2
include/asm-arm/termios.h
··· 82 82 copy_to_user((termio)->c_cc, (termios)->c_cc, NCC); \ 83 83 }) 84 84 85 - #define user_termios_to_kernel_termios(k, u) copy_from_user(k, u, sizeof(struct termios)) 86 - #define kernel_termios_to_user_termios(u, k) copy_to_user(u, k, sizeof(struct termios)) 85 + #define user_termios_to_kernel_termios(k, u) copy_from_user(k, u, sizeof(struct termios2)) 86 + #define kernel_termios_to_user_termios(u, k) copy_to_user(u, k, sizeof(struct termios2)) 87 + #define user_termios_to_kernel_termios_1(k, u) copy_from_user(k, u, sizeof(struct termios)) 88 + #define kernel_termios_to_user_termios_1(u, k) copy_to_user(u, k, sizeof(struct termios)) 87 89 88 90 #endif /* __KERNEL__ */ 89 91