aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2012-12-11 17:08:47 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2012-12-11 17:08:47 -0500
commitc6bd5bcc4983f1a2d2f87a3769bf309482ee8c04 (patch)
tree2ff9c4496dc2258d601a1bcd82040470704dae3b /arch
parent8966961b31c251b854169e9886394c2a20f2cea7 (diff)
parentb0ab02361167faa82198b783a8d555eb6f58901c (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.h3
-rw-r--r--arch/alpha/kernel/srmcons.c5
-rw-r--r--arch/arm/boot/dts/imx28.dtsi1
-rw-r--r--arch/arm/plat-omap/include/plat/serial.h9
-rw-r--r--arch/ia64/hp/sim/simserial.c1
-rw-r--r--arch/m68k/emu/nfcon.c6
-rw-r--r--arch/mips/include/uapi/asm/ioctls.h3
-rw-r--r--arch/parisc/include/uapi/asm/ioctls.h3
-rw-r--r--arch/parisc/kernel/pdc_cons.c5
-rw-r--r--arch/powerpc/include/uapi/asm/ioctls.h3
-rw-r--r--arch/sh/include/uapi/asm/ioctls.h3
-rw-r--r--arch/sparc/include/uapi/asm/ioctls.h3
-rw-r--r--arch/um/drivers/chan_kern.c17
-rw-r--r--arch/um/drivers/line.c2
-rw-r--r--arch/x86/platform/ce4100/ce4100.c3
-rw-r--r--arch/xtensa/include/uapi/asm/ioctls.h3
-rw-r--r--arch/xtensa/platforms/iss/console.c1
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 = {
205static int __init 205static int __init
206srmcons_init(void) 206srmcons_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
123struct omap_board_data; 114struct 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;
556err_free_tty: 556err_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
162module_init(nfcon_init); 164module_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
84static void tty_receive_char(struct tty_struct *tty, char ch) 84static 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
103static int open_one_chan(struct chan *chan) 90static 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