]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
serial: imx: add support for DTE mode
authorHuang Shijie <b32955@freescale.com>
Thu, 30 May 2013 06:07:12 +0000 (14:07 +0800)
committerJason Liu <r64343@freescale.com>
Wed, 30 Oct 2013 01:54:02 +0000 (09:54 +0800)
The uart works in the DCE mode by default, but sometime we need it
works at the DTE mode.

This patch adds the support for the DTE mode.

Signed-off-by: Huang Shijie <b32955@freescale.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Documentation/devicetree/bindings/tty/serial/fsl-imx-uart.txt
drivers/tty/serial/imx.c

index b462d0c548237fae605cfe63a689cc216f8f945e..c662eb36be2926e60d97c1cfd8489d0da839ba89 100644 (file)
@@ -8,6 +8,8 @@ Required properties:
 Optional properties:
 - fsl,uart-has-rtscts : Indicate the uart has rts and cts
 - fsl,irda-mode : Indicate the uart supports irda mode
+- fsl,dte-mode : Indicate the uart works in DTE mode. The uart works
+                  is DCE mode by default.
 
 Example:
 
@@ -16,4 +18,5 @@ serial@73fbc000 {
        reg = <0x73fbc000 0x4000>;
        interrupts = <31>;
        fsl,uart-has-rtscts;
+       fsl,dte-mode;
 };
index b350cf175940c30374833cd9d50b3a165b1d1aab..a07e94f6a9fc4c155fd94090ae5b38e1f5ca630c 100644 (file)
@@ -201,6 +201,7 @@ struct imx_port {
        unsigned int            old_status;
        int                     txirq, rxirq, rtsirq;
        unsigned int            have_rtscts:1;
+       unsigned int            dte_mode:1;
        unsigned int            use_irda:1;
        unsigned int            irda_inv_rx:1;
        unsigned int            irda_inv_tx:1;
@@ -1022,6 +1023,8 @@ imx_set_termios(struct uart_port *port, struct ktermios *termios,
 
        ufcr = readl(sport->port.membase + UFCR);
        ufcr = (ufcr & (~UFCR_RFDIV)) | UFCR_RFDIV_REG(div);
+       if (sport->dte_mode)
+               ufcr |= UFCR_DCEDTE;
        writel(ufcr, sport->port.membase + UFCR);
 
        writel(num, sport->port.membase + UBIR);
@@ -1446,6 +1449,9 @@ static int serial_imx_probe_dt(struct imx_port *sport,
        if (of_get_property(np, "fsl,irda-mode", NULL))
                sport->use_irda = 1;
 
+       if (of_get_property(np, "fsl,dte-mode", NULL))
+               sport->dte_mode = 1;
+
        sport->devdata = of_id->data;
 
        return 0;