diff options
Diffstat (limited to 'target/linux/s3c24xx/patches/0242-silence-serial-console-gta01.patch.patch')
-rwxr-xr-x | target/linux/s3c24xx/patches/0242-silence-serial-console-gta01.patch.patch | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/target/linux/s3c24xx/patches/0242-silence-serial-console-gta01.patch.patch b/target/linux/s3c24xx/patches/0242-silence-serial-console-gta01.patch.patch new file mode 100755 index 0000000000..41a74c955c --- /dev/null +++ b/target/linux/s3c24xx/patches/0242-silence-serial-console-gta01.patch.patch @@ -0,0 +1,76 @@ +From 85ef1fb82db8188fd5a615e557bf5407113d163f Mon Sep 17 00:00:00 2001 +From: Mike Westerhof <mwester@dls.net> +Date: Sun, 10 Aug 2008 09:13:20 +0100 +Subject: [PATCH] silence-serial-console-gta01.patch + + This patch ensures that no console data will go the UART while + the GSM mux is switched to the GSM. This is necessary despite + the code that disables the console due to the fact that the + console resumes before the neo1973_pm_gsm driver, and consoles + always resume in the "on" state. + +Signed-off-by: Mike Westerhof <mwester@dls.net> +--- + arch/arm/plat-s3c24xx/neo1973_pm_gsm.c | 3 +++ + drivers/serial/s3c2410.c | 10 ++++++++++ + 2 files changed, 13 insertions(+), 0 deletions(-) + +diff --git a/arch/arm/plat-s3c24xx/neo1973_pm_gsm.c b/arch/arm/plat-s3c24xx/neo1973_pm_gsm.c +index 901f8fb..8d5e41c 100644 +--- a/arch/arm/plat-s3c24xx/neo1973_pm_gsm.c ++++ b/arch/arm/plat-s3c24xx/neo1973_pm_gsm.c +@@ -31,6 +31,7 @@ + #include <asm/arch/regs-gpioj.h> + #endif + ++extern void s3c24xx_serial_console_set_silence(int silence); + extern void s3c24xx_serial_register_resume_dependency(struct resume_dependency * + resume_dependency, int uart_index); + +@@ -105,6 +106,7 @@ static ssize_t gsm_write(struct device *dev, struct device_attribute *attr, + "disconnecting serial console\n"); + + console_stop(gta01_gsm.con); ++ s3c24xx_serial_console_set_silence(1); + } + + if (gta01_gsm.gpio_ngsm_en) +@@ -144,6 +146,7 @@ static ssize_t gsm_write(struct device *dev, struct device_attribute *attr, + s3c2410_gpio_setpin(gta01_gsm.gpio_ngsm_en, 1); + + if (gta01_gsm.con) { ++ s3c24xx_serial_console_set_silence(0); + console_start(gta01_gsm.con); + + dev_dbg(dev, "powered down GSM, thus enabling " +diff --git a/drivers/serial/s3c2410.c b/drivers/serial/s3c2410.c +index d0b55b1..8de1564 100644 +--- a/drivers/serial/s3c2410.c ++++ b/drivers/serial/s3c2410.c +@@ -1791,6 +1791,13 @@ module_exit(s3c24xx_serial_modexit); + #ifdef CONFIG_SERIAL_S3C2410_CONSOLE + + static struct uart_port *cons_uart; ++static int cons_silenced; ++ ++void s3c24xx_serial_console_set_silence(int silenced) ++{ ++ cons_silenced = silenced; ++} ++EXPORT_SYMBOL(s3c24xx_serial_console_set_silence); + + static int + s3c24xx_serial_console_txrdy(struct uart_port *port, unsigned int ufcon) +@@ -1817,6 +1824,9 @@ s3c24xx_serial_console_putchar(struct uart_port *port, int ch) + unsigned int ufcon = rd_regl(cons_uart, S3C2410_UFCON); + unsigned int umcon = rd_regl(cons_uart, S3C2410_UMCON); + ++ if (cons_silenced) ++ return; ++ + /* If auto HW flow control enabled, temporarily turn it off */ + if (umcon & S3C2410_UMCOM_AFC) + wr_regl(port, S3C2410_UMCON, (umcon & !S3C2410_UMCOM_AFC)); +-- +1.5.6.3 + |