serial: omap_8250: Fix RTS handling
authorPeter Hurley <peter@hurleysoftware.com>
Wed, 31 Dec 2014 01:28:15 +0000 (20:28 -0500)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 9 Jan 2015 22:10:46 +0000 (14:10 -0800)
commit4bf4ea9dca4ba1984abeb592f429265b9bacac42
tree104bf2aa066b9fd105013f0fa8262722a77ce525
parentfbf7ebe4d9faf2225d15edb9ebc66bf99800776a
serial: omap_8250: Fix RTS handling

The OMAP3 UART ignores MCR[1] (ie., UART_MCR_RTS) when in autoRTS
mode (UPF_HARD_FLOW + CRTSCTS). This makes it impossible for either
the serial core or userspace to manually flow control the sender.

Disable autoRTS mode when RTS is lowered and restore the previous
mode when RTS is raised.

Note that the OMAP3 UART provides no mechanism for switching from
autoRTS mode without corrupting incoming data; to access the
necessary register, the line control settings must be set to 8-e-2
and thus any data received during that time will be interpreted with
those settings. This corruption has been observed in practice.

Cc: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Peter Hurley <peter@hurleysoftware.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/tty/serial/8250/8250_core.c
drivers/tty/serial/8250/8250_omap.c
include/linux/serial_8250.h
include/linux/serial_core.h