From: Frank Rowand <frank.rowand@am.sony.com>
Implement early printk in the serial_txx9 driver, and enable for the
Toshiba RBTX4927 board. This is needed for the connect to GDB console
message.
Signed-off-by: Frank Rowand <frank.rowand@am.sony.com>
---
arch/mips/Kconfig | 1 1 +
0 - 0 !
arch/mips/tx4927/toshiba_rbtx4927/toshiba_rbtx4927_setup.c | 6 6 +
0 - 0 !
drivers/serial/serial_txx9.c | 39 39 +
0 - 0 !
3 files changed, 46 insertions(+)
Index: linux-2.6.24-rc7/arch/mips/Kconfig
===================================================================
--- linux-2.6.24-rc7.orig/arch/mips/Kconfig
+++ linux-2.6.24-rc7/arch/mips/Kconfig
@@ -631,6 +631,7 @@ config TOSHIBA_RBTX4927
select I8259 if TOSHIBA_FPCIB0
select SWAP_IO_SPACE
select SYS_HAS_CPU_TX49XX
+ select SYS_HAS_EARLY_PRINTK
select SYS_SUPPORTS_32BIT_KERNEL
select SYS_SUPPORTS_64BIT_KERNEL
select SYS_SUPPORTS_LITTLE_ENDIAN
Index: linux-2.6.24-rc7/drivers/serial/serial_txx9.c
===================================================================
--- linux-2.6.24-rc7.orig/drivers/serial/serial_txx9.c
+++ linux-2.6.24-rc7/drivers/serial/serial_txx9.c
@@ -1198,6 +1198,45 @@ MODULE_DEVICE_TABLE(pci, serial_txx9_pci
static struct platform_device *serial_txx9_plat_devs;
+#ifdef CONFIG_EARLY_PRINTK
+
+/*
+ * Do NOT request the console resources, allows normal driver to initialize
+ * console later.
+ */
+
+static int prom_putchar_port = -1;
+
+void early_printk_serial_txx9_console_setup(void)
+{
+ prom_putchar_port = 0;
+}
+
+void prom_putchar(char ch)
+{
+ unsigned int status;
+ struct uart_txx9_port *up;
+
+ if (prom_putchar_port == -1)
+ return;
+
+ up = &serial_txx9_ports[prom_putchar_port];
+
+ if (ch == '\n')
+ prom_putchar('\r');
+
+ while (1) {
+ status = sio_in(up, TXX9_SICISR);
+ if (status & TXX9_SICISR_TRDY) {
+ sio_out(up, TXX9_SITFIFO, (u32)ch);
+ break;
+ }
+ }
+}
+
+#endif
+
+
static int __init serial_txx9_init(void)
{
int ret;
Index:
linux-2.6.24-rc7/arch/mips/tx4927/toshiba_rbtx4927/toshiba_rbtx4927_setup.c
===================================================================
---
linux-2.6.24-rc7.orig/arch/mips/tx4927/toshiba_rbtx4927/toshiba_rbtx4927_setup.c
+++ linux-2.6.24-rc7/arch/mips/tx4927/toshiba_rbtx4927/toshiba_rbtx4927_setup.c
@@ -913,6 +913,12 @@ void __init toshiba_rbtx4927_setup(void)
if (strstr(argptr, "console=") == NULL) {
strcat(argptr, " console=ttyS0,38400");
}
+#ifdef CONFIG_EARLY_PRINTK
+ {
+ extern void early_printk_serial_txx9_console_setup(void);
+ early_printk_serial_txx9_console_setup();
+ }
+#endif
#endif
#endif
|