summaryrefslogtreecommitdiffstats
path: root/include/linux/serial_core.h
diff options
context:
space:
mode:
authorPeter Hurley <peter@hurleysoftware.com>2014-12-30 20:28:15 -0500
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2015-01-09 14:10:46 -0800
commit4bf4ea9dca4ba1984abeb592f429265b9bacac42 (patch)
tree104bf2aa066b9fd105013f0fa8262722a77ce525 /include/linux/serial_core.h
parentfbf7ebe4d9faf2225d15edb9ebc66bf99800776a (diff)
downloadlinux-4bf4ea9dca4ba1984abeb592f429265b9bacac42.tar.gz
linux-4bf4ea9dca4ba1984abeb592f429265b9bacac42.tar.bz2
linux-4bf4ea9dca4ba1984abeb592f429265b9bacac42.zip
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>
Diffstat (limited to 'include/linux/serial_core.h')
-rw-r--r--include/linux/serial_core.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/include/linux/serial_core.h b/include/linux/serial_core.h
index 057038cf2788..a0c7033d5f91 100644
--- a/include/linux/serial_core.h
+++ b/include/linux/serial_core.h
@@ -123,6 +123,7 @@ struct uart_port {
void (*set_termios)(struct uart_port *,
struct ktermios *new,
struct ktermios *old);
+ void (*set_mctrl)(struct uart_port *, unsigned int);
int (*startup)(struct uart_port *port);
void (*shutdown)(struct uart_port *port);
void (*throttle)(struct uart_port *port);