m68k/mvme16x: Adopt common boot console

In a multi-platform kernel binary we only need one early console instance.

The difficulty here is that the common early console is started by
early_param(), whereas the MVME16x instance is started later by
config_mvme16x(). That means some interrupt setup must be done earlier.

Signed-off-by: Finn Thain <fthain@telegraphics.com.au>
Tested-by: Stephen N Chivers <schivers@csc.com.au>
[Geert] Tag debug_cons_write() with __ref to kill section mismatch warning
Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
This commit is contained in:
Finn Thain
2014-04-12 23:49:30 +10:00
committed by Geert Uytterhoeven
parent 7913ad1ad8
commit c46f46d02c
3 changed files with 25 additions and 33 deletions

View File

@@ -12,12 +12,21 @@
#include <linux/string.h>
#include <asm/setup.h>
extern void mvme16x_cons_write(struct console *co,
const char *str, unsigned count);
asmlinkage void __init debug_cons_nputs(const char *s, unsigned n);
static void debug_cons_write(struct console *c,
const char *s, unsigned n)
static void __ref debug_cons_write(struct console *c,
const char *s, unsigned n)
{
debug_cons_nputs(s, n);
#if !(defined(CONFIG_SUN3) || defined(CONFIG_M68360) || \
defined(CONFIG_M68000) || defined(CONFIG_COLDFIRE))
if (MACH_IS_MVME16x)
mvme16x_cons_write(c, s, n);
else
debug_cons_nputs(s, n);
#endif
}
static struct console early_console_instance = {
@@ -29,10 +38,6 @@ static struct console early_console_instance = {
static int __init setup_early_printk(char *buf)
{
/* MVME16x registers an early console after interrupt setup. */
if (MACH_IS_MVME16x)
return 0;
if (early_console || buf)
return 0;
@@ -52,7 +57,7 @@ early_param("earlyprintk", setup_early_printk);
static int __init unregister_early_console(void)
{
if (!early_console)
if (!early_console || MACH_IS_MVME16x)
return 0;
return unregister_console(early_console);