Skip to content

Commit

Permalink
tty: xuartps: Add support for setting modem control signals
Browse files Browse the repository at this point in the history
Add support for setting the state of the DTR and RTS signals.

Acked-by: Soren Brinkmann <soren.brinkmann@xilinx.com>
Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  • Loading branch information
Lars-Peter Clausen authored and Greg Kroah-Hartman committed Nov 6, 2014
1 parent f77d55a commit 19038ad
Showing 1 changed file with 21 additions and 1 deletion.
22 changes: 21 additions & 1 deletion drivers/tty/serial/xilinx_uartps.c
Original file line number Diff line number Diff line change
Expand Up @@ -132,6 +132,15 @@ MODULE_PARM_DESC(rx_timeout, "Rx timeout, 1-255");
/* Goes in read_status_mask for break detection as the HW doesn't do it*/
#define CDNS_UART_IXR_BRK 0x80000000

/*
* Modem Control register:
* The read/write Modem Control register controls the interface with the modem
* or data set, or a peripheral device emulating a modem.
*/
#define CDNS_UART_MODEMCR_FCM 0x00000020 /* Automatic flow control mode */
#define CDNS_UART_MODEMCR_RTS 0x00000002 /* Request to send output control */
#define CDNS_UART_MODEMCR_DTR 0x00000001 /* Data Terminal Ready */

/*
* Channel Status Register:
* The channel status register (CSR) is provided to enable the control logic
Expand Down Expand Up @@ -915,7 +924,18 @@ static unsigned int cdns_uart_get_mctrl(struct uart_port *port)

static void cdns_uart_set_mctrl(struct uart_port *port, unsigned int mctrl)
{
/* N/A */
u32 val;

val = cdns_uart_readl(CDNS_UART_MODEMCR_OFFSET);

val &= ~(CDNS_UART_MODEMCR_RTS | CDNS_UART_MODEMCR_DTR);

if (mctrl & TIOCM_RTS)
val |= CDNS_UART_MODEMCR_RTS;
if (mctrl & TIOCM_DTR)
val |= CDNS_UART_MODEMCR_DTR;

cdns_uart_writel(val, CDNS_UART_MODEMCR_OFFSET);
}

#ifdef CONFIG_CONSOLE_POLL
Expand Down

0 comments on commit 19038ad

Please sign in to comment.