mirror of
https://github.com/torvalds/linux.git
synced 2024-11-02 10:11:36 +00:00
SERIAL: omap: always set TCR
We always setup the TCR register in the software flow control path, and when hardware flow control is enabled. Remove this redundant setup, and place it before we setup any hardware flow control. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
This commit is contained in:
parent
18f360f865
commit
c7d059cae3
@ -898,31 +898,30 @@ serial_omap_set_termios(struct uart_port *port, struct ktermios *termios,
|
||||
else
|
||||
serial_out(up, UART_OMAP_MDR1, up->mdr1);
|
||||
|
||||
/* Enable access to TCR/TLR */
|
||||
serial_out(up, UART_LCR, UART_LCR_CONF_MODE_B);
|
||||
serial_out(up, UART_EFR, up->efr | UART_EFR_ECB);
|
||||
serial_out(up, UART_LCR, UART_LCR_CONF_MODE_A);
|
||||
serial_out(up, UART_MCR, up->mcr | UART_MCR_TCRTLR);
|
||||
|
||||
serial_out(up, UART_TI752_TCR, OMAP_UART_TCR_TRIG);
|
||||
|
||||
/* Hardware Flow Control Configuration */
|
||||
|
||||
if (termios->c_cflag & CRTSCTS && up->port.flags & UPF_HARD_FLOW) {
|
||||
/* Enable access to TCR/TLR */
|
||||
serial_out(up, UART_LCR, UART_LCR_CONF_MODE_B);
|
||||
serial_out(up, UART_EFR, up->efr | UART_EFR_ECB);
|
||||
serial_out(up, UART_LCR, UART_LCR_CONF_MODE_A);
|
||||
serial_out(up, UART_MCR, up->mcr | UART_MCR_TCRTLR);
|
||||
|
||||
serial_out(up, UART_TI752_TCR, OMAP_UART_TCR_TRIG);
|
||||
|
||||
/* Enable AUTORTS and AUTOCTS */
|
||||
up->efr |= UART_EFR_CTS | UART_EFR_RTS;
|
||||
|
||||
/* Ensure MCR RTS is asserted */
|
||||
up->mcr |= UART_MCR_RTS;
|
||||
|
||||
/* Disable access to TCR/TLR */
|
||||
serial_out(up, UART_MCR, up->mcr);
|
||||
} else {
|
||||
/* Disable AUTORTS and AUTOCTS */
|
||||
up->efr &= ~(UART_EFR_CTS | UART_EFR_RTS);
|
||||
}
|
||||
|
||||
if (up->port.flags & UPF_SOFT_FLOW) {
|
||||
/* Disable access to TCR/TLR */
|
||||
serial_out(up, UART_MCR, up->mcr);
|
||||
serial_out(up, UART_LCR, UART_LCR_CONF_MODE_B);
|
||||
serial_out(up, UART_EFR, up->efr);
|
||||
|
||||
@ -961,14 +960,9 @@ serial_omap_set_termios(struct uart_port *port, struct ktermios *termios,
|
||||
up->mcr |= UART_MCR_XONANY;
|
||||
else
|
||||
up->mcr &= ~UART_MCR_XONANY;
|
||||
|
||||
serial_out(up, UART_MCR, up->mcr | UART_MCR_TCRTLR);
|
||||
serial_out(up, UART_LCR, UART_LCR_CONF_MODE_B);
|
||||
serial_out(up, UART_TI752_TCR, OMAP_UART_TCR_TRIG);
|
||||
serial_out(up, UART_LCR, UART_LCR_CONF_MODE_A);
|
||||
serial_out(up, UART_MCR, up->mcr);
|
||||
}
|
||||
|
||||
serial_out(up, UART_MCR, up->mcr);
|
||||
serial_out(up, UART_LCR, UART_LCR_CONF_MODE_B);
|
||||
serial_out(up, UART_EFR, up->efr);
|
||||
serial_out(up, UART_LCR, up->lcr);
|
||||
|
Loading…
Reference in New Issue
Block a user