diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2012-12-11 17:08:47 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-12-11 17:08:47 -0500 |
commit | c6bd5bcc4983f1a2d2f87a3769bf309482ee8c04 (patch) | |
tree | 2ff9c4496dc2258d601a1bcd82040470704dae3b /arch | |
parent | 8966961b31c251b854169e9886394c2a20f2cea7 (diff) | |
parent | b0ab02361167faa82198b783a8d555eb6f58901c (diff) |
Merge tag 'tty-3.8-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty
Pull TTY/Serial merge from Greg Kroah-Hartman:
"Here's the big tty/serial tree set of changes for 3.8-rc1.
Contained in here is a bunch more reworks of the tty port layer from
Jiri and bugfixes from Alan, along with a number of other tty and
serial driver updates by the various driver authors.
Also, Jiri has been coerced^Wconvinced to be the co-maintainer of the
TTY layer, which is much appreciated by me.
All of these have been in the linux-next tree for a while.
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>"
Fixed up some trivial conflicts in the staging tree, due to the fwserial
driver having come in both ways (but fixed up a bit in the serial tree),
and the ioctl handling in the dgrp driver having been done slightly
differently (staging tree got that one right, and removed both
TIOCGSOFTCAR and TIOCSSOFTCAR).
* tag 'tty-3.8-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty: (146 commits)
staging: sb105x: fix potential NULL pointer dereference in mp_chars_in_buffer()
staging/fwserial: Remove superfluous free
staging/fwserial: Use WARN_ONCE when port table is corrupted
staging/fwserial: Destruct embedded tty_port on teardown
staging/fwserial: Fix build breakage when !CONFIG_BUG
staging: fwserial: Add TTY-over-Firewire serial driver
drivers/tty/serial/serial_core.c: clean up HIGH_BITS_OFFSET usage
staging: dgrp: dgrp_tty.c: Audit the return values of get/put_user()
staging: dgrp: dgrp_tty.c: Remove the TIOCSSOFTCAR ioctl handler from dgrp driver
serial: ifx6x60: Add modem power off function in the platform reboot process
serial: mxs-auart: unmap the scatter list before we copy the data
serial: mxs-auart: disable the Receive Timeout Interrupt when DMA is enabled
serial: max310x: Setup missing "can_sleep" field for GPIO
tty/serial: fix ifx6x60.c declaration warning
serial: samsung: add devicetree properties for non-Exynos SoCs
serial: samsung: fix potential soft lockup during uart write
tty: vt: Remove redundant null check before kfree.
tty/8250 Add check for pci_ioremap_bar failure
tty/8250 Add support for Commtech's Fastcom Async-335 and Fastcom Async-PCIe cards
tty/8250 Add XR17D15x devices to the exar_handle_irq override
...
Diffstat (limited to 'arch')
-rw-r--r-- | arch/alpha/include/asm/ioctls.h | 3 | ||||
-rw-r--r-- | arch/alpha/kernel/srmcons.c | 5 | ||||
-rw-r--r-- | arch/arm/boot/dts/imx28.dtsi | 1 | ||||
-rw-r--r-- | arch/arm/plat-omap/include/plat/serial.h | 9 | ||||
-rw-r--r-- | arch/ia64/hp/sim/simserial.c | 1 | ||||
-rw-r--r-- | arch/m68k/emu/nfcon.c | 6 | ||||
-rw-r--r-- | arch/mips/include/uapi/asm/ioctls.h | 3 | ||||
-rw-r--r-- | arch/parisc/include/uapi/asm/ioctls.h | 3 | ||||
-rw-r--r-- | arch/parisc/kernel/pdc_cons.c | 5 | ||||
-rw-r--r-- | arch/powerpc/include/uapi/asm/ioctls.h | 3 | ||||
-rw-r--r-- | arch/sh/include/uapi/asm/ioctls.h | 3 | ||||
-rw-r--r-- | arch/sparc/include/uapi/asm/ioctls.h | 3 | ||||
-rw-r--r-- | arch/um/drivers/chan_kern.c | 17 | ||||
-rw-r--r-- | arch/um/drivers/line.c | 2 | ||||
-rw-r--r-- | arch/x86/platform/ce4100/ce4100.c | 3 | ||||
-rw-r--r-- | arch/xtensa/include/uapi/asm/ioctls.h | 3 | ||||
-rw-r--r-- | arch/xtensa/platforms/iss/console.c | 1 |
17 files changed, 42 insertions, 29 deletions
diff --git a/arch/alpha/include/asm/ioctls.h b/arch/alpha/include/asm/ioctls.h index 80e1cee90f1f..92c557be49fc 100644 --- a/arch/alpha/include/asm/ioctls.h +++ b/arch/alpha/include/asm/ioctls.h | |||
@@ -95,6 +95,9 @@ | |||
95 | #define TIOCGDEV _IOR('T',0x32, unsigned int) /* Get primary device node of /dev/console */ | 95 | #define TIOCGDEV _IOR('T',0x32, unsigned int) /* Get primary device node of /dev/console */ |
96 | #define TIOCSIG _IOW('T',0x36, int) /* Generate signal on Pty slave */ | 96 | #define TIOCSIG _IOW('T',0x36, int) /* Generate signal on Pty slave */ |
97 | #define TIOCVHANGUP 0x5437 | 97 | #define TIOCVHANGUP 0x5437 |
98 | #define TIOCGPKT _IOR('T', 0x38, int) /* Get packet mode state */ | ||
99 | #define TIOCGPTLCK _IOR('T', 0x39, int) /* Get Pty lock state */ | ||
100 | #define TIOCGEXCL _IOR('T', 0x40, int) /* Get exclusive mode state */ | ||
98 | 101 | ||
99 | #define TIOCSERCONFIG 0x5453 | 102 | #define TIOCSERCONFIG 0x5453 |
100 | #define TIOCSERGWILD 0x5454 | 103 | #define TIOCSERGWILD 0x5454 |
diff --git a/arch/alpha/kernel/srmcons.c b/arch/alpha/kernel/srmcons.c index 5d5865204a1d..59b7bbad8394 100644 --- a/arch/alpha/kernel/srmcons.c +++ b/arch/alpha/kernel/srmcons.c | |||
@@ -205,7 +205,6 @@ static const struct tty_operations srmcons_ops = { | |||
205 | static int __init | 205 | static int __init |
206 | srmcons_init(void) | 206 | srmcons_init(void) |
207 | { | 207 | { |
208 | tty_port_init(&srmcons_singleton.port); | ||
209 | setup_timer(&srmcons_singleton.timer, srmcons_receive_chars, | 208 | setup_timer(&srmcons_singleton.timer, srmcons_receive_chars, |
210 | (unsigned long)&srmcons_singleton); | 209 | (unsigned long)&srmcons_singleton); |
211 | if (srm_is_registered_console) { | 210 | if (srm_is_registered_console) { |
@@ -215,6 +214,9 @@ srmcons_init(void) | |||
215 | driver = alloc_tty_driver(MAX_SRM_CONSOLE_DEVICES); | 214 | driver = alloc_tty_driver(MAX_SRM_CONSOLE_DEVICES); |
216 | if (!driver) | 215 | if (!driver) |
217 | return -ENOMEM; | 216 | return -ENOMEM; |
217 | |||
218 | tty_port_init(&srmcons_singleton.port); | ||
219 | |||
218 | driver->driver_name = "srm"; | 220 | driver->driver_name = "srm"; |
219 | driver->name = "srm"; | 221 | driver->name = "srm"; |
220 | driver->major = 0; /* dynamic */ | 222 | driver->major = 0; /* dynamic */ |
@@ -227,6 +229,7 @@ srmcons_init(void) | |||
227 | err = tty_register_driver(driver); | 229 | err = tty_register_driver(driver); |
228 | if (err) { | 230 | if (err) { |
229 | put_tty_driver(driver); | 231 | put_tty_driver(driver); |
232 | tty_port_destroy(&srmcons_singleton.port); | ||
230 | return err; | 233 | return err; |
231 | } | 234 | } |
232 | srmcons_driver = driver; | 235 | srmcons_driver = driver; |
diff --git a/arch/arm/boot/dts/imx28.dtsi b/arch/arm/boot/dts/imx28.dtsi index 55c57ea6169e..b4587b27ae42 100644 --- a/arch/arm/boot/dts/imx28.dtsi +++ b/arch/arm/boot/dts/imx28.dtsi | |||
@@ -799,6 +799,7 @@ | |||
799 | compatible = "fsl,imx28-auart", "fsl,imx23-auart"; | 799 | compatible = "fsl,imx28-auart", "fsl,imx23-auart"; |
800 | reg = <0x8006a000 0x2000>; | 800 | reg = <0x8006a000 0x2000>; |
801 | interrupts = <112 70 71>; | 801 | interrupts = <112 70 71>; |
802 | fsl,auart-dma-channel = <8 9>; | ||
802 | clocks = <&clks 45>; | 803 | clocks = <&clks 45>; |
803 | status = "disabled"; | 804 | status = "disabled"; |
804 | }; | 805 | }; |
diff --git a/arch/arm/plat-omap/include/plat/serial.h b/arch/arm/plat-omap/include/plat/serial.h index 65fce44dce34..b780470d03ea 100644 --- a/arch/arm/plat-omap/include/plat/serial.h +++ b/arch/arm/plat-omap/include/plat/serial.h | |||
@@ -109,15 +109,6 @@ | |||
109 | #define OMAP5UART4 OMAP4UART4 | 109 | #define OMAP5UART4 OMAP4UART4 |
110 | #define ZOOM_UART 95 /* Only on zoom2/3 */ | 110 | #define ZOOM_UART 95 /* Only on zoom2/3 */ |
111 | 111 | ||
112 | /* This is only used by 8250.c for omap1510 */ | ||
113 | #define is_omap_port(pt) ({int __ret = 0; \ | ||
114 | if ((pt)->port.mapbase == OMAP1_UART1_BASE || \ | ||
115 | (pt)->port.mapbase == OMAP1_UART2_BASE || \ | ||
116 | (pt)->port.mapbase == OMAP1_UART3_BASE) \ | ||
117 | __ret = 1; \ | ||
118 | __ret; \ | ||
119 | }) | ||
120 | |||
121 | #ifndef __ASSEMBLER__ | 112 | #ifndef __ASSEMBLER__ |
122 | 113 | ||
123 | struct omap_board_data; | 114 | struct omap_board_data; |
diff --git a/arch/ia64/hp/sim/simserial.c b/arch/ia64/hp/sim/simserial.c index ec536e4e36c9..fc3924d18c1f 100644 --- a/arch/ia64/hp/sim/simserial.c +++ b/arch/ia64/hp/sim/simserial.c | |||
@@ -555,6 +555,7 @@ static int __init simrs_init(void) | |||
555 | return 0; | 555 | return 0; |
556 | err_free_tty: | 556 | err_free_tty: |
557 | put_tty_driver(hp_simserial_driver); | 557 | put_tty_driver(hp_simserial_driver); |
558 | tty_port_destroy(&state->port); | ||
558 | return retval; | 559 | return retval; |
559 | } | 560 | } |
560 | 561 | ||
diff --git a/arch/m68k/emu/nfcon.c b/arch/m68k/emu/nfcon.c index 16d170f53bfd..6685bf45c2c3 100644 --- a/arch/m68k/emu/nfcon.c +++ b/arch/m68k/emu/nfcon.c | |||
@@ -120,8 +120,6 @@ static int __init nfcon_init(void) | |||
120 | { | 120 | { |
121 | int res; | 121 | int res; |
122 | 122 | ||
123 | tty_port_init(&nfcon_tty_port); | ||
124 | |||
125 | stderr_id = nf_get_id("NF_STDERR"); | 123 | stderr_id = nf_get_id("NF_STDERR"); |
126 | if (!stderr_id) | 124 | if (!stderr_id) |
127 | return -ENODEV; | 125 | return -ENODEV; |
@@ -130,6 +128,8 @@ static int __init nfcon_init(void) | |||
130 | if (!nfcon_tty_driver) | 128 | if (!nfcon_tty_driver) |
131 | return -ENOMEM; | 129 | return -ENOMEM; |
132 | 130 | ||
131 | tty_port_init(&nfcon_tty_port); | ||
132 | |||
133 | nfcon_tty_driver->driver_name = "nfcon"; | 133 | nfcon_tty_driver->driver_name = "nfcon"; |
134 | nfcon_tty_driver->name = "nfcon"; | 134 | nfcon_tty_driver->name = "nfcon"; |
135 | nfcon_tty_driver->type = TTY_DRIVER_TYPE_SYSTEM; | 135 | nfcon_tty_driver->type = TTY_DRIVER_TYPE_SYSTEM; |
@@ -143,6 +143,7 @@ static int __init nfcon_init(void) | |||
143 | if (res) { | 143 | if (res) { |
144 | pr_err("failed to register nfcon tty driver\n"); | 144 | pr_err("failed to register nfcon tty driver\n"); |
145 | put_tty_driver(nfcon_tty_driver); | 145 | put_tty_driver(nfcon_tty_driver); |
146 | tty_port_destroy(&nfcon_tty_port); | ||
146 | return res; | 147 | return res; |
147 | } | 148 | } |
148 | 149 | ||
@@ -157,6 +158,7 @@ static void __exit nfcon_exit(void) | |||
157 | unregister_console(&nf_console); | 158 | unregister_console(&nf_console); |
158 | tty_unregister_driver(nfcon_tty_driver); | 159 | tty_unregister_driver(nfcon_tty_driver); |
159 | put_tty_driver(nfcon_tty_driver); | 160 | put_tty_driver(nfcon_tty_driver); |
161 | tty_port_destroy(&nfcon_tty_port); | ||
160 | } | 162 | } |
161 | 163 | ||
162 | module_init(nfcon_init); | 164 | module_init(nfcon_init); |
diff --git a/arch/mips/include/uapi/asm/ioctls.h b/arch/mips/include/uapi/asm/ioctls.h index 92403c3d6007..addd56b60694 100644 --- a/arch/mips/include/uapi/asm/ioctls.h +++ b/arch/mips/include/uapi/asm/ioctls.h | |||
@@ -86,6 +86,9 @@ | |||
86 | #define TIOCGDEV _IOR('T', 0x32, unsigned int) /* Get primary device node of /dev/console */ | 86 | #define TIOCGDEV _IOR('T', 0x32, unsigned int) /* Get primary device node of /dev/console */ |
87 | #define TIOCSIG _IOW('T', 0x36, int) /* Generate signal on Pty slave */ | 87 | #define TIOCSIG _IOW('T', 0x36, int) /* Generate signal on Pty slave */ |
88 | #define TIOCVHANGUP 0x5437 | 88 | #define TIOCVHANGUP 0x5437 |
89 | #define TIOCGPKT _IOR('T', 0x38, int) /* Get packet mode state */ | ||
90 | #define TIOCGPTLCK _IOR('T', 0x39, int) /* Get Pty lock state */ | ||
91 | #define TIOCGEXCL _IOR('T', 0x40, int) /* Get exclusive mode state */ | ||
89 | 92 | ||
90 | /* I hope the range from 0x5480 on is free ... */ | 93 | /* I hope the range from 0x5480 on is free ... */ |
91 | #define TIOCSCTTY 0x5480 /* become controlling tty */ | 94 | #define TIOCSCTTY 0x5480 /* become controlling tty */ |
diff --git a/arch/parisc/include/uapi/asm/ioctls.h b/arch/parisc/include/uapi/asm/ioctls.h index 054ec06f9e23..66719c38a36b 100644 --- a/arch/parisc/include/uapi/asm/ioctls.h +++ b/arch/parisc/include/uapi/asm/ioctls.h | |||
@@ -55,6 +55,9 @@ | |||
55 | #define TIOCGDEV _IOR('T',0x32, int) /* Get primary device node of /dev/console */ | 55 | #define TIOCGDEV _IOR('T',0x32, int) /* Get primary device node of /dev/console */ |
56 | #define TIOCSIG _IOW('T',0x36, int) /* Generate signal on Pty slave */ | 56 | #define TIOCSIG _IOW('T',0x36, int) /* Generate signal on Pty slave */ |
57 | #define TIOCVHANGUP 0x5437 | 57 | #define TIOCVHANGUP 0x5437 |
58 | #define TIOCGPKT _IOR('T', 0x38, int) /* Get packet mode state */ | ||
59 | #define TIOCGPTLCK _IOR('T', 0x39, int) /* Get Pty lock state */ | ||
60 | #define TIOCGEXCL _IOR('T', 0x40, int) /* Get exclusive mode state */ | ||
58 | 61 | ||
59 | #define FIONCLEX 0x5450 /* these numbers need to be adjusted. */ | 62 | #define FIONCLEX 0x5450 /* these numbers need to be adjusted. */ |
60 | #define FIOCLEX 0x5451 | 63 | #define FIOCLEX 0x5451 |
diff --git a/arch/parisc/kernel/pdc_cons.c b/arch/parisc/kernel/pdc_cons.c index 88238638aee6..efc5e7d30530 100644 --- a/arch/parisc/kernel/pdc_cons.c +++ b/arch/parisc/kernel/pdc_cons.c | |||
@@ -186,13 +186,13 @@ static int __init pdc_console_tty_driver_init(void) | |||
186 | printk(KERN_INFO "The PDC console driver is still registered, removing CON_BOOT flag\n"); | 186 | printk(KERN_INFO "The PDC console driver is still registered, removing CON_BOOT flag\n"); |
187 | pdc_cons.flags &= ~CON_BOOT; | 187 | pdc_cons.flags &= ~CON_BOOT; |
188 | 188 | ||
189 | tty_port_init(&tty_port); | ||
190 | |||
191 | pdc_console_tty_driver = alloc_tty_driver(1); | 189 | pdc_console_tty_driver = alloc_tty_driver(1); |
192 | 190 | ||
193 | if (!pdc_console_tty_driver) | 191 | if (!pdc_console_tty_driver) |
194 | return -ENOMEM; | 192 | return -ENOMEM; |
195 | 193 | ||
194 | tty_port_init(&tty_port); | ||
195 | |||
196 | pdc_console_tty_driver->driver_name = "pdc_cons"; | 196 | pdc_console_tty_driver->driver_name = "pdc_cons"; |
197 | pdc_console_tty_driver->name = "ttyB"; | 197 | pdc_console_tty_driver->name = "ttyB"; |
198 | pdc_console_tty_driver->major = MUX_MAJOR; | 198 | pdc_console_tty_driver->major = MUX_MAJOR; |
@@ -207,6 +207,7 @@ static int __init pdc_console_tty_driver_init(void) | |||
207 | err = tty_register_driver(pdc_console_tty_driver); | 207 | err = tty_register_driver(pdc_console_tty_driver); |
208 | if (err) { | 208 | if (err) { |
209 | printk(KERN_ERR "Unable to register the PDC console TTY driver\n"); | 209 | printk(KERN_ERR "Unable to register the PDC console TTY driver\n"); |
210 | tty_port_destroy(&tty_port); | ||
210 | return err; | 211 | return err; |
211 | } | 212 | } |
212 | 213 | ||
diff --git a/arch/powerpc/include/uapi/asm/ioctls.h b/arch/powerpc/include/uapi/asm/ioctls.h index e9b78870aaab..49a25796a61a 100644 --- a/arch/powerpc/include/uapi/asm/ioctls.h +++ b/arch/powerpc/include/uapi/asm/ioctls.h | |||
@@ -97,6 +97,9 @@ | |||
97 | #define TIOCGDEV _IOR('T',0x32, unsigned int) /* Get primary device node of /dev/console */ | 97 | #define TIOCGDEV _IOR('T',0x32, unsigned int) /* Get primary device node of /dev/console */ |
98 | #define TIOCSIG _IOW('T',0x36, int) /* Generate signal on Pty slave */ | 98 | #define TIOCSIG _IOW('T',0x36, int) /* Generate signal on Pty slave */ |
99 | #define TIOCVHANGUP 0x5437 | 99 | #define TIOCVHANGUP 0x5437 |
100 | #define TIOCGPKT _IOR('T', 0x38, int) /* Get packet mode state */ | ||
101 | #define TIOCGPTLCK _IOR('T', 0x39, int) /* Get Pty lock state */ | ||
102 | #define TIOCGEXCL _IOR('T', 0x40, int) /* Get exclusive mode state */ | ||
100 | 103 | ||
101 | #define TIOCSERCONFIG 0x5453 | 104 | #define TIOCSERCONFIG 0x5453 |
102 | #define TIOCSERGWILD 0x5454 | 105 | #define TIOCSERGWILD 0x5454 |
diff --git a/arch/sh/include/uapi/asm/ioctls.h b/arch/sh/include/uapi/asm/ioctls.h index a6769f352bf6..342241079760 100644 --- a/arch/sh/include/uapi/asm/ioctls.h +++ b/arch/sh/include/uapi/asm/ioctls.h | |||
@@ -88,6 +88,9 @@ | |||
88 | #define TIOCGDEV _IOR('T',0x32, unsigned int) /* Get primary device node of /dev/console */ | 88 | #define TIOCGDEV _IOR('T',0x32, unsigned int) /* Get primary device node of /dev/console */ |
89 | #define TIOCSIG _IOW('T',0x36, int) /* Generate signal on Pty slave */ | 89 | #define TIOCSIG _IOW('T',0x36, int) /* Generate signal on Pty slave */ |
90 | #define TIOCVHANGUP _IO('T', 0x37) | 90 | #define TIOCVHANGUP _IO('T', 0x37) |
91 | #define TIOCGPKT _IOR('T', 0x38, int) /* Get packet mode state */ | ||
92 | #define TIOCGPTLCK _IOR('T', 0x39, int) /* Get Pty lock state */ | ||
93 | #define TIOCGEXCL _IOR('T', 0x40, int) /* Get exclusive mode state */ | ||
91 | 94 | ||
92 | #define TIOCSERCONFIG _IO('T', 83) /* 0x5453 */ | 95 | #define TIOCSERCONFIG _IO('T', 83) /* 0x5453 */ |
93 | #define TIOCSERGWILD _IOR('T', 84, int) /* 0x5454 */ | 96 | #define TIOCSERGWILD _IOR('T', 84, int) /* 0x5454 */ |
diff --git a/arch/sparc/include/uapi/asm/ioctls.h b/arch/sparc/include/uapi/asm/ioctls.h index 9155f7041d44..897d1723fa14 100644 --- a/arch/sparc/include/uapi/asm/ioctls.h +++ b/arch/sparc/include/uapi/asm/ioctls.h | |||
@@ -21,6 +21,9 @@ | |||
21 | #define TCSETSF2 _IOW('T', 15, struct termios2) | 21 | #define TCSETSF2 _IOW('T', 15, struct termios2) |
22 | #define TIOCGDEV _IOR('T',0x32, unsigned int) /* Get primary device node of /dev/console */ | 22 | #define TIOCGDEV _IOR('T',0x32, unsigned int) /* Get primary device node of /dev/console */ |
23 | #define TIOCVHANGUP _IO('T', 0x37) | 23 | #define TIOCVHANGUP _IO('T', 0x37) |
24 | #define TIOCGPKT _IOR('T', 0x38, int) /* Get packet mode state */ | ||
25 | #define TIOCGPTLCK _IOR('T', 0x39, int) /* Get Pty lock state */ | ||
26 | #define TIOCGEXCL _IOR('T', 0x40, int) /* Get exclusive mode state */ | ||
24 | 27 | ||
25 | /* Note that all the ioctls that are not available in Linux have a | 28 | /* Note that all the ioctls that are not available in Linux have a |
26 | * double underscore on the front to: a) avoid some programs to | 29 | * double underscore on the front to: a) avoid some programs to |
diff --git a/arch/um/drivers/chan_kern.c b/arch/um/drivers/chan_kern.c index c3bba73e4be6..e9a0abc6a32f 100644 --- a/arch/um/drivers/chan_kern.c +++ b/arch/um/drivers/chan_kern.c | |||
@@ -83,21 +83,8 @@ static const struct chan_ops not_configged_ops = { | |||
83 | 83 | ||
84 | static void tty_receive_char(struct tty_struct *tty, char ch) | 84 | static void tty_receive_char(struct tty_struct *tty, char ch) |
85 | { | 85 | { |
86 | if (tty == NULL) | 86 | if (tty) |
87 | return; | 87 | tty_insert_flip_char(tty, ch, TTY_NORMAL); |
88 | |||
89 | if (I_IXON(tty) && !I_IXOFF(tty) && !tty->raw) { | ||
90 | if (ch == STOP_CHAR(tty)) { | ||
91 | stop_tty(tty); | ||
92 | return; | ||
93 | } | ||
94 | else if (ch == START_CHAR(tty)) { | ||
95 | start_tty(tty); | ||
96 | return; | ||
97 | } | ||
98 | } | ||
99 | |||
100 | tty_insert_flip_char(tty, ch, TTY_NORMAL); | ||
101 | } | 88 | } |
102 | 89 | ||
103 | static int open_one_chan(struct chan *chan) | 90 | static int open_one_chan(struct chan *chan) |
diff --git a/arch/um/drivers/line.c b/arch/um/drivers/line.c index fd9a15b318af..9ffc28bd4b7a 100644 --- a/arch/um/drivers/line.c +++ b/arch/um/drivers/line.c | |||
@@ -584,6 +584,8 @@ int register_lines(struct line_driver *line_driver, | |||
584 | printk(KERN_ERR "register_lines : can't register %s driver\n", | 584 | printk(KERN_ERR "register_lines : can't register %s driver\n", |
585 | line_driver->name); | 585 | line_driver->name); |
586 | put_tty_driver(driver); | 586 | put_tty_driver(driver); |
587 | for (i = 0; i < nlines; i++) | ||
588 | tty_port_destroy(&lines[i].port); | ||
587 | return err; | 589 | return err; |
588 | } | 590 | } |
589 | 591 | ||
diff --git a/arch/x86/platform/ce4100/ce4100.c b/arch/x86/platform/ce4100/ce4100.c index 92525cb8e54c..f8ab4945892e 100644 --- a/arch/x86/platform/ce4100/ce4100.c +++ b/arch/x86/platform/ce4100/ce4100.c | |||
@@ -105,8 +105,11 @@ static void ce4100_serial_fixup(int port, struct uart_port *up, | |||
105 | up->membase = | 105 | up->membase = |
106 | (void __iomem *)__fix_to_virt(FIX_EARLYCON_MEM_BASE); | 106 | (void __iomem *)__fix_to_virt(FIX_EARLYCON_MEM_BASE); |
107 | up->membase += up->mapbase & ~PAGE_MASK; | 107 | up->membase += up->mapbase & ~PAGE_MASK; |
108 | up->mapbase += port * 0x100; | ||
109 | up->membase += port * 0x100; | ||
108 | up->iotype = UPIO_MEM32; | 110 | up->iotype = UPIO_MEM32; |
109 | up->regshift = 2; | 111 | up->regshift = 2; |
112 | up->irq = 4; | ||
110 | } | 113 | } |
111 | #endif | 114 | #endif |
112 | up->iobase = 0; | 115 | up->iobase = 0; |
diff --git a/arch/xtensa/include/uapi/asm/ioctls.h b/arch/xtensa/include/uapi/asm/ioctls.h index 2aa4cd9f0cec..b4cb1100c0fb 100644 --- a/arch/xtensa/include/uapi/asm/ioctls.h +++ b/arch/xtensa/include/uapi/asm/ioctls.h | |||
@@ -101,6 +101,9 @@ | |||
101 | #define TIOCGDEV _IOR('T',0x32, unsigned int) /* Get primary device node of /dev/console */ | 101 | #define TIOCGDEV _IOR('T',0x32, unsigned int) /* Get primary device node of /dev/console */ |
102 | #define TIOCSIG _IOW('T',0x36, int) /* Generate signal on Pty slave */ | 102 | #define TIOCSIG _IOW('T',0x36, int) /* Generate signal on Pty slave */ |
103 | #define TIOCVHANGUP _IO('T', 0x37) | 103 | #define TIOCVHANGUP _IO('T', 0x37) |
104 | #define TIOCGPKT _IOR('T', 0x38, int) /* Get packet mode state */ | ||
105 | #define TIOCGPTLCK _IOR('T', 0x39, int) /* Get Pty lock state */ | ||
106 | #define TIOCGEXCL _IOR('T', 0x40, int) /* Get exclusive mode state */ | ||
104 | 107 | ||
105 | #define TIOCSERCONFIG _IO('T', 83) | 108 | #define TIOCSERCONFIG _IO('T', 83) |
106 | #define TIOCSERGWILD _IOR('T', 84, int) | 109 | #define TIOCSERGWILD _IOR('T', 84, int) |
diff --git a/arch/xtensa/platforms/iss/console.c b/arch/xtensa/platforms/iss/console.c index 7e74895eee04..8207a119eee9 100644 --- a/arch/xtensa/platforms/iss/console.c +++ b/arch/xtensa/platforms/iss/console.c | |||
@@ -221,6 +221,7 @@ static __exit void rs_exit(void) | |||
221 | printk("ISS_SERIAL: failed to unregister serial driver (%d)\n", | 221 | printk("ISS_SERIAL: failed to unregister serial driver (%d)\n", |
222 | error); | 222 | error); |
223 | put_tty_driver(serial_driver); | 223 | put_tty_driver(serial_driver); |
224 | tty_port_destroy(&serial_port); | ||
224 | } | 225 | } |
225 | 226 | ||
226 | 227 | ||