Commit | Line | Data |
---|---|---|
7913ad1a FT |
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 | ||
c46f46d0 FT |
15 | extern void mvme16x_cons_write(struct console *co, |
16 | const char *str, unsigned count); | |
17 | ||
7913ad1a FT |
18 | asmlinkage void __init debug_cons_nputs(const char *s, unsigned n); |
19 | ||
c46f46d0 FT |
20 | static void __ref debug_cons_write(struct console *c, |
21 | const char *s, unsigned n) | |
7913ad1a | 22 | { |
a3595962 GU |
23 | #if !(defined(CONFIG_SUN3) || defined(CONFIG_M68000) || \ |
24 | defined(CONFIG_COLDFIRE)) | |
c46f46d0 FT |
25 | if (MACH_IS_MVME16x) |
26 | mvme16x_cons_write(c, s, n); | |
27 | else | |
28 | debug_cons_nputs(s, n); | |
29 | #endif | |
7913ad1a FT |
30 | } |
31 | ||
32 | static struct console early_console_instance = { | |
33 | .name = "debug", | |
34 | .write = debug_cons_write, | |
35 | .flags = CON_PRINTBUFFER | CON_BOOT, | |
36 | .index = -1 | |
37 | }; | |
38 | ||
39 | static int __init setup_early_printk(char *buf) | |
40 | { | |
7913ad1a FT |
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 | } | |
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 | */ | |
a3595962 GU |
55 | #if !(defined(CONFIG_SUN3) || defined(CONFIG_M68000) || \ |
56 | defined(CONFIG_COLDFIRE)) | |
7913ad1a FT |
57 | |
58 | static int __init unregister_early_console(void) | |
59 | { | |
c46f46d0 | 60 | if (!early_console || MACH_IS_MVME16x) |
7913ad1a FT |
61 | return 0; |
62 | ||
63 | return unregister_console(early_console); | |
64 | } | |
65 | late_initcall(unregister_early_console); | |
66 | ||
67 | #endif |