| /* | |
| * (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); | |
| } |