]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
SERIAL: omap: serial_omap_configure_xonxoff() contents into set_termios
authorRussell King <rmk+kernel@arm.linux.org.uk>
Mon, 15 Oct 2012 15:50:59 +0000 (16:50 +0100)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Sun, 4 Nov 2012 12:14:22 +0000 (12:14 +0000)
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
drivers/tty/serial/omap-serial.c

index 9f54cef56765b4631b86491f528c77432cf238bc..4888bd1ab3225ff8e59201382b1eafadfcf4b666 100644 (file)
@@ -707,63 +707,6 @@ static void serial_omap_shutdown(struct uart_port *port)
        free_irq(up->port.irq, up);
 }
 
-static inline void
-serial_omap_configure_xonxoff
-               (struct uart_omap_port *up, struct ktermios *termios)
-{
-       up->lcr = serial_in(up, UART_LCR);
-       serial_out(up, UART_LCR, UART_LCR_CONF_MODE_B);
-       up->efr = serial_in(up, UART_EFR);
-       serial_out(up, UART_EFR, up->efr & ~UART_EFR_ECB);
-
-       serial_out(up, UART_XON1, termios->c_cc[VSTART]);
-       serial_out(up, UART_XOFF1, termios->c_cc[VSTOP]);
-
-       /* clear SW control mode bits */
-       up->efr &= OMAP_UART_SW_CLR;
-
-       /*
-        * IXON Flag:
-        * Enable XON/XOFF flow control on output.
-        * Transmit XON1, XOFF1
-        */
-       if (termios->c_iflag & IXON)
-               up->efr |= OMAP_UART_SW_TX;
-
-       /*
-        * IXOFF Flag:
-        * Enable XON/XOFF flow control on input.
-        * Receiver compares XON1, XOFF1.
-        */
-       if (termios->c_iflag & IXOFF)
-               up->efr |= OMAP_UART_SW_RX;
-
-       serial_out(up, UART_EFR, up->efr | UART_EFR_ECB);
-       serial_out(up, UART_LCR, UART_LCR_CONF_MODE_A);
-
-       up->mcr = serial_in(up, UART_MCR);
-
-       /*
-        * IXANY Flag:
-        * Enable any character to restart output.
-        * Operation resumes after receiving any
-        * character after recognition of the XOFF character
-        */
-       if (termios->c_iflag & IXANY)
-               up->mcr |= UART_MCR_XONANY;
-       else
-               up->mcr &= ~UART_MCR_XONANY;
-
-       serial_out(up, UART_MCR, up->mcr | UART_MCR_TCRTLR);
-       serial_out(up, UART_LCR, UART_LCR_CONF_MODE_B);
-       serial_out(up, UART_TI752_TCR, OMAP_UART_TCR_TRIG);
-       serial_out(up, UART_LCR, UART_LCR_CONF_MODE_A);
-       serial_out(up, UART_MCR, up->mcr & ~UART_MCR_TCRTLR);
-       serial_out(up, UART_LCR, UART_LCR_CONF_MODE_B);
-       serial_out(up, UART_EFR, up->efr);
-       serial_out(up, UART_LCR, up->lcr);
-}
-
 static void serial_omap_uart_qos_work(struct work_struct *work)
 {
        struct uart_omap_port *up = container_of(work, struct uart_omap_port,
@@ -984,8 +927,59 @@ serial_omap_set_termios(struct uart_port *port, struct ktermios *termios,
        }
 
        /* Software Flow Control Configuration */
-       if (up->port.flags & UPF_SOFT_FLOW)
-               serial_omap_configure_xonxoff(up, termios);
+       if (up->port.flags & UPF_SOFT_FLOW) {
+               up->lcr = serial_in(up, UART_LCR);
+               serial_out(up, UART_LCR, UART_LCR_CONF_MODE_B);
+               up->efr = serial_in(up, UART_EFR);
+               serial_out(up, UART_EFR, up->efr & ~UART_EFR_ECB);
+
+               serial_out(up, UART_XON1, termios->c_cc[VSTART]);
+               serial_out(up, UART_XOFF1, termios->c_cc[VSTOP]);
+
+               /* clear SW control mode bits */
+               up->efr &= OMAP_UART_SW_CLR;
+
+               /*
+                * IXON Flag:
+                * Enable XON/XOFF flow control on output.
+                * Transmit XON1, XOFF1
+                */
+               if (termios->c_iflag & IXON)
+                       up->efr |= OMAP_UART_SW_TX;
+
+               /*
+                * IXOFF Flag:
+                * Enable XON/XOFF flow control on input.
+                * Receiver compares XON1, XOFF1.
+                */
+               if (termios->c_iflag & IXOFF)
+                       up->efr |= OMAP_UART_SW_RX;
+
+               serial_out(up, UART_EFR, up->efr | UART_EFR_ECB);
+               serial_out(up, UART_LCR, UART_LCR_CONF_MODE_A);
+
+               up->mcr = serial_in(up, UART_MCR);
+
+               /*
+                * IXANY Flag:
+                * Enable any character to restart output.
+                * Operation resumes after receiving any
+                * character after recognition of the XOFF character
+                */
+               if (termios->c_iflag & IXANY)
+                       up->mcr |= UART_MCR_XONANY;
+               else
+                       up->mcr &= ~UART_MCR_XONANY;
+
+               serial_out(up, UART_MCR, up->mcr | UART_MCR_TCRTLR);
+               serial_out(up, UART_LCR, UART_LCR_CONF_MODE_B);
+               serial_out(up, UART_TI752_TCR, OMAP_UART_TCR_TRIG);
+               serial_out(up, UART_LCR, UART_LCR_CONF_MODE_A);
+               serial_out(up, UART_MCR, up->mcr & ~UART_MCR_TCRTLR);
+               serial_out(up, UART_LCR, UART_LCR_CONF_MODE_B);
+               serial_out(up, UART_EFR, up->efr);
+               serial_out(up, UART_LCR, up->lcr);
+       }
 
        serial_omap_set_mctrl(&up->port, up->port.mctrl);