1 // SPDX-License-Identifier: GPL-2.0-or-later 2 /* 3 * DECstation PROM-based early console support. 4 * 5 * Copyright (C) 2004, 2007 Maciej W. Rozycki 6 */ 7 #include <linux/console.h> 8 #include <linux/init.h> 9 #include <linux/kernel.h> 10 #include <linux/string.h> 11 12 #include <asm/dec/prom.h> 13 14 static void __init prom_console_write(struct console *con, const char *s, 15 unsigned int c) 16 { 17 char buf[81]; 18 unsigned int chunk = sizeof(buf) - 1; 19 20 while (c > 0) { 21 if (chunk > c) 22 chunk = c; 23 memcpy(buf, s, chunk); 24 buf[chunk] = '\0'; 25 prom_printf("%s", buf); 26 s += chunk; 27 c -= chunk; 28 } 29 } 30 31 static struct console promcons __initdata = { 32 .name = "prom", 33 .write = prom_console_write, 34 .flags = CON_BOOT | CON_PRINTBUFFER, 35 .index = -1, 36 }; 37 38 void __init register_prom_console(void) 39 { 40 register_console(&promcons); 41 } 42