| Peter Horton | e87ddde | 2006-02-12 17:10:25 +0000 | [diff] [blame] | 1 | /* | 
|  | 2 | * (C) P. Horton 2006 | 
|  | 3 | */ | 
|  | 4 |  | 
| Peter Horton | e87ddde | 2006-02-12 17:10:25 +0000 | [diff] [blame] | 5 | #include <linux/init.h> | 
|  | 6 | #include <linux/kernel.h> | 
|  | 7 | #include <linux/console.h> | 
|  | 8 | #include <linux/serial_reg.h> | 
|  | 9 | #include <asm/addrspace.h> | 
|  | 10 | #include <asm/mach-cobalt/cobalt.h> | 
|  | 11 |  | 
|  | 12 | static void putchar(int c) | 
|  | 13 | { | 
|  | 14 | if(c == '\n') | 
|  | 15 | putchar('\r'); | 
|  | 16 |  | 
|  | 17 | while(!(COBALT_UART[UART_LSR] & UART_LSR_THRE)) | 
|  | 18 | ; | 
|  | 19 |  | 
|  | 20 | COBALT_UART[UART_TX] = c; | 
|  | 21 | } | 
|  | 22 |  | 
|  | 23 | static void cons_write(struct console *c, const char *s, unsigned n) | 
|  | 24 | { | 
|  | 25 | while(n-- && *s) | 
|  | 26 | putchar(*s++); | 
|  | 27 | } | 
|  | 28 |  | 
|  | 29 | static struct console cons_info = | 
|  | 30 | { | 
|  | 31 | .name	= "uart", | 
|  | 32 | .write	= cons_write, | 
|  | 33 | .flags	= CON_PRINTBUFFER | CON_BOOT, | 
|  | 34 | .index	= -1, | 
|  | 35 | }; | 
|  | 36 |  | 
|  | 37 | void __init cobalt_early_console(void) | 
|  | 38 | { | 
|  | 39 | register_console(&cons_info); | 
|  | 40 |  | 
|  | 41 | printk("Cobalt: early console registered\n"); | 
|  | 42 | } | 
| Yoichi Yuasa | 973c789 | 2006-06-07 09:53:34 +0900 | [diff] [blame] | 43 |  | 
|  | 44 | void __init disable_early_printk(void) | 
|  | 45 | { | 
|  | 46 | unregister_console(&cons_info); | 
|  | 47 | } |