diff options
Diffstat (limited to 'drivers/serial/s3c2410.c')
-rw-r--r-- | drivers/serial/s3c2410.c | 26 |
1 files changed, 10 insertions, 16 deletions
diff --git a/drivers/serial/s3c2410.c b/drivers/serial/s3c2410.c index 00d7c0ad8cbf..f5aac92fb798 100644 --- a/drivers/serial/s3c2410.c +++ b/drivers/serial/s3c2410.c | |||
@@ -1586,25 +1586,19 @@ s3c24xx_serial_console_txrdy(struct uart_port *port, unsigned int ufcon) | |||
1586 | } | 1586 | } |
1587 | 1587 | ||
1588 | static void | 1588 | static void |
1589 | s3c24xx_serial_console_write(struct console *co, const char *s, | 1589 | s3c24xx_serial_console_putchar(struct uart_port *port, int ch) |
1590 | unsigned int count) | ||
1591 | { | 1590 | { |
1592 | int i; | ||
1593 | unsigned int ufcon = rd_regl(cons_uart, S3C2410_UFCON); | 1591 | unsigned int ufcon = rd_regl(cons_uart, S3C2410_UFCON); |
1592 | while (!s3c24xx_serial_console_txrdy(port, ufcon)) | ||
1593 | barrier(); | ||
1594 | wr_regb(cons_uart, S3C2410_UTXH, ch); | ||
1595 | } | ||
1594 | 1596 | ||
1595 | for (i = 0; i < count; i++) { | 1597 | static void |
1596 | while (!s3c24xx_serial_console_txrdy(cons_uart, ufcon)) | 1598 | s3c24xx_serial_console_write(struct console *co, const char *s, |
1597 | barrier(); | 1599 | unsigned int count) |
1598 | 1600 | { | |
1599 | wr_regb(cons_uart, S3C2410_UTXH, s[i]); | 1601 | uart_console_write(cons_uart, s, count, s3c24xx_serial_console_putchar); |
1600 | |||
1601 | if (s[i] == '\n') { | ||
1602 | while (!s3c24xx_serial_console_txrdy(cons_uart, ufcon)) | ||
1603 | barrier(); | ||
1604 | |||
1605 | wr_regb(cons_uart, S3C2410_UTXH, '\r'); | ||
1606 | } | ||
1607 | } | ||
1608 | } | 1602 | } |
1609 | 1603 | ||
1610 | static void __init | 1604 | static void __init |