xref: /openbmc/linux/arch/um/kernel/early_printk.c (revision 75bf465f0bc33e9b776a46d6a1b9b990f5fb7c37)
1*d2912cb1SThomas Gleixner // SPDX-License-Identifier: GPL-2.0-only
2d634f194SRichard Weinberger /*
3d634f194SRichard Weinberger  * Copyright (C) 2011 Richard Weinberger <richrd@nod.at>
4d634f194SRichard Weinberger  */
5d634f194SRichard Weinberger 
6d634f194SRichard Weinberger #include <linux/kernel.h>
7d634f194SRichard Weinberger #include <linux/console.h>
8d634f194SRichard Weinberger #include <linux/init.h>
937185b33SAl Viro #include <os.h>
10d634f194SRichard Weinberger 
early_console_write(struct console * con,const char * s,unsigned int n)11d634f194SRichard Weinberger static void early_console_write(struct console *con, const char *s, unsigned int n)
12d634f194SRichard Weinberger {
13d634f194SRichard Weinberger 	um_early_printk(s, n);
14d634f194SRichard Weinberger }
15d634f194SRichard Weinberger 
16d0380e6cSThomas Gleixner static struct console early_console_dev = {
17d634f194SRichard Weinberger 	.name = "earlycon",
18d634f194SRichard Weinberger 	.write = early_console_write,
19d634f194SRichard Weinberger 	.flags = CON_BOOT,
20d634f194SRichard Weinberger 	.index = -1,
21d634f194SRichard Weinberger };
22d634f194SRichard Weinberger 
setup_early_printk(char * buf)23d634f194SRichard Weinberger static int __init setup_early_printk(char *buf)
24d634f194SRichard Weinberger {
25d0380e6cSThomas Gleixner 	if (!early_console) {
26d0380e6cSThomas Gleixner 		early_console = &early_console_dev;
27d0380e6cSThomas Gleixner 		register_console(&early_console_dev);
28d0380e6cSThomas Gleixner 	}
29d634f194SRichard Weinberger 	return 0;
30d634f194SRichard Weinberger }
31d634f194SRichard Weinberger 
32d634f194SRichard Weinberger early_param("earlyprintk", setup_early_printk);
33