early_printk.c (826B)
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 11static void sclp_early_write(struct console *con, const char *s, unsigned int len) 12{ 13 __sclp_early_printk(s, len); 14} 15 16static struct console sclp_early_console = { 17 .name = "earlysclp", 18 .write = sclp_early_write, 19 .flags = CON_PRINTBUFFER | CON_BOOT, 20 .index = -1, 21}; 22 23static 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(buf, "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} 36early_param("earlyprintk", setup_early_printk);