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