Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- From bf020fdfbbf362bed0aab90edf457fc6cffc9e46 Mon Sep 17 00:00:00 2001
- From: Fabio Estevam <fabio.estevam@freescale.com>
- Date: Wed, 26 Mar 2014 12:43:58 -0300
- Subject: [PATCH] serial: mxs-auart: Add support for inverted RTS/CTS output
- Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
- ---
- Documentation/devicetree/bindings/serial/fsl-mxs-auart.txt | 1 +
- drivers/tty/serial/mxs-auart.c | 8 ++++++++
- 2 files changed, 9 insertions(+)
- diff --git a/Documentation/devicetree/bindings/serial/fsl-mxs-auart.txt b/Documentation/devicetree/bindings/serial/fsl-mxs-auart.txt
- index 59a40f1..2351f55 100644
- --- a/Documentation/devicetree/bindings/serial/fsl-mxs-auart.txt
- +++ b/Documentation/devicetree/bindings/serial/fsl-mxs-auart.txt
- @@ -13,6 +13,7 @@ Required properties:
- Optional properties:
- - fsl,uart-has-rtscts : Indicate the UART has RTS and CTS lines,
- it also means you enable the DMA support for this UART.
- +- fsl,invert-rtscts: Indicate that RTS output is inverted before transmitted
- Example:
- auart0: serial@8006a000 {
- diff --git a/drivers/tty/serial/mxs-auart.c b/drivers/tty/serial/mxs-auart.c
- index aa97fd8..6cdcf7e 100644
- --- a/drivers/tty/serial/mxs-auart.c
- +++ b/drivers/tty/serial/mxs-auart.c
- @@ -79,6 +79,8 @@
- #define AUART_CTRL1_XFER_COUNT(v) ((v) & 0xffff)
- +#define AUART_CTRL2_INVERT_RTS (1 << 31)
- +#define AUART_CTRL2_INVERT_CTS (1 << 30)
- #define AUART_CTRL2_DMAONERR (1 << 26)
- #define AUART_CTRL2_TXDMAE (1 << 25)
- #define AUART_CTRL2_RXDMAE (1 << 24)
- @@ -138,6 +140,7 @@ struct mxs_auart_port {
- #define MXS_AUART_DMA_TX_SYNC 2 /* bit 2 */
- #define MXS_AUART_DMA_RX_READY 3 /* bit 3 */
- #define MXS_AUART_RTSCTS 4 /* bit 4 */
- +#define MXS_AUART_INVERT_RTSCTS 5 /* bit 5 */
- unsigned long flags;
- unsigned int ctrl;
- enum mxs_auart_type devtype;
- @@ -637,6 +640,8 @@ static void mxs_auart_settermios(struct uart_port *u,
- /* figure out the hardware flow control settings */
- if (cflag & CRTSCTS) {
- + if (test_bit(MXS_AUART_INVERT_RTSCTS, &s->flags))
- + ctrl2 |= AUART_CTRL2_INVERT_RTS | AUART_CTRL2_INVERT_CTS;
- /*
- * The DMA has a bug(see errata:2836) in mx23.
- * So we can not implement the DMA for auart in mx23,
- @@ -1023,6 +1028,9 @@ static int serial_mxs_probe_dt(struct mxs_auart_port *s,
- if (of_get_property(np, "fsl,uart-has-rtscts", NULL))
- set_bit(MXS_AUART_RTSCTS, &s->flags);
- + if (of_get_property(np, "fsl,invert-rtscts", NULL))
- + set_bit(MXS_AUART_INVERT_RTSCTS, &s->flags);
- +
- return 0;
- }
- --
- 1.8.1.2
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement