2014-04-12 17:48:56 +04:00
/*
* This file is subject to the terms and conditions of the GNU General Public
* License . See the file " COPYING " in the main directory of this archive
* for more details .
*
* Copyright ( c ) 2014 Finn Thain
*/
# include <linux/kernel.h>
# include <linux/console.h>
# include <linux/init.h>
# include <linux/string.h>
# include <asm/setup.h>
2014-04-12 17:49:30 +04:00
extern void mvme16x_cons_write ( struct console * co ,
const char * str , unsigned count ) ;
2014-04-12 17:48:56 +04:00
asmlinkage void __init debug_cons_nputs ( const char * s , unsigned n ) ;
2014-04-12 17:49:30 +04:00
static void __ref debug_cons_write ( struct console * c ,
const char * s , unsigned n )
2014-04-12 17:48:56 +04:00
{
2014-04-12 17:49:30 +04:00
# 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
2014-04-12 17:48:56 +04:00
}
static struct console early_console_instance = {
. name = " debug " ,
. write = debug_cons_write ,
. flags = CON_PRINTBUFFER | CON_BOOT ,
. index = - 1
} ;
static int __init setup_early_printk ( char * buf )
{
if ( early_console | | buf )
return 0 ;
early_console = & early_console_instance ;
register_console ( early_console ) ;
return 0 ;
}
early_param ( " earlyprintk " , setup_early_printk ) ;
/*
* debug_cons_nputs ( ) defined in arch / m68k / kernel / head . S cannot be called
* after init sections are discarded ( for platforms that use it ) .
*/
# if !(defined(CONFIG_SUN3) || defined(CONFIG_M68360) || \
defined ( CONFIG_M68000 ) | | defined ( CONFIG_COLDFIRE ) )
static int __init unregister_early_console ( void )
{
2014-04-12 17:49:30 +04:00
if ( ! early_console | | MACH_IS_MVME16x )
2014-04-12 17:48:56 +04:00
return 0 ;
return unregister_console ( early_console ) ;
}
late_initcall ( unregister_early_console ) ;
# endif