[MIPS] Early printk for IP27.
authorRalf Baechle <ralf@linux-mips.org>
Thu, 22 Jun 2006 19:09:04 +0000 (20:09 +0100)
committerRalf Baechle <ralf@linux-mips.org>
Thu, 29 Jun 2006 20:10:53 +0000 (21:10 +0100)
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
arch/mips/Kconfig
arch/mips/sgi-ip27/Makefile
arch/mips/sgi-ip27/ip27-console.c

index aedeee9009fc3b3d33b5f96ef6362d58d5f094c5..8e10f027e5611dfb7c683a56e22807b0d0730f7c 100644 (file)
@@ -606,6 +606,7 @@ config SGI_IP27
        select ARC64
        select BOOT_ELF64
        select DMA_IP27
+       select EARLY_PRINTK
        select HW_HAS_PCI
        select PCI_DOMAINS
        select SYS_HAS_CPU_R10000
index 686ba14e2882495039bc73fc256fa73840f0b2b4..a457263f4391811d102bfa593dcdcf03374b0a57 100644 (file)
@@ -2,11 +2,12 @@
 # Makefile for the IP27 specific kernel interface routines under Linux.
 #
 
-obj-y  := ip27-berr.o ip27-console.o ip27-irq.o ip27-init.o \
-          ip27-klconfig.o ip27-klnuma.o ip27-memory.o ip27-nmi.o ip27-reset.o \
-          ip27-timer.o ip27-hubio.o ip27-xtalk.o
+obj-y  := ip27-berr.o ip27-irq.o ip27-init.o ip27-klconfig.o ip27-klnuma.o \
+          ip27-memory.o ip27-nmi.o ip27-reset.o ip27-timer.o ip27-hubio.o \
+          ip27-xtalk.o
 
-obj-$(CONFIG_KGDB)     += ip27-dbgio.o
-obj-$(CONFIG_SMP)      += ip27-smp.o
+obj-$(CONFIG_EARLY_PRINTK)     += ip27-console.o
+obj-$(CONFIG_KGDB)             += ip27-dbgio.o
+obj-$(CONFIG_SMP)              += ip27-smp.o
 
 EXTRA_AFLAGS := $(CFLAGS)
index 3e1ac299b80471372cf2972f1e697d512859afef..14211e382374609ac4166bb3900fde69bc3368cc 100644 (file)
@@ -46,33 +46,29 @@ void prom_putchar(char c)
        uart->iu_thr = c;
 }
 
-char __init prom_getchar(void)
+static void ioc3_console_write(struct console *con, const char *s, unsigned n)
 {
-       return 0;
+       while (n-- && *s) {
+               if (*s == '\n')
+                       prom_putchar('\r');
+               prom_putchar(*s);
+               s++;
+       }
 }
 
-static void inline ioc3_console_probe(void)
-{
-       struct uart_port up;
-
-       /*
-        * Register to interrupt zero because we share the interrupt with
-        * the serial driver which we don't properly support yet.
-        */
-       memset(&up, 0, sizeof(up));
-       up.membase      = (unsigned char *) console_uart();
-       up.irq          = 0;
-       up.uartclk      = IOC3_CLK;
-       up.regshift     = 0;
-       up.iotype       = UPIO_MEM;
-       up.flags        = IOC3_FLAGS;
-       up.line         = 0;
+static struct console ioc3_console = {
+       .name   = "ioc3",
+       .write  = ioc3_console_write,
+       .flags  = CON_PRINTBUFFER | CON_BOOT,
+       .index  = -1
+};
 
-       if (early_serial_setup(&up))
-               printk(KERN_ERR "Early serial init of port 0 failed\n");
+__init void ip27_setup_console(void)
+{
+       register_console(&ioc3_console);
 }
 
-__init void ip27_setup_console(void)
+void __init disable_early_printk(void)
 {
-       ioc3_console_probe();
+       unregister_console(&ioc3_console);
 }