diff options
Diffstat (limited to 'xen/drivers/char/pl011.c')
-rw-r--r-- | xen/drivers/char/pl011.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/xen/drivers/char/pl011.c b/xen/drivers/char/pl011.c index 3ec6e109d7..3386e2bc28 100644 --- a/xen/drivers/char/pl011.c +++ b/xen/drivers/char/pl011.c @@ -85,6 +85,7 @@ static void __init pl011_init_preirq(struct serial_port *port) { struct pl011 *uart = port->uart; unsigned int divisor; + unsigned int cr; /* No interrupts, please. */ pl011_write(uart, IMSC, 0); @@ -120,8 +121,10 @@ static void __init pl011_init_preirq(struct serial_port *port) pl011_write(uart, IMSC, 0); pl011_write(uart, ICR, ALLI); - /* Enable the UART for RX and TX; no flow ctrl */ - pl011_write(uart, CR, RXE | TXE | UARTEN); + /* Enable the UART for RX and TX; keep RTS and DTR */ + cr = pl011_read(uart, CR); + cr &= RTS | DTR; + pl011_write(uart, CR, cr | RXE | TXE | UARTEN); } static void __init pl011_init_postirq(struct serial_port *port) |