From 2cbc72d654d5fbcff97f6a27440729d2718e6894 Mon Sep 17 00:00:00 2001 From: =?utf8?q?=E9=BB=84=E6=B6=9B?= Date: Wed, 26 Jan 2011 19:57:37 +0800 Subject: [PATCH] serial: rk29: fix infinite loop on rk29_serial_set_termios --- drivers/serial/rk29_serial.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/drivers/serial/rk29_serial.c b/drivers/serial/rk29_serial.c index 8d896509cc7a..b5f3282217a0 100755 --- a/drivers/serial/rk29_serial.c +++ b/drivers/serial/rk29_serial.c @@ -400,8 +400,11 @@ static void rk29_serial_set_termios(struct uart_port *port, struct ktermios *ter printk("UART_GET_MCR fcr=0x%x\n",fcr); } mode = mode | LCR_DLA_EN; - while(rk29_uart_read(port,UART_USR)&UART_USR_BUSY) - cpu_relax(); + { + int timeout = 10000000; + while ((rk29_uart_read(port,UART_USR)&UART_USR_BUSY) && timeout--) + cpu_relax(); + } rk29_uart_write(port,mode,UART_LCR); baud = rk29_set_baud_rate(port, baud); uart_update_timeout(port, termios->c_cflag, baud); -- 2.34.1