early_printk.c (7913ad1ad83409e7f9ed5758bb4324bf64c95a73) | early_printk.c (c46f46d02c90959b82b99badfadc575081666aae) |
---|---|
1/* 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 7 */ 8 9#include <linux/kernel.h> 10#include <linux/console.h> 11#include <linux/init.h> 12#include <linux/string.h> 13#include <asm/setup.h> 14 | 1/* 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 7 */ 8 9#include <linux/kernel.h> 10#include <linux/console.h> 11#include <linux/init.h> 12#include <linux/string.h> 13#include <asm/setup.h> 14 |
15extern void mvme16x_cons_write(struct console *co, 16 const char *str, unsigned count); 17 |
|
15asmlinkage void __init debug_cons_nputs(const char *s, unsigned n); 16 | 18asmlinkage void __init debug_cons_nputs(const char *s, unsigned n); 19 |
17static void debug_cons_write(struct console *c, 18 const char *s, unsigned n) | 20static void __ref debug_cons_write(struct console *c, 21 const char *s, unsigned n) |
19{ | 22{ |
20 debug_cons_nputs(s, n); | 23#if !(defined(CONFIG_SUN3) || defined(CONFIG_M68360) || \ 24 defined(CONFIG_M68000) || 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 |
21} 22 23static struct console early_console_instance = { 24 .name = "debug", 25 .write = debug_cons_write, 26 .flags = CON_PRINTBUFFER | CON_BOOT, 27 .index = -1 28}; 29 30static int __init setup_early_printk(char *buf) 31{ | 30} 31 32static struct console early_console_instance = { 33 .name = "debug", 34 .write = debug_cons_write, 35 .flags = CON_PRINTBUFFER | CON_BOOT, 36 .index = -1 37}; 38 39static int __init setup_early_printk(char *buf) 40{ |
32 /* MVME16x registers an early console after interrupt setup. */ 33 if (MACH_IS_MVME16x) 34 return 0; 35 | |
36 if (early_console || buf) 37 return 0; 38 39 early_console = &early_console_instance; 40 register_console(early_console); 41 42 return 0; 43} 44early_param("earlyprintk", setup_early_printk); 45 46/* 47 * debug_cons_nputs() defined in arch/m68k/kernel/head.S cannot be called 48 * after init sections are discarded (for platforms that use it). 49 */ 50#if !(defined(CONFIG_SUN3) || defined(CONFIG_M68360) || \ 51 defined(CONFIG_M68000) || defined(CONFIG_COLDFIRE)) 52 53static int __init unregister_early_console(void) 54{ | 41 if (early_console || buf) 42 return 0; 43 44 early_console = &early_console_instance; 45 register_console(early_console); 46 47 return 0; 48} 49early_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_M68360) || \ 56 defined(CONFIG_M68000) || defined(CONFIG_COLDFIRE)) 57 58static int __init unregister_early_console(void) 59{ |
55 if (!early_console) | 60 if (!early_console || MACH_IS_MVME16x) |
56 return 0; 57 58 return unregister_console(early_console); 59} 60late_initcall(unregister_early_console); 61 62#endif | 61 return 0; 62 63 return unregister_console(early_console); 64} 65late_initcall(unregister_early_console); 66 67#endif |