diff options
-rw-r--r-- | drivers/serial/serial_core.c | 26 | ||||
-rw-r--r-- | include/linux/serial_core.h | 2 | ||||
-rw-r--r-- | include/linux/tty.h | 4 |
3 files changed, 15 insertions, 17 deletions
diff --git a/drivers/serial/serial_core.c b/drivers/serial/serial_core.c index ea53b6f224b0..2d63b13e2f7e 100644 --- a/drivers/serial/serial_core.c +++ b/drivers/serial/serial_core.c | |||
@@ -651,10 +651,10 @@ static int uart_get_info(struct uart_state *state, | |||
651 | tmp.flags = port->flags; | 651 | tmp.flags = port->flags; |
652 | tmp.xmit_fifo_size = port->fifosize; | 652 | tmp.xmit_fifo_size = port->fifosize; |
653 | tmp.baud_base = port->uartclk / 16; | 653 | tmp.baud_base = port->uartclk / 16; |
654 | tmp.close_delay = state->close_delay / 10; | 654 | tmp.close_delay = state->port.close_delay / 10; |
655 | tmp.closing_wait = state->closing_wait == USF_CLOSING_WAIT_NONE ? | 655 | tmp.closing_wait = state->port.closing_wait == USF_CLOSING_WAIT_NONE ? |
656 | ASYNC_CLOSING_WAIT_NONE : | 656 | ASYNC_CLOSING_WAIT_NONE : |
657 | state->closing_wait / 10; | 657 | state->port.closing_wait / 10; |
658 | tmp.custom_divisor = port->custom_divisor; | 658 | tmp.custom_divisor = port->custom_divisor; |
659 | tmp.hub6 = port->hub6; | 659 | tmp.hub6 = port->hub6; |
660 | tmp.io_type = port->iotype; | 660 | tmp.io_type = port->iotype; |
@@ -724,8 +724,8 @@ static int uart_set_info(struct uart_state *state, | |||
724 | retval = -EPERM; | 724 | retval = -EPERM; |
725 | if (change_irq || change_port || | 725 | if (change_irq || change_port || |
726 | (new_serial.baud_base != port->uartclk / 16) || | 726 | (new_serial.baud_base != port->uartclk / 16) || |
727 | (close_delay != state->close_delay) || | 727 | (close_delay != state->port.close_delay) || |
728 | (closing_wait != state->closing_wait) || | 728 | (closing_wait != state->port.closing_wait) || |
729 | (new_serial.xmit_fifo_size && | 729 | (new_serial.xmit_fifo_size && |
730 | new_serial.xmit_fifo_size != port->fifosize) || | 730 | new_serial.xmit_fifo_size != port->fifosize) || |
731 | (((new_flags ^ old_flags) & ~UPF_USR_MASK) != 0)) | 731 | (((new_flags ^ old_flags) & ~UPF_USR_MASK) != 0)) |
@@ -834,8 +834,8 @@ static int uart_set_info(struct uart_state *state, | |||
834 | port->flags = (port->flags & ~UPF_CHANGE_MASK) | | 834 | port->flags = (port->flags & ~UPF_CHANGE_MASK) | |
835 | (new_flags & UPF_CHANGE_MASK); | 835 | (new_flags & UPF_CHANGE_MASK); |
836 | port->custom_divisor = new_serial.custom_divisor; | 836 | port->custom_divisor = new_serial.custom_divisor; |
837 | state->close_delay = close_delay; | 837 | state->port.close_delay = close_delay; |
838 | state->closing_wait = closing_wait; | 838 | state->port.closing_wait = closing_wait; |
839 | if (new_serial.xmit_fifo_size) | 839 | if (new_serial.xmit_fifo_size) |
840 | port->fifosize = new_serial.xmit_fifo_size; | 840 | port->fifosize = new_serial.xmit_fifo_size; |
841 | if (state->port.tty) | 841 | if (state->port.tty) |
@@ -1297,8 +1297,8 @@ static void uart_close(struct tty_struct *tty, struct file *filp) | |||
1297 | */ | 1297 | */ |
1298 | tty->closing = 1; | 1298 | tty->closing = 1; |
1299 | 1299 | ||
1300 | if (state->closing_wait != USF_CLOSING_WAIT_NONE) | 1300 | if (state->port.closing_wait != USF_CLOSING_WAIT_NONE) |
1301 | tty_wait_until_sent(tty, msecs_to_jiffies(state->closing_wait)); | 1301 | tty_wait_until_sent(tty, msecs_to_jiffies(state->port.closing_wait)); |
1302 | 1302 | ||
1303 | /* | 1303 | /* |
1304 | * At this point, we stop accepting input. To do this, we | 1304 | * At this point, we stop accepting input. To do this, we |
@@ -1326,8 +1326,8 @@ static void uart_close(struct tty_struct *tty, struct file *filp) | |||
1326 | state->port.tty = NULL; | 1326 | state->port.tty = NULL; |
1327 | 1327 | ||
1328 | if (state->port.blocked_open) { | 1328 | if (state->port.blocked_open) { |
1329 | if (state->close_delay) | 1329 | if (state->port.close_delay) |
1330 | msleep_interruptible(state->close_delay); | 1330 | msleep_interruptible(state->port.close_delay); |
1331 | } else if (!uart_console(port)) { | 1331 | } else if (!uart_console(port)) { |
1332 | uart_change_pm(state, 3); | 1332 | uart_change_pm(state, 3); |
1333 | } | 1333 | } |
@@ -2358,11 +2358,11 @@ int uart_register_driver(struct uart_driver *drv) | |||
2358 | for (i = 0; i < drv->nr; i++) { | 2358 | for (i = 0; i < drv->nr; i++) { |
2359 | struct uart_state *state = drv->state + i; | 2359 | struct uart_state *state = drv->state + i; |
2360 | 2360 | ||
2361 | state->close_delay = 500; /* .5 seconds */ | ||
2362 | state->closing_wait = 30000; /* 30 seconds */ | ||
2363 | mutex_init(&state->mutex); | 2361 | mutex_init(&state->mutex); |
2364 | 2362 | ||
2365 | tty_port_init(&state->port); | 2363 | tty_port_init(&state->port); |
2364 | state->port.close_delay = 500; /* .5 seconds */ | ||
2365 | state->port.closing_wait = 30000; /* 30 seconds */ | ||
2366 | init_waitqueue_head(&state->delta_msr_wait); | 2366 | init_waitqueue_head(&state->delta_msr_wait); |
2367 | tasklet_init(&state->tlet, uart_tasklet_action, | 2367 | tasklet_init(&state->tlet, uart_tasklet_action, |
2368 | (unsigned long)state); | 2368 | (unsigned long)state); |
diff --git a/include/linux/serial_core.h b/include/linux/serial_core.h index c1542703fbab..fd11d4d5a571 100644 --- a/include/linux/serial_core.h +++ b/include/linux/serial_core.h | |||
@@ -350,8 +350,6 @@ typedef unsigned int __bitwise__ uif_t; | |||
350 | */ | 350 | */ |
351 | struct uart_state { | 351 | struct uart_state { |
352 | struct tty_port port; | 352 | struct tty_port port; |
353 | unsigned int close_delay; /* msec */ | ||
354 | unsigned int closing_wait; /* msec */ | ||
355 | 353 | ||
356 | #define USF_CLOSING_WAIT_INF (0) | 354 | #define USF_CLOSING_WAIT_INF (0) |
357 | #define USF_CLOSING_WAIT_NONE (~0U) | 355 | #define USF_CLOSING_WAIT_NONE (~0U) |
diff --git a/include/linux/tty.h b/include/linux/tty.h index ecb3d1ba3017..9fdc3d84baad 100644 --- a/include/linux/tty.h +++ b/include/linux/tty.h | |||
@@ -206,8 +206,8 @@ struct tty_port { | |||
206 | unsigned long flags; /* TTY flags ASY_*/ | 206 | unsigned long flags; /* TTY flags ASY_*/ |
207 | struct mutex mutex; /* Locking */ | 207 | struct mutex mutex; /* Locking */ |
208 | unsigned char *xmit_buf; /* Optional buffer */ | 208 | unsigned char *xmit_buf; /* Optional buffer */ |
209 | int close_delay; /* Close port delay */ | 209 | unsigned int close_delay; /* Close port delay */ |
210 | int closing_wait; /* Delay for output */ | 210 | unsigned int closing_wait; /* Delay for output */ |
211 | int drain_delay; /* Set to zero if no pure time | 211 | int drain_delay; /* Set to zero if no pure time |
212 | based drain is needed else | 212 | based drain is needed else |
213 | set to size of fifo */ | 213 | set to size of fifo */ |