diff options
author | Baolin Wang <baolin.wang@linaro.org> | 2019-08-21 20:39:09 +0800 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2019-09-04 12:43:54 +0200 |
commit | 37ba760b6bb7402d8a8cce178063be78e3da474d (patch) | |
tree | 5055d60e4c073753efaa1837d6378c4ebeadf624 /drivers/tty | |
parent | 6cbdf5c659ab6e8f081efde1ec60e0f8f8f7d8a4 (diff) | |
download | linux-37ba760b6bb7402d8a8cce178063be78e3da474d.tar.gz linux-37ba760b6bb7402d8a8cce178063be78e3da474d.tar.bz2 linux-37ba760b6bb7402d8a8cce178063be78e3da474d.zip |
serial: sprd: Add loopback function support
Add loopback function support for Spreadtrum serial controller.
Signed-off-by: Baolin Wang <baolin.wang@linaro.org>
Link: https://lore.kernel.org/r/1275cd9968f1ceb5ac049cc23f1e508025cd552f.1566375260.git.baolin.wang@linaro.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/tty')
-rw-r--r-- | drivers/tty/serial/sprd_serial.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/drivers/tty/serial/sprd_serial.c b/drivers/tty/serial/sprd_serial.c index 284709f61831..de077d7b5f00 100644 --- a/drivers/tty/serial/sprd_serial.c +++ b/drivers/tty/serial/sprd_serial.c @@ -79,6 +79,7 @@ /* control register 1 */ #define SPRD_CTL1 0x001C #define SPRD_DMA_EN BIT(15) +#define SPRD_LOOPBACK_EN BIT(14) #define RX_HW_FLOW_CTL_THLD BIT(6) #define RX_HW_FLOW_CTL_EN BIT(7) #define TX_HW_FLOW_CTL_EN BIT(8) @@ -164,7 +165,14 @@ static unsigned int sprd_get_mctrl(struct uart_port *port) static void sprd_set_mctrl(struct uart_port *port, unsigned int mctrl) { - /* nothing to do */ + u32 val = serial_in(port, SPRD_CTL1); + + if (mctrl & TIOCM_LOOP) + val |= SPRD_LOOPBACK_EN; + else + val &= ~SPRD_LOOPBACK_EN; + + serial_out(port, SPRD_CTL1, val); } static void sprd_stop_rx(struct uart_port *port) |