Merge git://git.kernel.org/pub/scm/linux/kernel/git/sfrench/cifs-2.6
[linux-2.6] / arch / mips / cobalt / console.c
1 /*
2  * (C) P. Horton 2006
3  */
4
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 }
43
44 void __init disable_early_printk(void)
45 {
46         unregister_console(&cons_info);
47 }