 f7be4e754b
			
		
	
	
	f7be4e754b
	
	
	
		
			
			We cannot use __init for earlyprintk code or data, since the kernel parameter "keep_bootcon" allows leaving the boot console enabled. Currently MIPS will crash/hang/die if you use keep_bootcon. The patch fixes it at least on Lemote FuLoong mini-PC. Changes for other boards were done based on what I could find with grep... Signed-off-by: Aaro Koskinen <aaro.koskinen@iki.fi> Patchwork: http://patchwork.linux-mips.org/patch/4935/ Signed-off-by: John Crispin <blogic@openwrt.org>
		
			
				
	
	
		
			43 lines
		
	
	
	
		
			982 B
			
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			43 lines
		
	
	
	
		
			982 B
			
		
	
	
	
		
			C
		
	
	
	
	
	
| /*
 | |
|  * 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) 2002, 2003, 06, 07 Ralf Baechle (ralf@linux-mips.org)
 | |
|  * Copyright (C) 2007 MIPS Technologies, Inc.
 | |
|  *   written by Ralf Baechle (ralf@linux-mips.org)
 | |
|  */
 | |
| #include <linux/console.h>
 | |
| #include <linux/init.h>
 | |
| 
 | |
| #include <asm/setup.h>
 | |
| 
 | |
| extern void prom_putchar(char);
 | |
| 
 | |
| static void early_console_write(struct console *con, const char *s, unsigned n)
 | |
| {
 | |
| 	while (n-- && *s) {
 | |
| 		if (*s == '\n')
 | |
| 			prom_putchar('\r');
 | |
| 		prom_putchar(*s);
 | |
| 		s++;
 | |
| 	}
 | |
| }
 | |
| 
 | |
| static struct console early_console = {
 | |
| 	.name	= "early",
 | |
| 	.write	= early_console_write,
 | |
| 	.flags	= CON_PRINTBUFFER | CON_BOOT,
 | |
| 	.index	= -1
 | |
| };
 | |
| 
 | |
| static int early_console_initialized __initdata;
 | |
| 
 | |
| void __init setup_early_printk(void)
 | |
| {
 | |
| 	if (early_console_initialized)
 | |
| 		return;
 | |
| 	early_console_initialized = 1;
 | |
| 
 | |
| 	register_console(&early_console);
 | |
| }
 |