{
struct pl011 *uart = port->uart;
unsigned int divisor;
+ unsigned int cr;
/* No interrupts, please. */
pl011_write(uart, IMSC, 0);
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)
#define DMACR (0x48)
/* CR bits */
+#define CTSEN (1<<15) /* automatic CTS hardware flow control */
+#define RTSEN (1<<14) /* automatic RTS hardware flow control */
+#define RTS (1<<11) /* RTS signal */
+#define DTR (1<<10) /* DTR signal */
#define RXE (1<<9) /* Receive enable */
#define TXE (1<<8) /* Transmit enable */
#define UARTEN (1<<0) /* UART enable */