From 24a6d8c8a40f2c7d4daa625bde608b7a767e90b3 Mon Sep 17 00:00:00 2001 From: Ralf Baechle Date: Thu, 1 Mar 2007 13:50:06 +0000 Subject: [PATCH] [MIPS] Atlas, Malta, SEAD: Early_printk implementation. Signed-off-by: Ralf Baechle --- arch/mips/Kconfig | 3 +++ arch/mips/mips-boards/generic/Makefile | 4 +++- .../mips-boards/generic/{printf.c => console.c} | 28 ++++++++++++++++++---- arch/mips/mips-boards/generic/init.c | 8 +++++++ 4 files changed, 38 insertions(+), 5 deletions(-) rename arch/mips/mips-boards/generic/{printf.c => console.c} (79%) diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig index b9d712099ea..59a1a804a0a 100644 --- a/arch/mips/Kconfig +++ b/arch/mips/Kconfig @@ -256,6 +256,7 @@ config MIPS_ATLAS bool "MIPS Atlas board" select BOOT_ELF32 select DMA_NONCOHERENT + select EARLY_PRINTK select IRQ_CPU select HW_HAS_PCI select MIPS_BOARDS_GEN @@ -286,6 +287,7 @@ config MIPS_MALTA select BOOT_ELF32 select HAVE_STD_PC_SERIAL_PORT select DMA_NONCOHERENT + select EARLY_PRINTK select GENERIC_ISA_DMA select IRQ_CPU select HW_HAS_PCI @@ -316,6 +318,7 @@ config MIPS_SEAD depends on EXPERIMENTAL select IRQ_CPU select DMA_NONCOHERENT + select EARLY_PRINTK select MIPS_BOARDS_GEN select SYS_HAS_CPU_MIPS32_R1 select SYS_HAS_CPU_MIPS32_R2 diff --git a/arch/mips/mips-boards/generic/Makefile b/arch/mips/mips-boards/generic/Makefile index 0a30f5dc9b7..aade36d7878 100644 --- a/arch/mips/mips-boards/generic/Makefile +++ b/arch/mips/mips-boards/generic/Makefile @@ -18,7 +18,9 @@ # Makefile for the MIPS boards generic routines under Linux. # -obj-y := reset.o display.o init.o memory.o printf.o \ +obj-y := reset.o display.o init.o memory.o \ cmdline.o time.o + +obj-$(CONFIG_EARLY_PRINTK) += console.o obj-$(CONFIG_PCI) += pci.o obj-$(CONFIG_KGDB) += gdb_hook.o diff --git a/arch/mips/mips-boards/generic/printf.c b/arch/mips/mips-boards/generic/console.c similarity index 79% rename from arch/mips/mips-boards/generic/printf.c rename to arch/mips/mips-boards/generic/console.c index 1a711bd79b5..aa8b208410e 100644 --- a/arch/mips/mips-boards/generic/printf.c +++ b/arch/mips/mips-boards/generic/console.c @@ -17,6 +17,7 @@ * * Putting things on the screen/serial line using YAMONs facilities. */ +#include #include #include #include @@ -68,11 +69,30 @@ int prom_putchar(char c) return 1; } -char prom_getchar(void) +static void mb_console_write(struct console *con, const char *s, + unsigned n) { - while (!(serial_in(UART_LSR) & UART_LSR_DR)) - ; + while (n-- && *s) { + if (*s == '\n') + prom_putchar('\r'); + prom_putchar(*s); + s++; + } +} + +static struct console mb_console = { + .name = "mb", + .write = mb_console_write, + .flags = CON_PRINTBUFFER | CON_BOOT, + .index = -1 +}; - return serial_in(UART_RX); +void __init mb_setup_console(void) +{ + register_console(&mb_console); } +void __init disable_early_printk(void) +{ + unregister_console(&mb_console); +} diff --git a/arch/mips/mips-boards/generic/init.c b/arch/mips/mips-boards/generic/init.c index b1133760012..d8371509284 100644 --- a/arch/mips/mips-boards/generic/init.c +++ b/arch/mips/mips-boards/generic/init.c @@ -383,6 +383,14 @@ void __init prom_init(void) board_nmi_handler_setup = mips_nmi_setup; board_ejtag_handler_setup = mips_ejtag_setup; +#ifdef CONFIG_EARLY_PRINTK + { + extern void mb_setup_console(void); + + mb_setup_console(); + } +#endif + pr_info("\nLINUX started...\n"); prom_init_cmdline(); prom_meminit(); -- 2.11.4.GIT