serial: omap: Fix EFR write on RTS deassertion
authorLukas Wunner <lukas@wunner.de>
Sat, 21 Oct 2017 08:50:18 +0000 (10:50 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 23 Oct 2017 09:22:58 +0000 (11:22 +0200)
Commit 348f9bb31c56 ("serial: omap: Fix RTS handling") sought to enable
auto RTS upon manual RTS assertion and disable it on deassertion.
However it seems the latter was done incorrectly, it clears all bits in
the Extended Features Register *except* auto RTS.

Fixes: 348f9bb31c56 ("serial: omap: Fix RTS handling")
Cc: Peter Hurley <peter@hurleysoftware.com>
Cc: stable <stable@vger.kernel.org>
Signed-off-by: Lukas Wunner <lukas@wunner.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/tty/serial/omap-serial.c

index 7b183fc789c886393e061876d6d81374e3cf3d32..47ba9177a714e917f58016ec7b8e739641d071b9 100644 (file)
@@ -693,7 +693,7 @@ static void serial_omap_set_mctrl(struct uart_port *port, unsigned int mctrl)
        if ((mctrl & TIOCM_RTS) && (port->status & UPSTAT_AUTORTS))
                up->efr |= UART_EFR_RTS;
        else
-               up->efr &= UART_EFR_RTS;
+               up->efr &= ~UART_EFR_RTS;
        serial_out(up, UART_EFR, up->efr);
        serial_out(up, UART_LCR, lcr);