a5a4ab5ba789a4e29a6bbf86034bf2bbc1305c3f
[openwrt/staging/yousong.git] / target / linux / s3c24xx / patches-2.6.31 / 110-serial.patch
1 From 15f219822a30534756518cd8c4dfade95c4959c2 Mon Sep 17 00:00:00 2001
2 From: Lars-Peter Clausen <lars@metafoo.de>
3 Date: Tue, 21 Jul 2009 12:51:57 +0200
4 Subject: [PATCH] 110-serial.patch
5
6 ---
7 drivers/serial/samsung.c | 19 +++++++++++++++++++
8 1 files changed, 19 insertions(+), 0 deletions(-)
9
10 diff --git a/drivers/serial/samsung.c b/drivers/serial/samsung.c
11 index bf0af79..64c35d1 100644
12 --- a/drivers/serial/samsung.c
13 +++ b/drivers/serial/samsung.c
14 @@ -1263,6 +1263,13 @@ module_exit(s3c24xx_serial_modexit);
15 #ifdef CONFIG_SERIAL_SAMSUNG_CONSOLE
16
17 static struct uart_port *cons_uart;
18 +static int cons_silenced;
19 +
20 +void s3c24xx_serial_console_set_silence(int silenced)
21 +{
22 + cons_silenced = silenced;
23 +}
24 +EXPORT_SYMBOL(s3c24xx_serial_console_set_silence);
25
26 static int
27 s3c24xx_serial_console_txrdy(struct uart_port *port, unsigned int ufcon)
28 @@ -1287,9 +1294,21 @@ static void
29 s3c24xx_serial_console_putchar(struct uart_port *port, int ch)
30 {
31 unsigned int ufcon = rd_regl(cons_uart, S3C2410_UFCON);
32 + unsigned int umcon = rd_regl(cons_uart, S3C2410_UMCON);
33 +
34 + if (cons_silenced)
35 + return;
36 +
37 + /* If auto HW flow control enabled, temporarily turn it off */
38 + if (umcon & S3C2410_UMCOM_AFC)
39 + wr_regl(port, S3C2410_UMCON, (umcon & !S3C2410_UMCOM_AFC));
40 +
41 while (!s3c24xx_serial_console_txrdy(port, ufcon))
42 barrier();
43 wr_regb(cons_uart, S3C2410_UTXH, ch);
44 +
45 + if (umcon & S3C2410_UMCOM_AFC)
46 + wr_regl(port, S3C2410_UMCON, umcon);
47 }
48
49 static void
50 --
51 1.5.6.5
52