xref: /openbmc/linux/arch/mips/kernel/early_printk.c (revision a36954f5)
1 /*
2  * This file is subject to the terms and conditions of the GNU General Public
3  * License.  See the file "COPYING" in the main directory of this archive
4  * for more details.
5  *
6  * Copyright (C) 2002, 2003, 06, 07 Ralf Baechle (ralf@linux-mips.org)
7  * Copyright (C) 2007 MIPS Technologies, Inc.
8  *   written by Ralf Baechle (ralf@linux-mips.org)
9  */
10 #include <linux/kernel.h>
11 #include <linux/console.h>
12 #include <linux/printk.h>
13 #include <linux/init.h>
14 
15 #include <asm/setup.h>
16 
17 extern void prom_putchar(char);
18 
19 static void early_console_write(struct console *con, const char *s, unsigned n)
20 {
21 	while (n-- && *s) {
22 		if (*s == '\n')
23 			prom_putchar('\r');
24 		prom_putchar(*s);
25 		s++;
26 	}
27 }
28 
29 static struct console early_console_prom = {
30 	.name	= "early",
31 	.write	= early_console_write,
32 	.flags	= CON_PRINTBUFFER | CON_BOOT,
33 	.index	= -1
34 };
35 
36 void __init setup_early_printk(void)
37 {
38 	if (early_console)
39 		return;
40 	early_console = &early_console_prom;
41 
42 	register_console(&early_console_prom);
43 }
44