diff options
Diffstat (limited to 'xen/drivers/char/ns16550.c')
-rw-r--r-- | xen/drivers/char/ns16550.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/xen/drivers/char/ns16550.c b/xen/drivers/char/ns16550.c index 12c5f84eb0..342982cb1e 100644 --- a/xen/drivers/char/ns16550.c +++ b/xen/drivers/char/ns16550.c @@ -125,6 +125,8 @@ static struct ns16550 { #define RESUME_DELAY MILLISECS(10) #define RESUME_RETRIES 100 +static void ns16550_delayed_resume(void *data); + static char ns_read_reg(struct ns16550 *uart, int reg) { if ( uart->remapped_io_base == NULL ) @@ -306,6 +308,7 @@ static void __init ns16550_init_postirq(struct serial_port *port) serial_async_transmit(port); init_timer(&uart->timer, ns16550_poll, port, 0); + init_timer(&uart->resume_timer, ns16550_delayed_resume, port, 0); /* Calculate time to fill RX FIFO and/or empty TX FIFO for polling. */ bits = uart->data_bits + uart->stop_bits + !!uart->parity; @@ -392,7 +395,6 @@ static void ns16550_resume(struct serial_port *port) if ( ns16550_ioport_invalid(uart) ) { delayed_resume_tries = RESUME_RETRIES; - init_timer(&uart->resume_timer, ns16550_delayed_resume, port, 0); set_timer(&uart->resume_timer, NOW() + RESUME_DELAY); } else |