1 | // SPDX-License-Identifier: GPL-2.0 |
---|---|
2 | /* |
3 | * Copyright IBM Corp. 2017 |
4 | */ |
5 | |
6 | #include <linux/console.h> |
7 | #include <linux/kernel.h> |
8 | #include <linux/init.h> |
9 | #include <asm/sclp.h> |
10 | |
11 | static void sclp_early_write(struct console *con, const char *s, unsigned int len) |
12 | { |
13 | __sclp_early_printk(s, len); |
14 | } |
15 | |
16 | static struct console sclp_early_console = { |
17 | .name = "earlysclp", |
18 | .write = sclp_early_write, |
19 | .flags = CON_PRINTBUFFER | CON_BOOT, |
20 | .index = -1, |
21 | }; |
22 | |
23 | static int __init setup_early_printk(char *buf) |
24 | { |
25 | if (early_console) |
26 | return 0; |
27 | /* Accept only "earlyprintk" and "earlyprintk=sclp" */ |
28 | if (buf && !str_has_prefix(str: buf, prefix: "sclp")) |
29 | return 0; |
30 | if (!sclp.has_linemode && !sclp.has_vt220) |
31 | return 0; |
32 | early_console = &sclp_early_console; |
33 | register_console(early_console); |
34 | return 0; |
35 | } |
36 | early_param("earlyprintk", setup_early_printk); |
37 |