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