serial: sirf: fix the issue that HW flow control doesn't work for BT
authorQipan Li <Qipan.Li@csr.com>
Thu, 14 May 2015 06:45:22 +0000 (06:45 +0000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 24 May 2015 19:50:41 +0000 (12:50 -0700)
>From HW spec, when rxfifo's data is less than AFC_RX_THD(RX threshhold), RTS
signal is active. otherwise, RTS signal is inactive.

Crrently the RX threshhold is set as zero, so RTS has no chance to be
active. This patch replaces the default 0 by a positive number.

Signed-off-by: Qipan Li <Qipan.Li@csr.com>
Signed-off-by: Barry Song <Baohua.Song@csr.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/tty/serial/sirfsoc_uart.c

index 1d0d47f2a8c2f6681a2c8f5c5f3cc7841eec9847..48cceaf5338adaf78c8096e2fa21fd8b13a17ab2 100644 (file)
@@ -344,7 +344,8 @@ static void sirfsoc_uart_enable_ms(struct uart_port *port)
        if (sirfport->uart_reg->uart_type == SIRF_REAL_UART) {
                wr_regl(port, ureg->sirfsoc_afc_ctrl,
                                rd_regl(port, ureg->sirfsoc_afc_ctrl) |
-                               SIRFUART_AFC_TX_EN | SIRFUART_AFC_RX_EN);
+                               SIRFUART_AFC_TX_EN | SIRFUART_AFC_RX_EN |
+                               SIRFUART_AFC_CTRL_RX_THD);
                if (!sirfport->is_atlas7)
                        wr_regl(port, ureg->sirfsoc_int_en_reg,
                                        rd_regl(port, ureg->sirfsoc_int_en_reg)