1 // SPDX-License-Identifier: GPL-2.0-only << 2 /* 1 /* 3 * Copyright (C) 2011 Richard Weinberger <rich !! 2 * This file is subject to the terms and conditions of the GNU General Public >> 3 * License. See the file "COPYING" in the main directory of this archive >> 4 * for more details. >> 5 * >> 6 * Copyright (c) 2014 Finn Thain 4 */ 7 */ 5 8 6 #include <linux/kernel.h> 9 #include <linux/kernel.h> 7 #include <linux/console.h> 10 #include <linux/console.h> 8 #include <linux/init.h> 11 #include <linux/init.h> 9 #include <os.h> !! 12 #include <linux/string.h> >> 13 #include <asm/setup.h> 10 14 11 static void early_console_write(struct console !! 15 >> 16 #include "../mvme16x/mvme16x.h" >> 17 >> 18 asmlinkage void __init debug_cons_nputs(const char *s, unsigned n); >> 19 >> 20 static void __ref debug_cons_write(struct console *c, >> 21 const char *s, unsigned n) 12 { 22 { 13 um_early_printk(s, n); !! 23 #if !(defined(CONFIG_SUN3) || defined(CONFIG_M68000) || \ >> 24 defined(CONFIG_COLDFIRE)) >> 25 if (MACH_IS_MVME16x) >> 26 mvme16x_cons_write(c, s, n); >> 27 else >> 28 debug_cons_nputs(s, n); >> 29 #endif 14 } 30 } 15 31 16 static struct console early_console_dev = { !! 32 static struct console early_console_instance = { 17 .name = "earlycon", !! 33 .name = "debug", 18 .write = early_console_write, !! 34 .write = debug_cons_write, 19 .flags = CON_BOOT, !! 35 .flags = CON_PRINTBUFFER | CON_BOOT, 20 .index = -1, !! 36 .index = -1 21 }; 37 }; 22 38 23 static int __init setup_early_printk(char *buf 39 static int __init setup_early_printk(char *buf) 24 { 40 { 25 if (!early_console) { !! 41 if (early_console || buf) 26 early_console = &early_console !! 42 return 0; 27 register_console(&early_consol !! 43 28 } !! 44 early_console = &early_console_instance; >> 45 register_console(early_console); >> 46 29 return 0; 47 return 0; 30 } 48 } 31 << 32 early_param("earlyprintk", setup_early_printk) 49 early_param("earlyprintk", setup_early_printk); >> 50 >> 51 /* >> 52 * debug_cons_nputs() defined in arch/m68k/kernel/head.S cannot be called >> 53 * after init sections are discarded (for platforms that use it). >> 54 */ >> 55 #if !(defined(CONFIG_SUN3) || defined(CONFIG_M68000) || \ >> 56 defined(CONFIG_COLDFIRE)) >> 57 >> 58 static int __init unregister_early_console(void) >> 59 { >> 60 if (!early_console || MACH_IS_MVME16x) >> 61 return 0; >> 62 >> 63 return unregister_console(early_console); >> 64 } >> 65 late_initcall(unregister_early_console); >> 66 >> 67 #endif 33 68
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.