projects
/
firefly-linux-kernel-4.4.55.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
18d7f24
)
serial: rk29: fix infinite loop on rk29_serial_set_termios
author
黄涛
<huangtao@rock-chips.com>
Wed, 26 Jan 2011 11:57:37 +0000
(19:57 +0800)
committer
黄涛
<huangtao@rock-chips.com>
Wed, 26 Jan 2011 11:57:57 +0000
(19:57 +0800)
drivers/serial/rk29_serial.c
patch
|
blob
|
history
diff --git
a/drivers/serial/rk29_serial.c
b/drivers/serial/rk29_serial.c
index 8d896509cc7a373218315a2f65c945eef7e94269..b5f3282217a0a8da909f47f6ad42f92c0c0eba79 100755
(executable)
--- 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);