aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/misc/ibmasm/uart.c2
-rw-r--r--drivers/serial/21285.c2
-rw-r--r--drivers/serial/8250.c19
-rw-r--r--drivers/serial/Kconfig2
-rw-r--r--drivers/serial/amba-pl010.c4
-rw-r--r--drivers/serial/clps711x.c4
-rw-r--r--drivers/serial/imx.c4
-rw-r--r--drivers/serial/sa1100.c6
-rw-r--r--drivers/serial/serial_core.c16
-rw-r--r--drivers/serial/serial_lh7a40x.c6
-rw-r--r--drivers/serial/sh-sci.c96
-rw-r--r--drivers/serial/sunsu.c14
-rw-r--r--include/linux/serial_8250.h2
-rw-r--r--include/linux/serial_core.h72
14 files changed, 123 insertions, 126 deletions
diff --git a/drivers/misc/ibmasm/uart.c b/drivers/misc/ibmasm/uart.c
index 7e98434cfa37..9783caf49696 100644
--- a/drivers/misc/ibmasm/uart.c
+++ b/drivers/misc/ibmasm/uart.c
@@ -50,7 +50,7 @@ void ibmasm_register_uart(struct service_processor *sp)
50 memset(&uport, 0, sizeof(struct uart_port)); 50 memset(&uport, 0, sizeof(struct uart_port));
51 uport.irq = sp->irq; 51 uport.irq = sp->irq;
52 uport.uartclk = 3686400; 52 uport.uartclk = 3686400;
53 uport.flags = UPF_AUTOPROBE | UPF_SHARE_IRQ; 53 uport.flags = UPF_SHARE_IRQ;
54 uport.iotype = UPIO_MEM; 54 uport.iotype = UPIO_MEM;
55 uport.membase = iomem_base; 55 uport.membase = iomem_base;
56 56
diff --git a/drivers/serial/21285.c b/drivers/serial/21285.c
index 221999bcf8fe..7aef7518b0d1 100644
--- a/drivers/serial/21285.c
+++ b/drivers/serial/21285.c
@@ -366,7 +366,7 @@ static struct uart_port serial21285_port = {
366 .irq = NO_IRQ, 366 .irq = NO_IRQ,
367 .fifosize = 16, 367 .fifosize = 16,
368 .ops = &serial21285_ops, 368 .ops = &serial21285_ops,
369 .flags = ASYNC_BOOT_AUTOCONF, 369 .flags = UPF_BOOT_AUTOCONF,
370}; 370};
371 371
372static void serial21285_setup_ports(void) 372static void serial21285_setup_ports(void)
diff --git a/drivers/serial/8250.c b/drivers/serial/8250.c
index bc36edff2058..179c1f065e60 100644
--- a/drivers/serial/8250.c
+++ b/drivers/serial/8250.c
@@ -31,7 +31,6 @@
31#include <linux/init.h> 31#include <linux/init.h>
32#include <linux/console.h> 32#include <linux/console.h>
33#include <linux/sysrq.h> 33#include <linux/sysrq.h>
34#include <linux/mca.h>
35#include <linux/delay.h> 34#include <linux/delay.h>
36#include <linux/platform_device.h> 35#include <linux/platform_device.h>
37#include <linux/tty.h> 36#include <linux/tty.h>
@@ -2027,12 +2026,6 @@ static void serial8250_config_port(struct uart_port *port, int flags)
2027 int ret; 2026 int ret;
2028 2027
2029 /* 2028 /*
2030 * Don't probe for MCA ports on non-MCA machines.
2031 */
2032 if (up->port.flags & UPF_BOOT_ONLYMCA && !MCA_bus)
2033 return;
2034
2035 /*
2036 * Find the region that we can probe for. This in turn 2029 * Find the region that we can probe for. This in turn
2037 * tells us whether we can probe for the type of port. 2030 * tells us whether we can probe for the type of port.
2038 */ 2031 */
@@ -2164,7 +2157,7 @@ serial8250_register_ports(struct uart_driver *drv, struct device *dev)
2164/* 2157/*
2165 * Wait for transmitter & holding register to empty 2158 * Wait for transmitter & holding register to empty
2166 */ 2159 */
2167static inline void wait_for_xmitr(struct uart_8250_port *up) 2160static inline void wait_for_xmitr(struct uart_8250_port *up, int bits)
2168{ 2161{
2169 unsigned int status, tmout = 10000; 2162 unsigned int status, tmout = 10000;
2170 2163
@@ -2178,7 +2171,7 @@ static inline void wait_for_xmitr(struct uart_8250_port *up)
2178 if (--tmout == 0) 2171 if (--tmout == 0)
2179 break; 2172 break;
2180 udelay(1); 2173 udelay(1);
2181 } while ((status & BOTH_EMPTY) != BOTH_EMPTY); 2174 } while ((status & bits) != bits);
2182 2175
2183 /* Wait up to 1s for flow control if necessary */ 2176 /* Wait up to 1s for flow control if necessary */
2184 if (up->port.flags & UPF_CONS_FLOW) { 2177 if (up->port.flags & UPF_CONS_FLOW) {
@@ -2218,7 +2211,7 @@ serial8250_console_write(struct console *co, const char *s, unsigned int count)
2218 * Now, do each character 2211 * Now, do each character
2219 */ 2212 */
2220 for (i = 0; i < count; i++, s++) { 2213 for (i = 0; i < count; i++, s++) {
2221 wait_for_xmitr(up); 2214 wait_for_xmitr(up, UART_LSR_THRE);
2222 2215
2223 /* 2216 /*
2224 * Send the character out. 2217 * Send the character out.
@@ -2226,7 +2219,7 @@ serial8250_console_write(struct console *co, const char *s, unsigned int count)
2226 */ 2219 */
2227 serial_out(up, UART_TX, *s); 2220 serial_out(up, UART_TX, *s);
2228 if (*s == 10) { 2221 if (*s == 10) {
2229 wait_for_xmitr(up); 2222 wait_for_xmitr(up, UART_LSR_THRE);
2230 serial_out(up, UART_TX, 13); 2223 serial_out(up, UART_TX, 13);
2231 } 2224 }
2232 } 2225 }
@@ -2235,8 +2228,8 @@ serial8250_console_write(struct console *co, const char *s, unsigned int count)
2235 * Finally, wait for transmitter to become empty 2228 * Finally, wait for transmitter to become empty
2236 * and restore the IER 2229 * and restore the IER
2237 */ 2230 */
2238 wait_for_xmitr(up); 2231 wait_for_xmitr(up, BOTH_EMPTY);
2239 serial_out(up, UART_IER, ier); 2232 serial_out(up, UART_IER, ier | UART_IER_THRI);
2240} 2233}
2241 2234
2242static int serial8250_console_setup(struct console *co, char *options) 2235static int serial8250_console_setup(struct console *co, char *options)
diff --git a/drivers/serial/Kconfig b/drivers/serial/Kconfig
index 9fd1925de361..0d38f0f2ae29 100644
--- a/drivers/serial/Kconfig
+++ b/drivers/serial/Kconfig
@@ -23,7 +23,7 @@ config SERIAL_8250
23 work.) 23 work.)
24 24
25 To compile this driver as a module, choose M here: the 25 To compile this driver as a module, choose M here: the
26 module will be called serial. 26 module will be called 8250.
27 [WARNING: Do not compile this driver as a module if you are using 27 [WARNING: Do not compile this driver as a module if you are using
28 non-standard serial ports, since the configuration information will 28 non-standard serial ports, since the configuration information will
29 be lost when the driver is unloaded. This limitation may be lifted 29 be lost when the driver is unloaded. This limitation may be lifted
diff --git a/drivers/serial/amba-pl010.c b/drivers/serial/amba-pl010.c
index 3490022e9fdc..429de2723a1c 100644
--- a/drivers/serial/amba-pl010.c
+++ b/drivers/serial/amba-pl010.c
@@ -566,7 +566,7 @@ static struct uart_amba_port amba_ports[UART_NR] = {
566 .uartclk = 14745600, 566 .uartclk = 14745600,
567 .fifosize = 16, 567 .fifosize = 16,
568 .ops = &amba_pl010_pops, 568 .ops = &amba_pl010_pops,
569 .flags = ASYNC_BOOT_AUTOCONF, 569 .flags = UPF_BOOT_AUTOCONF,
570 .line = 0, 570 .line = 0,
571 }, 571 },
572 .dtr_mask = 1 << 5, 572 .dtr_mask = 1 << 5,
@@ -581,7 +581,7 @@ static struct uart_amba_port amba_ports[UART_NR] = {
581 .uartclk = 14745600, 581 .uartclk = 14745600,
582 .fifosize = 16, 582 .fifosize = 16,
583 .ops = &amba_pl010_pops, 583 .ops = &amba_pl010_pops,
584 .flags = ASYNC_BOOT_AUTOCONF, 584 .flags = UPF_BOOT_AUTOCONF,
585 .line = 1, 585 .line = 1,
586 }, 586 },
587 .dtr_mask = 1 << 7, 587 .dtr_mask = 1 << 7,
diff --git a/drivers/serial/clps711x.c b/drivers/serial/clps711x.c
index 8ef999481f93..ce7b2e4ecd17 100644
--- a/drivers/serial/clps711x.c
+++ b/drivers/serial/clps711x.c
@@ -410,7 +410,7 @@ static struct uart_port clps711x_ports[UART_NR] = {
410 .fifosize = 16, 410 .fifosize = 16,
411 .ops = &clps711x_pops, 411 .ops = &clps711x_pops,
412 .line = 0, 412 .line = 0,
413 .flags = ASYNC_BOOT_AUTOCONF, 413 .flags = UPF_BOOT_AUTOCONF,
414 }, 414 },
415 { 415 {
416 .iobase = SYSCON2, 416 .iobase = SYSCON2,
@@ -419,7 +419,7 @@ static struct uart_port clps711x_ports[UART_NR] = {
419 .fifosize = 16, 419 .fifosize = 16,
420 .ops = &clps711x_pops, 420 .ops = &clps711x_pops,
421 .line = 1, 421 .line = 1,
422 .flags = ASYNC_BOOT_AUTOCONF, 422 .flags = UPF_BOOT_AUTOCONF,
423 } 423 }
424}; 424};
425 425
diff --git a/drivers/serial/imx.c b/drivers/serial/imx.c
index fa3bbd6c751f..858048efe1ed 100644
--- a/drivers/serial/imx.c
+++ b/drivers/serial/imx.c
@@ -674,7 +674,7 @@ static struct imx_port imx_ports[] = {
674 .irq = UART1_MINT_RX, 674 .irq = UART1_MINT_RX,
675 .uartclk = 16000000, 675 .uartclk = 16000000,
676 .fifosize = 8, 676 .fifosize = 8,
677 .flags = ASYNC_BOOT_AUTOCONF, 677 .flags = UPF_BOOT_AUTOCONF,
678 .ops = &imx_pops, 678 .ops = &imx_pops,
679 .line = 0, 679 .line = 0,
680 }, 680 },
@@ -690,7 +690,7 @@ static struct imx_port imx_ports[] = {
690 .irq = UART2_MINT_RX, 690 .irq = UART2_MINT_RX,
691 .uartclk = 16000000, 691 .uartclk = 16000000,
692 .fifosize = 8, 692 .fifosize = 8,
693 .flags = ASYNC_BOOT_AUTOCONF, 693 .flags = UPF_BOOT_AUTOCONF,
694 .ops = &imx_pops, 694 .ops = &imx_pops,
695 .line = 1, 695 .line = 1,
696 }, 696 },
diff --git a/drivers/serial/sa1100.c b/drivers/serial/sa1100.c
index 1bd93168f504..ff7b60b4de37 100644
--- a/drivers/serial/sa1100.c
+++ b/drivers/serial/sa1100.c
@@ -665,21 +665,21 @@ void __init sa1100_register_uart(int idx, int port)
665 sa1100_ports[idx].port.membase = (void __iomem *)&Ser1UTCR0; 665 sa1100_ports[idx].port.membase = (void __iomem *)&Ser1UTCR0;
666 sa1100_ports[idx].port.mapbase = _Ser1UTCR0; 666 sa1100_ports[idx].port.mapbase = _Ser1UTCR0;
667 sa1100_ports[idx].port.irq = IRQ_Ser1UART; 667 sa1100_ports[idx].port.irq = IRQ_Ser1UART;
668 sa1100_ports[idx].port.flags = ASYNC_BOOT_AUTOCONF; 668 sa1100_ports[idx].port.flags = UPF_BOOT_AUTOCONF;
669 break; 669 break;
670 670
671 case 2: 671 case 2:
672 sa1100_ports[idx].port.membase = (void __iomem *)&Ser2UTCR0; 672 sa1100_ports[idx].port.membase = (void __iomem *)&Ser2UTCR0;
673 sa1100_ports[idx].port.mapbase = _Ser2UTCR0; 673 sa1100_ports[idx].port.mapbase = _Ser2UTCR0;
674 sa1100_ports[idx].port.irq = IRQ_Ser2ICP; 674 sa1100_ports[idx].port.irq = IRQ_Ser2ICP;
675 sa1100_ports[idx].port.flags = ASYNC_BOOT_AUTOCONF; 675 sa1100_ports[idx].port.flags = UPF_BOOT_AUTOCONF;
676 break; 676 break;
677 677
678 case 3: 678 case 3:
679 sa1100_ports[idx].port.membase = (void __iomem *)&Ser3UTCR0; 679 sa1100_ports[idx].port.membase = (void __iomem *)&Ser3UTCR0;
680 sa1100_ports[idx].port.mapbase = _Ser3UTCR0; 680 sa1100_ports[idx].port.mapbase = _Ser3UTCR0;
681 sa1100_ports[idx].port.irq = IRQ_Ser3UART; 681 sa1100_ports[idx].port.irq = IRQ_Ser3UART;
682 sa1100_ports[idx].port.flags = ASYNC_BOOT_AUTOCONF; 682 sa1100_ports[idx].port.flags = UPF_BOOT_AUTOCONF;
683 break; 683 break;
684 684
685 default: 685 default:
diff --git a/drivers/serial/serial_core.c b/drivers/serial/serial_core.c
index 943770470b9d..0717abfdae06 100644
--- a/drivers/serial/serial_core.c
+++ b/drivers/serial/serial_core.c
@@ -332,7 +332,7 @@ uart_get_baud_rate(struct uart_port *port, struct termios *termios,
332 struct termios *old, unsigned int min, unsigned int max) 332 struct termios *old, unsigned int min, unsigned int max)
333{ 333{
334 unsigned int try, baud, altbaud = 38400; 334 unsigned int try, baud, altbaud = 38400;
335 unsigned int flags = port->flags & UPF_SPD_MASK; 335 upf_t flags = port->flags & UPF_SPD_MASK;
336 336
337 if (flags == UPF_SPD_HI) 337 if (flags == UPF_SPD_HI)
338 altbaud = 57600; 338 altbaud = 57600;
@@ -615,8 +615,9 @@ static int uart_set_info(struct uart_state *state,
615 struct serial_struct new_serial; 615 struct serial_struct new_serial;
616 struct uart_port *port = state->port; 616 struct uart_port *port = state->port;
617 unsigned long new_port; 617 unsigned long new_port;
618 unsigned int change_irq, change_port, old_flags, closing_wait; 618 unsigned int change_irq, change_port, closing_wait;
619 unsigned int old_custom_divisor, close_delay; 619 unsigned int old_custom_divisor, close_delay;
620 upf_t old_flags, new_flags;
620 int retval = 0; 621 int retval = 0;
621 622
622 if (copy_from_user(&new_serial, newinfo, sizeof(new_serial))) 623 if (copy_from_user(&new_serial, newinfo, sizeof(new_serial)))
@@ -655,6 +656,7 @@ static int uart_set_info(struct uart_state *state,
655 new_serial.type != port->type; 656 new_serial.type != port->type;
656 657
657 old_flags = port->flags; 658 old_flags = port->flags;
659 new_flags = new_serial.flags;
658 old_custom_divisor = port->custom_divisor; 660 old_custom_divisor = port->custom_divisor;
659 661
660 if (!capable(CAP_SYS_ADMIN)) { 662 if (!capable(CAP_SYS_ADMIN)) {
@@ -664,10 +666,10 @@ static int uart_set_info(struct uart_state *state,
664 (close_delay != state->close_delay) || 666 (close_delay != state->close_delay) ||
665 (closing_wait != state->closing_wait) || 667 (closing_wait != state->closing_wait) ||
666 (new_serial.xmit_fifo_size != port->fifosize) || 668 (new_serial.xmit_fifo_size != port->fifosize) ||
667 (((new_serial.flags ^ old_flags) & ~UPF_USR_MASK) != 0)) 669 (((new_flags ^ old_flags) & ~UPF_USR_MASK) != 0))
668 goto exit; 670 goto exit;
669 port->flags = ((port->flags & ~UPF_USR_MASK) | 671 port->flags = ((port->flags & ~UPF_USR_MASK) |
670 (new_serial.flags & UPF_USR_MASK)); 672 (new_flags & UPF_USR_MASK));
671 port->custom_divisor = new_serial.custom_divisor; 673 port->custom_divisor = new_serial.custom_divisor;
672 goto check_and_exit; 674 goto check_and_exit;
673 } 675 }
@@ -764,7 +766,7 @@ static int uart_set_info(struct uart_state *state,
764 port->irq = new_serial.irq; 766 port->irq = new_serial.irq;
765 port->uartclk = new_serial.baud_base * 16; 767 port->uartclk = new_serial.baud_base * 16;
766 port->flags = (port->flags & ~UPF_CHANGE_MASK) | 768 port->flags = (port->flags & ~UPF_CHANGE_MASK) |
767 (new_serial.flags & UPF_CHANGE_MASK); 769 (new_flags & UPF_CHANGE_MASK);
768 port->custom_divisor = new_serial.custom_divisor; 770 port->custom_divisor = new_serial.custom_divisor;
769 state->close_delay = close_delay; 771 state->close_delay = close_delay;
770 state->closing_wait = closing_wait; 772 state->closing_wait = closing_wait;
@@ -1870,7 +1872,7 @@ int uart_suspend_port(struct uart_driver *drv, struct uart_port *port)
1870 mutex_lock(&state->mutex); 1872 mutex_lock(&state->mutex);
1871 1873
1872 if (state->info && state->info->flags & UIF_INITIALIZED) { 1874 if (state->info && state->info->flags & UIF_INITIALIZED) {
1873 struct uart_ops *ops = port->ops; 1875 const struct uart_ops *ops = port->ops;
1874 1876
1875 spin_lock_irq(&port->lock); 1877 spin_lock_irq(&port->lock);
1876 ops->stop_tx(port); 1878 ops->stop_tx(port);
@@ -1932,7 +1934,7 @@ int uart_resume_port(struct uart_driver *drv, struct uart_port *port)
1932 } 1934 }
1933 1935
1934 if (state->info && state->info->flags & UIF_INITIALIZED) { 1936 if (state->info && state->info->flags & UIF_INITIALIZED) {
1935 struct uart_ops *ops = port->ops; 1937 const struct uart_ops *ops = port->ops;
1936 int ret; 1938 int ret;
1937 1939
1938 ops->set_mctrl(port, 0); 1940 ops->set_mctrl(port, 0);
diff --git a/drivers/serial/serial_lh7a40x.c b/drivers/serial/serial_lh7a40x.c
index d4a1f0e798c1..d0490f67f597 100644
--- a/drivers/serial/serial_lh7a40x.c
+++ b/drivers/serial/serial_lh7a40x.c
@@ -506,7 +506,7 @@ static struct uart_port_lh7a40x lh7a40x_ports[DEV_NR] = {
506 .uartclk = 14745600/2, 506 .uartclk = 14745600/2,
507 .fifosize = 16, 507 .fifosize = 16,
508 .ops = &lh7a40x_uart_ops, 508 .ops = &lh7a40x_uart_ops,
509 .flags = ASYNC_BOOT_AUTOCONF, 509 .flags = UPF_BOOT_AUTOCONF,
510 .line = 0, 510 .line = 0,
511 }, 511 },
512 }, 512 },
@@ -519,7 +519,7 @@ static struct uart_port_lh7a40x lh7a40x_ports[DEV_NR] = {
519 .uartclk = 14745600/2, 519 .uartclk = 14745600/2,
520 .fifosize = 16, 520 .fifosize = 16,
521 .ops = &lh7a40x_uart_ops, 521 .ops = &lh7a40x_uart_ops,
522 .flags = ASYNC_BOOT_AUTOCONF, 522 .flags = UPF_BOOT_AUTOCONF,
523 .line = 1, 523 .line = 1,
524 }, 524 },
525 }, 525 },
@@ -532,7 +532,7 @@ static struct uart_port_lh7a40x lh7a40x_ports[DEV_NR] = {
532 .uartclk = 14745600/2, 532 .uartclk = 14745600/2,
533 .fifosize = 16, 533 .fifosize = 16,
534 .ops = &lh7a40x_uart_ops, 534 .ops = &lh7a40x_uart_ops,
535 .flags = ASYNC_BOOT_AUTOCONF, 535 .flags = UPF_BOOT_AUTOCONF,
536 .line = 2, 536 .line = 2,
537 }, 537 },
538 }, 538 },
diff --git a/drivers/serial/sh-sci.c b/drivers/serial/sh-sci.c
index a9e070759628..0111206327ca 100644
--- a/drivers/serial/sh-sci.c
+++ b/drivers/serial/sh-sci.c
@@ -1113,10 +1113,10 @@ static struct sci_port sci_ports[SCI_NPORTS] = {
1113 .port = { 1113 .port = {
1114 .membase = (void *)0xfffffe80, 1114 .membase = (void *)0xfffffe80,
1115 .mapbase = 0xfffffe80, 1115 .mapbase = 0xfffffe80,
1116 .iotype = SERIAL_IO_MEM, 1116 .iotype = UPIO_MEM,
1117 .irq = 25, 1117 .irq = 25,
1118 .ops = &sci_uart_ops, 1118 .ops = &sci_uart_ops,
1119 .flags = ASYNC_BOOT_AUTOCONF, 1119 .flags = UPF_BOOT_AUTOCONF,
1120 .line = 0, 1120 .line = 0,
1121 }, 1121 },
1122 .type = PORT_SCI, 1122 .type = PORT_SCI,
@@ -1128,10 +1128,10 @@ static struct sci_port sci_ports[SCI_NPORTS] = {
1128 .port = { 1128 .port = {
1129 .membase = (void *)SCIF0, 1129 .membase = (void *)SCIF0,
1130 .mapbase = SCIF0, 1130 .mapbase = SCIF0,
1131 .iotype = SERIAL_IO_MEM, 1131 .iotype = UPIO_MEM,
1132 .irq = 55, 1132 .irq = 55,
1133 .ops = &sci_uart_ops, 1133 .ops = &sci_uart_ops,
1134 .flags = ASYNC_BOOT_AUTOCONF, 1134 .flags = UPF_BOOT_AUTOCONF,
1135 .line = 0, 1135 .line = 0,
1136 }, 1136 },
1137 .type = PORT_SCIF, 1137 .type = PORT_SCIF,
@@ -1142,10 +1142,10 @@ static struct sci_port sci_ports[SCI_NPORTS] = {
1142 .port = { 1142 .port = {
1143 .membase = (void *)SCIF2, 1143 .membase = (void *)SCIF2,
1144 .mapbase = SCIF2, 1144 .mapbase = SCIF2,
1145 .iotype = SERIAL_IO_MEM, 1145 .iotype = UPIO_MEM,
1146 .irq = 59, 1146 .irq = 59,
1147 .ops = &sci_uart_ops, 1147 .ops = &sci_uart_ops,
1148 .flags = ASYNC_BOOT_AUTOCONF, 1148 .flags = UPF_BOOT_AUTOCONF,
1149 .line = 1, 1149 .line = 1,
1150 }, 1150 },
1151 .type = PORT_SCIF, 1151 .type = PORT_SCIF,
@@ -1157,10 +1157,10 @@ static struct sci_port sci_ports[SCI_NPORTS] = {
1157 .port = { 1157 .port = {
1158 .membase = (void *)0xfffffe80, 1158 .membase = (void *)0xfffffe80,
1159 .mapbase = 0xfffffe80, 1159 .mapbase = 0xfffffe80,
1160 .iotype = SERIAL_IO_MEM, 1160 .iotype = UPIO_MEM,
1161 .irq = 25, 1161 .irq = 25,
1162 .ops = &sci_uart_ops, 1162 .ops = &sci_uart_ops,
1163 .flags = ASYNC_BOOT_AUTOCONF, 1163 .flags = UPF_BOOT_AUTOCONF,
1164 .line = 0, 1164 .line = 0,
1165 }, 1165 },
1166 .type = PORT_SCI, 1166 .type = PORT_SCI,
@@ -1171,10 +1171,10 @@ static struct sci_port sci_ports[SCI_NPORTS] = {
1171 .port = { 1171 .port = {
1172 .membase = (void *)0xa4000150, 1172 .membase = (void *)0xa4000150,
1173 .mapbase = 0xa4000150, 1173 .mapbase = 0xa4000150,
1174 .iotype = SERIAL_IO_MEM, 1174 .iotype = UPIO_MEM,
1175 .irq = 59, 1175 .irq = 59,
1176 .ops = &sci_uart_ops, 1176 .ops = &sci_uart_ops,
1177 .flags = ASYNC_BOOT_AUTOCONF, 1177 .flags = UPF_BOOT_AUTOCONF,
1178 .line = 1, 1178 .line = 1,
1179 }, 1179 },
1180 .type = PORT_SCIF, 1180 .type = PORT_SCIF,
@@ -1185,10 +1185,10 @@ static struct sci_port sci_ports[SCI_NPORTS] = {
1185 .port = { 1185 .port = {
1186 .membase = (void *)0xa4000140, 1186 .membase = (void *)0xa4000140,
1187 .mapbase = 0xa4000140, 1187 .mapbase = 0xa4000140,
1188 .iotype = SERIAL_IO_MEM, 1188 .iotype = UPIO_MEM,
1189 .irq = 55, 1189 .irq = 55,
1190 .ops = &sci_uart_ops, 1190 .ops = &sci_uart_ops,
1191 .flags = ASYNC_BOOT_AUTOCONF, 1191 .flags = UPF_BOOT_AUTOCONF,
1192 .line = 2, 1192 .line = 2,
1193 }, 1193 },
1194 .type = PORT_IRDA, 1194 .type = PORT_IRDA,
@@ -1200,10 +1200,10 @@ static struct sci_port sci_ports[SCI_NPORTS] = {
1200 .port = { 1200 .port = {
1201 .membase = (void *)0xA4430000, 1201 .membase = (void *)0xA4430000,
1202 .mapbase = 0xA4430000, 1202 .mapbase = 0xA4430000,
1203 .iotype = SERIAL_IO_MEM, 1203 .iotype = UPIO_MEM,
1204 .irq = 25, 1204 .irq = 25,
1205 .ops = &sci_uart_ops, 1205 .ops = &sci_uart_ops,
1206 .flags = ASYNC_BOOT_AUTOCONF, 1206 .flags = UPF_BOOT_AUTOCONF,
1207 .line = 0, 1207 .line = 0,
1208 }, 1208 },
1209 .type = PORT_SCIF, 1209 .type = PORT_SCIF,
@@ -1215,10 +1215,10 @@ static struct sci_port sci_ports[SCI_NPORTS] = {
1215 .port = { 1215 .port = {
1216 .membase = (void *)0xffe00000, 1216 .membase = (void *)0xffe00000,
1217 .mapbase = 0xffe00000, 1217 .mapbase = 0xffe00000,
1218 .iotype = SERIAL_IO_MEM, 1218 .iotype = UPIO_MEM,
1219 .irq = 25, 1219 .irq = 25,
1220 .ops = &sci_uart_ops, 1220 .ops = &sci_uart_ops,
1221 .flags = ASYNC_BOOT_AUTOCONF, 1221 .flags = UPF_BOOT_AUTOCONF,
1222 .line = 0, 1222 .line = 0,
1223 }, 1223 },
1224 .type = PORT_SCIF, 1224 .type = PORT_SCIF,
@@ -1230,10 +1230,10 @@ static struct sci_port sci_ports[SCI_NPORTS] = {
1230 .port = { 1230 .port = {
1231 .membase = (void *)0xffe80000, 1231 .membase = (void *)0xffe80000,
1232 .mapbase = 0xffe80000, 1232 .mapbase = 0xffe80000,
1233 .iotype = SERIAL_IO_MEM, 1233 .iotype = UPIO_MEM,
1234 .irq = 43, 1234 .irq = 43,
1235 .ops = &sci_uart_ops, 1235 .ops = &sci_uart_ops,
1236 .flags = ASYNC_BOOT_AUTOCONF, 1236 .flags = UPF_BOOT_AUTOCONF,
1237 .line = 0, 1237 .line = 0,
1238 }, 1238 },
1239 .type = PORT_SCIF, 1239 .type = PORT_SCIF,
@@ -1245,10 +1245,10 @@ static struct sci_port sci_ports[SCI_NPORTS] = {
1245 .port = { 1245 .port = {
1246 .membase = (void *)0xffe00000, 1246 .membase = (void *)0xffe00000,
1247 .mapbase = 0xffe00000, 1247 .mapbase = 0xffe00000,
1248 .iotype = SERIAL_IO_MEM, 1248 .iotype = UPIO_MEM,
1249 .irq = 25, 1249 .irq = 25,
1250 .ops = &sci_uart_ops, 1250 .ops = &sci_uart_ops,
1251 .flags = ASYNC_BOOT_AUTOCONF, 1251 .flags = UPF_BOOT_AUTOCONF,
1252 .line = 0, 1252 .line = 0,
1253 }, 1253 },
1254 .type = PORT_SCI, 1254 .type = PORT_SCI,
@@ -1259,10 +1259,10 @@ static struct sci_port sci_ports[SCI_NPORTS] = {
1259 .port = { 1259 .port = {
1260 .membase = (void *)0xffe80000, 1260 .membase = (void *)0xffe80000,
1261 .mapbase = 0xffe80000, 1261 .mapbase = 0xffe80000,
1262 .iotype = SERIAL_IO_MEM, 1262 .iotype = UPIO_MEM,
1263 .irq = 43, 1263 .irq = 43,
1264 .ops = &sci_uart_ops, 1264 .ops = &sci_uart_ops,
1265 .flags = ASYNC_BOOT_AUTOCONF, 1265 .flags = UPF_BOOT_AUTOCONF,
1266 .line = 1, 1266 .line = 1,
1267 }, 1267 },
1268 .type = PORT_SCIF, 1268 .type = PORT_SCIF,
@@ -1274,10 +1274,10 @@ static struct sci_port sci_ports[SCI_NPORTS] = {
1274 .port = { 1274 .port = {
1275 .membase = (void *)0xfe600000, 1275 .membase = (void *)0xfe600000,
1276 .mapbase = 0xfe600000, 1276 .mapbase = 0xfe600000,
1277 .iotype = SERIAL_IO_MEM, 1277 .iotype = UPIO_MEM,
1278 .irq = 55, 1278 .irq = 55,
1279 .ops = &sci_uart_ops, 1279 .ops = &sci_uart_ops,
1280 .flags = ASYNC_BOOT_AUTOCONF, 1280 .flags = UPF_BOOT_AUTOCONF,
1281 .line = 0, 1281 .line = 0,
1282 }, 1282 },
1283 .type = PORT_SCIF, 1283 .type = PORT_SCIF,
@@ -1288,10 +1288,10 @@ static struct sci_port sci_ports[SCI_NPORTS] = {
1288 .port = { 1288 .port = {
1289 .membase = (void *)0xfe610000, 1289 .membase = (void *)0xfe610000,
1290 .mapbase = 0xfe610000, 1290 .mapbase = 0xfe610000,
1291 .iotype = SERIAL_IO_MEM, 1291 .iotype = UPIO_MEM,
1292 .irq = 75, 1292 .irq = 75,
1293 .ops = &sci_uart_ops, 1293 .ops = &sci_uart_ops,
1294 .flags = ASYNC_BOOT_AUTOCONF, 1294 .flags = UPF_BOOT_AUTOCONF,
1295 .line = 1, 1295 .line = 1,
1296 }, 1296 },
1297 .type = PORT_SCIF, 1297 .type = PORT_SCIF,
@@ -1302,10 +1302,10 @@ static struct sci_port sci_ports[SCI_NPORTS] = {
1302 .port = { 1302 .port = {
1303 .membase = (void *)0xfe620000, 1303 .membase = (void *)0xfe620000,
1304 .mapbase = 0xfe620000, 1304 .mapbase = 0xfe620000,
1305 .iotype = SERIAL_IO_MEM, 1305 .iotype = UPIO_MEM,
1306 .irq = 79, 1306 .irq = 79,
1307 .ops = &sci_uart_ops, 1307 .ops = &sci_uart_ops,
1308 .flags = ASYNC_BOOT_AUTOCONF, 1308 .flags = UPF_BOOT_AUTOCONF,
1309 .line = 2, 1309 .line = 2,
1310 }, 1310 },
1311 .type = PORT_SCIF, 1311 .type = PORT_SCIF,
@@ -1317,10 +1317,10 @@ static struct sci_port sci_ports[SCI_NPORTS] = {
1317 .port = { 1317 .port = {
1318 .membase = (void *)0xffe80000, 1318 .membase = (void *)0xffe80000,
1319 .mapbase = 0xffe80000, 1319 .mapbase = 0xffe80000,
1320 .iotype = SERIAL_IO_MEM, 1320 .iotype = UPIO_MEM,
1321 .irq = 43, 1321 .irq = 43,
1322 .ops = &sci_uart_ops, 1322 .ops = &sci_uart_ops,
1323 .flags = ASYNC_BOOT_AUTOCONF, 1323 .flags = UPF_BOOT_AUTOCONF,
1324 .line = 0, 1324 .line = 0,
1325 }, 1325 },
1326 .type = PORT_SCIF, 1326 .type = PORT_SCIF,
@@ -1332,10 +1332,10 @@ static struct sci_port sci_ports[SCI_NPORTS] = {
1332 .port = { 1332 .port = {
1333 .membase = (void *)0xffe00000, 1333 .membase = (void *)0xffe00000,
1334 .mapbase = 0xffe00000, 1334 .mapbase = 0xffe00000,
1335 .iotype = SERIAL_IO_MEM, 1335 .iotype = UPIO_MEM,
1336 .irq = 26, 1336 .irq = 26,
1337 .ops = &sci_uart_ops, 1337 .ops = &sci_uart_ops,
1338 .flags = ASYNC_BOOT_AUTOCONF, 1338 .flags = UPF_BOOT_AUTOCONF,
1339 .line = 0, 1339 .line = 0,
1340 }, 1340 },
1341 .type = PORT_SCIF, 1341 .type = PORT_SCIF,
@@ -1346,10 +1346,10 @@ static struct sci_port sci_ports[SCI_NPORTS] = {
1346 .port = { 1346 .port = {
1347 .membase = (void *)0xffe80000, 1347 .membase = (void *)0xffe80000,
1348 .mapbase = 0xffe80000, 1348 .mapbase = 0xffe80000,
1349 .iotype = SERIAL_IO_MEM, 1349 .iotype = UPIO_MEM,
1350 .irq = 43, 1350 .irq = 43,
1351 .ops = &sci_uart_ops, 1351 .ops = &sci_uart_ops,
1352 .flags = ASYNC_BOOT_AUTOCONF, 1352 .flags = UPF_BOOT_AUTOCONF,
1353 .line = 1, 1353 .line = 1,
1354 }, 1354 },
1355 .type = PORT_SCIF, 1355 .type = PORT_SCIF,
@@ -1359,10 +1359,10 @@ static struct sci_port sci_ports[SCI_NPORTS] = {
1359#elif defined(CONFIG_CPU_SUBTYPE_SH5_101) || defined(CONFIG_CPU_SUBTYPE_SH5_103) 1359#elif defined(CONFIG_CPU_SUBTYPE_SH5_101) || defined(CONFIG_CPU_SUBTYPE_SH5_103)
1360 { 1360 {
1361 .port = { 1361 .port = {
1362 .iotype = SERIAL_IO_MEM, 1362 .iotype = UPIO_MEM,
1363 .irq = 42, 1363 .irq = 42,
1364 .ops = &sci_uart_ops, 1364 .ops = &sci_uart_ops,
1365 .flags = ASYNC_BOOT_AUTOCONF, 1365 .flags = UPF_BOOT_AUTOCONF,
1366 .line = 0, 1366 .line = 0,
1367 }, 1367 },
1368 .type = PORT_SCIF, 1368 .type = PORT_SCIF,
@@ -1374,10 +1374,10 @@ static struct sci_port sci_ports[SCI_NPORTS] = {
1374 .port = { 1374 .port = {
1375 .membase = (void *)0x00ffffb0, 1375 .membase = (void *)0x00ffffb0,
1376 .mapbase = 0x00ffffb0, 1376 .mapbase = 0x00ffffb0,
1377 .iotype = SERIAL_IO_MEM, 1377 .iotype = UPIO_MEM,
1378 .irq = 54, 1378 .irq = 54,
1379 .ops = &sci_uart_ops, 1379 .ops = &sci_uart_ops,
1380 .flags = ASYNC_BOOT_AUTOCONF, 1380 .flags = UPF_BOOT_AUTOCONF,
1381 .line = 0, 1381 .line = 0,
1382 }, 1382 },
1383 .type = PORT_SCI, 1383 .type = PORT_SCI,
@@ -1388,10 +1388,10 @@ static struct sci_port sci_ports[SCI_NPORTS] = {
1388 .port = { 1388 .port = {
1389 .membase = (void *)0x00ffffb8, 1389 .membase = (void *)0x00ffffb8,
1390 .mapbase = 0x00ffffb8, 1390 .mapbase = 0x00ffffb8,
1391 .iotype = SERIAL_IO_MEM, 1391 .iotype = UPIO_MEM,
1392 .irq = 58, 1392 .irq = 58,
1393 .ops = &sci_uart_ops, 1393 .ops = &sci_uart_ops,
1394 .flags = ASYNC_BOOT_AUTOCONF, 1394 .flags = UPF_BOOT_AUTOCONF,
1395 .line = 1, 1395 .line = 1,
1396 }, 1396 },
1397 .type = PORT_SCI, 1397 .type = PORT_SCI,
@@ -1402,10 +1402,10 @@ static struct sci_port sci_ports[SCI_NPORTS] = {
1402 .port = { 1402 .port = {
1403 .membase = (void *)0x00ffffc0, 1403 .membase = (void *)0x00ffffc0,
1404 .mapbase = 0x00ffffc0, 1404 .mapbase = 0x00ffffc0,
1405 .iotype = SERIAL_IO_MEM, 1405 .iotype = UPIO_MEM,
1406 .irq = 62, 1406 .irq = 62,
1407 .ops = &sci_uart_ops, 1407 .ops = &sci_uart_ops,
1408 .flags = ASYNC_BOOT_AUTOCONF, 1408 .flags = UPF_BOOT_AUTOCONF,
1409 .line = 2, 1409 .line = 2,
1410 }, 1410 },
1411 .type = PORT_SCI, 1411 .type = PORT_SCI,
@@ -1417,10 +1417,10 @@ static struct sci_port sci_ports[SCI_NPORTS] = {
1417 .port = { 1417 .port = {
1418 .membase = (void *)0x00ffff78, 1418 .membase = (void *)0x00ffff78,
1419 .mapbase = 0x00ffff78, 1419 .mapbase = 0x00ffff78,
1420 .iotype = SERIAL_IO_MEM, 1420 .iotype = UPIO_MEM,
1421 .irq = 90, 1421 .irq = 90,
1422 .ops = &sci_uart_ops, 1422 .ops = &sci_uart_ops,
1423 .flags = ASYNC_BOOT_AUTOCONF, 1423 .flags = UPF_BOOT_AUTOCONF,
1424 .line = 0, 1424 .line = 0,
1425 }, 1425 },
1426 .type = PORT_SCI, 1426 .type = PORT_SCI,
@@ -1431,10 +1431,10 @@ static struct sci_port sci_ports[SCI_NPORTS] = {
1431 .port = { 1431 .port = {
1432 .membase = (void *)0x00ffff80, 1432 .membase = (void *)0x00ffff80,
1433 .mapbase = 0x00ffff80, 1433 .mapbase = 0x00ffff80,
1434 .iotype = SERIAL_IO_MEM, 1434 .iotype = UPIO_MEM,
1435 .irq = 94, 1435 .irq = 94,
1436 .ops = &sci_uart_ops, 1436 .ops = &sci_uart_ops,
1437 .flags = ASYNC_BOOT_AUTOCONF, 1437 .flags = UPF_BOOT_AUTOCONF,
1438 .line = 1, 1438 .line = 1,
1439 }, 1439 },
1440 .type = PORT_SCI, 1440 .type = PORT_SCI,
@@ -1445,10 +1445,10 @@ static struct sci_port sci_ports[SCI_NPORTS] = {
1445 .port = { 1445 .port = {
1446 .membase = (void *)0x00ffff88, 1446 .membase = (void *)0x00ffff88,
1447 .mapbase = 0x00ffff88, 1447 .mapbase = 0x00ffff88,
1448 .iotype = SERIAL_IO_MEM, 1448 .iotype = UPIO_MEM,
1449 .irq = 98, 1449 .irq = 98,
1450 .ops = &sci_uart_ops, 1450 .ops = &sci_uart_ops,
1451 .flags = ASYNC_BOOT_AUTOCONF, 1451 .flags = UPF_BOOT_AUTOCONF,
1452 .line = 2, 1452 .line = 2,
1453 }, 1453 },
1454 .type = PORT_SCI, 1454 .type = PORT_SCI,
diff --git a/drivers/serial/sunsu.c b/drivers/serial/sunsu.c
index 9a3665b34d97..bc67442c6b4c 100644
--- a/drivers/serial/sunsu.c
+++ b/drivers/serial/sunsu.c
@@ -669,7 +669,7 @@ static int sunsu_startup(struct uart_port *port)
669 * if it is, then bail out, because there's likely no UART 669 * if it is, then bail out, because there's likely no UART
670 * here. 670 * here.
671 */ 671 */
672 if (!(up->port.flags & ASYNC_BUGGY_UART) && 672 if (!(up->port.flags & UPF_BUGGY_UART) &&
673 (serial_inp(up, UART_LSR) == 0xff)) { 673 (serial_inp(up, UART_LSR) == 0xff)) {
674 printk("ttyS%d: LSR safety check engaged!\n", up->port.line); 674 printk("ttyS%d: LSR safety check engaged!\n", up->port.line);
675 return -ENODEV; 675 return -ENODEV;
@@ -707,7 +707,7 @@ static int sunsu_startup(struct uart_port *port)
707 up->ier = UART_IER_RLSI | UART_IER_RDI; 707 up->ier = UART_IER_RLSI | UART_IER_RDI;
708 serial_outp(up, UART_IER, up->ier); 708 serial_outp(up, UART_IER, up->ier);
709 709
710 if (up->port.flags & ASYNC_FOURPORT) { 710 if (up->port.flags & UPF_FOURPORT) {
711 unsigned int icp; 711 unsigned int icp;
712 /* 712 /*
713 * Enable interrupts on the AST Fourport board 713 * Enable interrupts on the AST Fourport board
@@ -740,7 +740,7 @@ static void sunsu_shutdown(struct uart_port *port)
740 serial_outp(up, UART_IER, 0); 740 serial_outp(up, UART_IER, 0);
741 741
742 spin_lock_irqsave(&up->port.lock, flags); 742 spin_lock_irqsave(&up->port.lock, flags);
743 if (up->port.flags & ASYNC_FOURPORT) { 743 if (up->port.flags & UPF_FOURPORT) {
744 /* reset interrupts on the AST Fourport board */ 744 /* reset interrupts on the AST Fourport board */
745 inb((up->port.iobase & 0xfe0) | 0x1f); 745 inb((up->port.iobase & 0xfe0) | 0x1f);
746 up->port.mctrl |= TIOCM_OUT1; 746 up->port.mctrl |= TIOCM_OUT1;
@@ -1132,7 +1132,7 @@ ebus_done:
1132 1132
1133 spin_lock_irqsave(&up->port.lock, flags); 1133 spin_lock_irqsave(&up->port.lock, flags);
1134 1134
1135 if (!(up->port.flags & ASYNC_BUGGY_UART)) { 1135 if (!(up->port.flags & UPF_BUGGY_UART)) {
1136 /* 1136 /*
1137 * Do a simple existence test first; if we fail this, there's 1137 * Do a simple existence test first; if we fail this, there's
1138 * no point trying anything else. 1138 * no point trying anything else.
@@ -1170,7 +1170,7 @@ ebus_done:
1170 * manufacturer would be stupid enough to design a board 1170 * manufacturer would be stupid enough to design a board
1171 * that conflicts with COM 1-4 --- we hope! 1171 * that conflicts with COM 1-4 --- we hope!
1172 */ 1172 */
1173 if (!(up->port.flags & ASYNC_SKIP_TEST)) { 1173 if (!(up->port.flags & UPF_SKIP_TEST)) {
1174 serial_outp(up, UART_MCR, UART_MCR_LOOP | 0x0A); 1174 serial_outp(up, UART_MCR, UART_MCR_LOOP | 0x0A);
1175 status1 = serial_inp(up, UART_MSR) & 0xF0; 1175 status1 = serial_inp(up, UART_MSR) & 0xF0;
1176 serial_outp(up, UART_MCR, save_mcr); 1176 serial_outp(up, UART_MCR, save_mcr);
@@ -1371,7 +1371,7 @@ static __inline__ void wait_for_xmitr(struct uart_sunsu_port *up)
1371 } while ((status & BOTH_EMPTY) != BOTH_EMPTY); 1371 } while ((status & BOTH_EMPTY) != BOTH_EMPTY);
1372 1372
1373 /* Wait up to 1s for flow control if necessary */ 1373 /* Wait up to 1s for flow control if necessary */
1374 if (up->port.flags & ASYNC_CONS_FLOW) { 1374 if (up->port.flags & UPF_CONS_FLOW) {
1375 tmout = 1000000; 1375 tmout = 1000000;
1376 while (--tmout && 1376 while (--tmout &&
1377 ((serial_in(up, UART_MSR) & UART_MSR_CTS) == 0)) 1377 ((serial_in(up, UART_MSR) & UART_MSR_CTS) == 0))
@@ -1513,7 +1513,7 @@ static int __init sunsu_serial_init(void)
1513 up->su_type == SU_PORT_KBD) 1513 up->su_type == SU_PORT_KBD)
1514 continue; 1514 continue;
1515 1515
1516 up->port.flags |= ASYNC_BOOT_AUTOCONF; 1516 up->port.flags |= UPF_BOOT_AUTOCONF;
1517 up->port.type = PORT_UNKNOWN; 1517 up->port.type = PORT_UNKNOWN;
1518 up->port.uartclk = (SU_BASE_BAUD * 16); 1518 up->port.uartclk = (SU_BASE_BAUD * 16);
1519 1519
diff --git a/include/linux/serial_8250.h b/include/linux/serial_8250.h
index cee302aefdb7..73b464f0926a 100644
--- a/include/linux/serial_8250.h
+++ b/include/linux/serial_8250.h
@@ -26,7 +26,7 @@ struct plat_serial8250_port {
26 unsigned char regshift; /* register shift */ 26 unsigned char regshift; /* register shift */
27 unsigned char iotype; /* UPIO_* */ 27 unsigned char iotype; /* UPIO_* */
28 unsigned char hub6; 28 unsigned char hub6;
29 unsigned int flags; /* UPF_* flags */ 29 upf_t flags; /* UPF_* flags */
30}; 30};
31 31
32/* 32/*
diff --git a/include/linux/serial_core.h b/include/linux/serial_core.h
index ec351005bf9d..4041122dabfc 100644
--- a/include/linux/serial_core.h
+++ b/include/linux/serial_core.h
@@ -203,6 +203,8 @@ struct uart_icount {
203 __u32 buf_overrun; 203 __u32 buf_overrun;
204}; 204};
205 205
206typedef unsigned int __bitwise__ upf_t;
207
206struct uart_port { 208struct uart_port {
207 spinlock_t lock; /* port lock */ 209 spinlock_t lock; /* port lock */
208 unsigned int iobase; /* in/out[bwl] */ 210 unsigned int iobase; /* in/out[bwl] */
@@ -230,36 +232,34 @@ struct uart_port {
230 unsigned long sysrq; /* sysrq timeout */ 232 unsigned long sysrq; /* sysrq timeout */
231#endif 233#endif
232 234
233 unsigned int flags; 235 upf_t flags;
234 236
235#define UPF_FOURPORT (1 << 1) 237#define UPF_FOURPORT ((__force upf_t) (1 << 1))
236#define UPF_SAK (1 << 2) 238#define UPF_SAK ((__force upf_t) (1 << 2))
237#define UPF_SPD_MASK (0x1030) 239#define UPF_SPD_MASK ((__force upf_t) (0x1030))
238#define UPF_SPD_HI (0x0010) 240#define UPF_SPD_HI ((__force upf_t) (0x0010))
239#define UPF_SPD_VHI (0x0020) 241#define UPF_SPD_VHI ((__force upf_t) (0x0020))
240#define UPF_SPD_CUST (0x0030) 242#define UPF_SPD_CUST ((__force upf_t) (0x0030))
241#define UPF_SPD_SHI (0x1000) 243#define UPF_SPD_SHI ((__force upf_t) (0x1000))
242#define UPF_SPD_WARP (0x1010) 244#define UPF_SPD_WARP ((__force upf_t) (0x1010))
243#define UPF_SKIP_TEST (1 << 6) 245#define UPF_SKIP_TEST ((__force upf_t) (1 << 6))
244#define UPF_AUTO_IRQ (1 << 7) 246#define UPF_AUTO_IRQ ((__force upf_t) (1 << 7))
245#define UPF_HARDPPS_CD (1 << 11) 247#define UPF_HARDPPS_CD ((__force upf_t) (1 << 11))
246#define UPF_LOW_LATENCY (1 << 13) 248#define UPF_LOW_LATENCY ((__force upf_t) (1 << 13))
247#define UPF_BUGGY_UART (1 << 14) 249#define UPF_BUGGY_UART ((__force upf_t) (1 << 14))
248#define UPF_AUTOPROBE (1 << 15) 250#define UPF_MAGIC_MULTIPLIER ((__force upf_t) (1 << 16))
249#define UPF_MAGIC_MULTIPLIER (1 << 16) 251#define UPF_CONS_FLOW ((__force upf_t) (1 << 23))
250#define UPF_BOOT_ONLYMCA (1 << 22) 252#define UPF_SHARE_IRQ ((__force upf_t) (1 << 24))
251#define UPF_CONS_FLOW (1 << 23) 253#define UPF_BOOT_AUTOCONF ((__force upf_t) (1 << 28))
252#define UPF_SHARE_IRQ (1 << 24) 254#define UPF_IOREMAP ((__force upf_t) (1 << 31))
253#define UPF_BOOT_AUTOCONF (1 << 28) 255
254#define UPF_IOREMAP (1 << 31) 256#define UPF_CHANGE_MASK ((__force upf_t) (0x17fff))
255 257#define UPF_USR_MASK ((__force upf_t) (UPF_SPD_MASK|UPF_LOW_LATENCY))
256#define UPF_CHANGE_MASK (0x17fff)
257#define UPF_USR_MASK (UPF_SPD_MASK|UPF_LOW_LATENCY)
258 258
259 unsigned int mctrl; /* current modem ctrl settings */ 259 unsigned int mctrl; /* current modem ctrl settings */
260 unsigned int timeout; /* character-based timeout */ 260 unsigned int timeout; /* character-based timeout */
261 unsigned int type; /* port type */ 261 unsigned int type; /* port type */
262 struct uart_ops *ops; 262 const struct uart_ops *ops;
263 unsigned int custom_divisor; 263 unsigned int custom_divisor;
264 unsigned int line; /* port index */ 264 unsigned int line; /* port index */
265 unsigned long mapbase; /* for ioremap */ 265 unsigned long mapbase; /* for ioremap */
@@ -289,6 +289,9 @@ struct uart_state {
289}; 289};
290 290
291#define UART_XMIT_SIZE PAGE_SIZE 291#define UART_XMIT_SIZE PAGE_SIZE
292
293typedef unsigned int __bitwise__ uif_t;
294
292/* 295/*
293 * This is the state information which is only valid when the port 296 * This is the state information which is only valid when the port
294 * is open; it may be freed by the core driver once the device has 297 * is open; it may be freed by the core driver once the device has
@@ -298,17 +301,16 @@ struct uart_state {
298struct uart_info { 301struct uart_info {
299 struct tty_struct *tty; 302 struct tty_struct *tty;
300 struct circ_buf xmit; 303 struct circ_buf xmit;
301 unsigned int flags; 304 uif_t flags;
302 305
303/* 306/*
304 * These are the flags that specific to info->flags, and reflect our 307 * Definitions for info->flags. These are _private_ to serial_core, and
305 * internal state. They can not be accessed via port->flags. Low 308 * are specific to this structure. They may be queried by low level drivers.
306 * level drivers must not change these, but may query them instead.
307 */ 309 */
308#define UIF_CHECK_CD (1 << 25) 310#define UIF_CHECK_CD ((__force uif_t) (1 << 25))
309#define UIF_CTS_FLOW (1 << 26) 311#define UIF_CTS_FLOW ((__force uif_t) (1 << 26))
310#define UIF_NORMAL_ACTIVE (1 << 29) 312#define UIF_NORMAL_ACTIVE ((__force uif_t) (1 << 29))
311#define UIF_INITIALIZED (1 << 31) 313#define UIF_INITIALIZED ((__force uif_t) (1 << 31))
312 314
313 int blocked_open; 315 int blocked_open;
314 316
@@ -430,7 +432,7 @@ static inline int uart_handle_break(struct uart_port *port)
430 port->sysrq = 0; 432 port->sysrq = 0;
431 } 433 }
432#endif 434#endif
433 if (info->flags & UPF_SAK) 435 if (port->flags & UPF_SAK)
434 do_SAK(info->tty); 436 do_SAK(info->tty);
435 return 0; 437 return 0;
436} 438}