From 7535a20e4ea8d18b1f37f3cf5063573e0718f026 Mon Sep 17 00:00:00 2001 From: Jingchang Lu Date: Tue, 14 Aug 2012 16:02:02 +0800 Subject: ENGR00220352: Fix reboot hung after set uart baudrate Signed-off-by: Jingchang Lu --- drivers/tty/serial/mvf.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/drivers/tty/serial/mvf.c b/drivers/tty/serial/mvf.c index bd5643b90300..13aa8a9eef8a 100644 --- a/drivers/tty/serial/mvf.c +++ b/drivers/tty/serial/mvf.c @@ -751,13 +751,14 @@ imx_set_termios(struct uart_port *port, struct ktermios *termios, */ uart_update_timeout(port, termios->c_cflag, baud); - /* disable transmit and receive first */ - writeb(old_cr2 & ~(MXC_UARTCR2_TE | MXC_UARTCR2_RE), - sport->port.membase + MXC_UARTCR2); /* wait transmit engin complete */ while (!(readb(sport->port.membase + MXC_UARTSR1) & MXC_UARTSR1_TC)) barrier(); + /* disable transmit and receive */ + writeb(old_cr2 & ~(MXC_UARTCR2_TE | MXC_UARTCR2_RE), + sport->port.membase + MXC_UARTCR2); + sbr = sport->port.uartclk / (16 * baud); brfa = ((sport->port.uartclk - (16 * sbr * baud)) * 2)/baud; -- cgit v1.2.3