diff options
| -rw-r--r-- | drivers/char/tty_port.c | 7 | ||||
| -rw-r--r-- | drivers/serial/bcm63xx_uart.c | 4 | ||||
| -rw-r--r-- | drivers/serial/of_serial.c | 1 |
3 files changed, 8 insertions, 4 deletions
diff --git a/drivers/char/tty_port.c b/drivers/char/tty_port.c index 2e8552dc5ed..c63f3d33914 100644 --- a/drivers/char/tty_port.c +++ b/drivers/char/tty_port.c | |||
| @@ -219,8 +219,11 @@ int tty_port_block_til_ready(struct tty_port *port, | |||
| 219 | 219 | ||
| 220 | /* if non-blocking mode is set we can pass directly to open unless | 220 | /* if non-blocking mode is set we can pass directly to open unless |
| 221 | the port has just hung up or is in another error state */ | 221 | the port has just hung up or is in another error state */ |
| 222 | if ((filp->f_flags & O_NONBLOCK) || | 222 | if (tty->flags & (1 << TTY_IO_ERROR)) { |
| 223 | (tty->flags & (1 << TTY_IO_ERROR))) { | 223 | port->flags |= ASYNC_NORMAL_ACTIVE; |
| 224 | return 0; | ||
| 225 | } | ||
| 226 | if (filp->f_flags & O_NONBLOCK) { | ||
| 224 | /* Indicate we are open */ | 227 | /* Indicate we are open */ |
| 225 | if (tty->termios->c_cflag & CBAUD) | 228 | if (tty->termios->c_cflag & CBAUD) |
| 226 | tty_port_raise_dtr_rts(port); | 229 | tty_port_raise_dtr_rts(port); |
diff --git a/drivers/serial/bcm63xx_uart.c b/drivers/serial/bcm63xx_uart.c index beddaa6e906..37ad0c44993 100644 --- a/drivers/serial/bcm63xx_uart.c +++ b/drivers/serial/bcm63xx_uart.c | |||
| @@ -242,7 +242,7 @@ static void bcm_uart_do_rx(struct uart_port *port) | |||
| 242 | * higher than fifo size anyway since we're much faster than | 242 | * higher than fifo size anyway since we're much faster than |
| 243 | * serial port */ | 243 | * serial port */ |
| 244 | max_count = 32; | 244 | max_count = 32; |
| 245 | tty = port->info->port.tty; | 245 | tty = port->state->port.tty; |
| 246 | do { | 246 | do { |
| 247 | unsigned int iestat, c, cstat; | 247 | unsigned int iestat, c, cstat; |
| 248 | char flag; | 248 | char flag; |
| @@ -318,7 +318,7 @@ static void bcm_uart_do_tx(struct uart_port *port) | |||
| 318 | return; | 318 | return; |
| 319 | } | 319 | } |
| 320 | 320 | ||
| 321 | xmit = &port->info->xmit; | 321 | xmit = &port->state->xmit; |
| 322 | if (uart_circ_empty(xmit)) | 322 | if (uart_circ_empty(xmit)) |
| 323 | goto txq_empty; | 323 | goto txq_empty; |
| 324 | 324 | ||
diff --git a/drivers/serial/of_serial.c b/drivers/serial/of_serial.c index 02406ba6da1..cdf172eda2e 100644 --- a/drivers/serial/of_serial.c +++ b/drivers/serial/of_serial.c | |||
| @@ -161,6 +161,7 @@ static int of_platform_serial_remove(struct of_device *ofdev) | |||
| 161 | static struct of_device_id __devinitdata of_platform_serial_table[] = { | 161 | static struct of_device_id __devinitdata of_platform_serial_table[] = { |
| 162 | { .type = "serial", .compatible = "ns8250", .data = (void *)PORT_8250, }, | 162 | { .type = "serial", .compatible = "ns8250", .data = (void *)PORT_8250, }, |
| 163 | { .type = "serial", .compatible = "ns16450", .data = (void *)PORT_16450, }, | 163 | { .type = "serial", .compatible = "ns16450", .data = (void *)PORT_16450, }, |
| 164 | { .type = "serial", .compatible = "ns16550a", .data = (void *)PORT_16550A, }, | ||
| 164 | { .type = "serial", .compatible = "ns16550", .data = (void *)PORT_16550, }, | 165 | { .type = "serial", .compatible = "ns16550", .data = (void *)PORT_16550, }, |
| 165 | { .type = "serial", .compatible = "ns16750", .data = (void *)PORT_16750, }, | 166 | { .type = "serial", .compatible = "ns16750", .data = (void *)PORT_16750, }, |
| 166 | { .type = "serial", .compatible = "ns16850", .data = (void *)PORT_16850, }, | 167 | { .type = "serial", .compatible = "ns16850", .data = (void *)PORT_16850, }, |
