diff options
-rw-r--r-- | arch/mips/Kconfig | 1 | ||||
-rw-r--r-- | arch/mips/sgi-ip27/Makefile | 11 | ||||
-rw-r--r-- | arch/mips/sgi-ip27/ip27-console.c | 40 |
3 files changed, 25 insertions, 27 deletions
diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig index aedeee9009fc..8e10f027e561 100644 --- a/arch/mips/Kconfig +++ b/arch/mips/Kconfig | |||
@@ -606,6 +606,7 @@ config SGI_IP27 | |||
606 | select ARC64 | 606 | select ARC64 |
607 | select BOOT_ELF64 | 607 | select BOOT_ELF64 |
608 | select DMA_IP27 | 608 | select DMA_IP27 |
609 | select EARLY_PRINTK | ||
609 | select HW_HAS_PCI | 610 | select HW_HAS_PCI |
610 | select PCI_DOMAINS | 611 | select PCI_DOMAINS |
611 | select SYS_HAS_CPU_R10000 | 612 | select SYS_HAS_CPU_R10000 |
diff --git a/arch/mips/sgi-ip27/Makefile b/arch/mips/sgi-ip27/Makefile index 686ba14e2882..a457263f4391 100644 --- a/arch/mips/sgi-ip27/Makefile +++ b/arch/mips/sgi-ip27/Makefile | |||
@@ -2,11 +2,12 @@ | |||
2 | # Makefile for the IP27 specific kernel interface routines under Linux. | 2 | # Makefile for the IP27 specific kernel interface routines under Linux. |
3 | # | 3 | # |
4 | 4 | ||
5 | obj-y := ip27-berr.o ip27-console.o ip27-irq.o ip27-init.o \ | 5 | obj-y := ip27-berr.o ip27-irq.o ip27-init.o ip27-klconfig.o ip27-klnuma.o \ |
6 | ip27-klconfig.o ip27-klnuma.o ip27-memory.o ip27-nmi.o ip27-reset.o \ | 6 | ip27-memory.o ip27-nmi.o ip27-reset.o ip27-timer.o ip27-hubio.o \ |
7 | ip27-timer.o ip27-hubio.o ip27-xtalk.o | 7 | ip27-xtalk.o |
8 | 8 | ||
9 | obj-$(CONFIG_KGDB) += ip27-dbgio.o | 9 | obj-$(CONFIG_EARLY_PRINTK) += ip27-console.o |
10 | obj-$(CONFIG_SMP) += ip27-smp.o | 10 | obj-$(CONFIG_KGDB) += ip27-dbgio.o |
11 | obj-$(CONFIG_SMP) += ip27-smp.o | ||
11 | 12 | ||
12 | EXTRA_AFLAGS := $(CFLAGS) | 13 | EXTRA_AFLAGS := $(CFLAGS) |
diff --git a/arch/mips/sgi-ip27/ip27-console.c b/arch/mips/sgi-ip27/ip27-console.c index 3e1ac299b804..14211e382374 100644 --- a/arch/mips/sgi-ip27/ip27-console.c +++ b/arch/mips/sgi-ip27/ip27-console.c | |||
@@ -46,33 +46,29 @@ void prom_putchar(char c) | |||
46 | uart->iu_thr = c; | 46 | uart->iu_thr = c; |
47 | } | 47 | } |
48 | 48 | ||
49 | char __init prom_getchar(void) | 49 | static void ioc3_console_write(struct console *con, const char *s, unsigned n) |
50 | { | 50 | { |
51 | return 0; | 51 | while (n-- && *s) { |
52 | if (*s == '\n') | ||
53 | prom_putchar('\r'); | ||
54 | prom_putchar(*s); | ||
55 | s++; | ||
56 | } | ||
52 | } | 57 | } |
53 | 58 | ||
54 | static void inline ioc3_console_probe(void) | 59 | static struct console ioc3_console = { |
55 | { | 60 | .name = "ioc3", |
56 | struct uart_port up; | 61 | .write = ioc3_console_write, |
57 | 62 | .flags = CON_PRINTBUFFER | CON_BOOT, | |
58 | /* | 63 | .index = -1 |
59 | * Register to interrupt zero because we share the interrupt with | 64 | }; |
60 | * the serial driver which we don't properly support yet. | ||
61 | */ | ||
62 | memset(&up, 0, sizeof(up)); | ||
63 | up.membase = (unsigned char *) console_uart(); | ||
64 | up.irq = 0; | ||
65 | up.uartclk = IOC3_CLK; | ||
66 | up.regshift = 0; | ||
67 | up.iotype = UPIO_MEM; | ||
68 | up.flags = IOC3_FLAGS; | ||
69 | up.line = 0; | ||
70 | 65 | ||
71 | if (early_serial_setup(&up)) | 66 | __init void ip27_setup_console(void) |
72 | printk(KERN_ERR "Early serial init of port 0 failed\n"); | 67 | { |
68 | register_console(&ioc3_console); | ||
73 | } | 69 | } |
74 | 70 | ||
75 | __init void ip27_setup_console(void) | 71 | void __init disable_early_printk(void) |
76 | { | 72 | { |
77 | ioc3_console_probe(); | 73 | unregister_console(&ioc3_console); |
78 | } | 74 | } |