serial: sirf: add serial loopback function support
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>
This commit is contained in:

committed by
Greg Kroah-Hartman

parent
d9e8e976fa
commit
7f60f2fe16
@@ -108,6 +108,26 @@ static void sirfsoc_uart_set_mctrl(struct uart_port *port, unsigned int mctrl)
|
||||
unsigned int val = assert ? SIRFUART_AFC_CTRL_RX_THD : 0x0;
|
||||
unsigned int current_val;
|
||||
|
||||
if (mctrl & TIOCM_LOOP) {
|
||||
if (sirfport->uart_reg->uart_type == SIRF_REAL_UART)
|
||||
wr_regl(port, ureg->sirfsoc_line_ctrl,
|
||||
rd_regl(port, ureg->sirfsoc_line_ctrl) |
|
||||
SIRFUART_LOOP_BACK);
|
||||
else
|
||||
wr_regl(port, ureg->sirfsoc_mode1,
|
||||
rd_regl(port, ureg->sirfsoc_mode1) |
|
||||
SIRFSOC_USP_LOOP_BACK_CTRL);
|
||||
} else {
|
||||
if (sirfport->uart_reg->uart_type == SIRF_REAL_UART)
|
||||
wr_regl(port, ureg->sirfsoc_line_ctrl,
|
||||
rd_regl(port, ureg->sirfsoc_line_ctrl) &
|
||||
~SIRFUART_LOOP_BACK);
|
||||
else
|
||||
wr_regl(port, ureg->sirfsoc_mode1,
|
||||
rd_regl(port, ureg->sirfsoc_mode1) &
|
||||
~SIRFSOC_USP_LOOP_BACK_CTRL);
|
||||
}
|
||||
|
||||
if (!sirfport->hw_flow_ctrl || !sirfport->ms_enabled)
|
||||
return;
|
||||
if (sirfport->uart_reg->uart_type == SIRF_REAL_UART) {
|
||||
|
Reference in New Issue
Block a user