tty: serial: qcom_geni_serial: Fix the UART wakeup issue
authorsatya priya <skakit@codeaurora.org>
Thu, 10 Sep 2020 12:53:58 +0000 (18:23 +0530)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 16 Sep 2020 12:26:12 +0000 (14:26 +0200)
As a part of system suspend uart_port_suspend is called from the
Serial driver, which calls set_mctrl passing mctrl as 0. This
makes RFR high(NOT_READY) during suspend.

Due to this BT SoC is not able to send wakeup bytes to UART during
suspend. Include if check for non-suspend case to keep RFR low
during suspend.

Signed-off-by: satya priya <skakit@codeaurora.org>
Reviewed-by: Akash Asthana <akashast@codeaurora.org>
Reviewed-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Link: https://lore.kernel.org/r/1599742438-16811-5-git-send-email-skakit@codeaurora.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/tty/serial/qcom_geni_serial.c

index e390ffc..8da2eb2 100644 (file)
@@ -242,7 +242,7 @@ static void qcom_geni_serial_set_mctrl(struct uart_port *uport,
        if (mctrl & TIOCM_LOOP)
                port->loopback = RX_TX_CTS_RTS_SORTED;
 
-       if (!(mctrl & TIOCM_RTS))
+       if (!(mctrl & TIOCM_RTS) && !uport->suspended)
                uart_manual_rfr = UART_MANUAL_RFR_EN | UART_RFR_NOT_READY;
        writel(uart_manual_rfr, uport->membase + SE_UART_MANUAL_RFR);
 }