| /* | 
 |  * (C) P. Horton 2006 | 
 |  */ | 
 |  | 
 | #include <linux/init.h> | 
 | #include <linux/kernel.h> | 
 | #include <linux/console.h> | 
 | #include <linux/serial_reg.h> | 
 | #include <asm/addrspace.h> | 
 | #include <asm/mach-cobalt/cobalt.h> | 
 |  | 
 | static void putchar(int c) | 
 | { | 
 | 	if(c == '\n') | 
 | 		putchar('\r'); | 
 |  | 
 | 	while(!(COBALT_UART[UART_LSR] & UART_LSR_THRE)) | 
 | 		; | 
 |  | 
 | 	COBALT_UART[UART_TX] = c; | 
 | } | 
 |  | 
 | static void cons_write(struct console *c, const char *s, unsigned n) | 
 | { | 
 | 	while(n-- && *s) | 
 | 		putchar(*s++); | 
 | } | 
 |  | 
 | static struct console cons_info = | 
 | { | 
 | 	.name	= "uart", | 
 | 	.write	= cons_write, | 
 | 	.flags	= CON_PRINTBUFFER | CON_BOOT, | 
 | 	.index	= -1, | 
 | }; | 
 |  | 
 | void __init cobalt_early_console(void) | 
 | { | 
 | 	register_console(&cons_info); | 
 |  | 
 | 	printk("Cobalt: early console registered\n"); | 
 | } | 
 |  | 
 | void __init disable_early_printk(void) | 
 | { | 
 | 	unregister_console(&cons_info); | 
 | } |