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