1 /* 2 * DECstation PROM-based early console support. 3 * 4 * Copyright (C) 2004, 2007 Maciej W. Rozycki 5 * 6 * This program is free software; you can redistribute it and/or 7 * modify it under the terms of the GNU General Public License 8 * as published by the Free Software Foundation; either version 9 * 2 of the License, or (at your option) any later version. 10 */ 11 #include <linux/console.h> 12 #include <linux/init.h> 13 #include <linux/kernel.h> 14 #include <linux/string.h> 15 16 #include <asm/dec/prom.h> 17 18 static void __init prom_console_write(struct console *con, const char *s, 19 unsigned int c) 20 { 21 char buf[81]; 22 unsigned int chunk = sizeof(buf) - 1; 23 24 while (c > 0) { 25 if (chunk > c) 26 chunk = c; 27 memcpy(buf, s, chunk); 28 buf[chunk] = '\0'; 29 prom_printf("%s", buf); 30 s += chunk; 31 c -= chunk; 32 } 33 } 34 35 static struct console promcons __initdata = { 36 .name = "prom", 37 .write = prom_console_write, 38 .flags = CON_BOOT | CON_PRINTBUFFER, 39 .index = -1, 40 }; 41 42 void __init register_prom_console(void) 43 { 44 register_console(&promcons); 45 } 46