aboutsummaryrefslogtreecommitdiff
path: root/arch/mips/cobalt/console.c
diff options
context:
space:
mode:
authorPeter Horton <pdh@colonel-panic.org>2006-02-12 17:10:25 +0000
committerRalf Baechle <ralf@linux-mips.org>2006-03-21 13:27:44 +0000
commite87dddeb92618d9dbb8b9f946a193739a4447609 (patch)
tree4a07a4edf9c2ddb2f3f9a36118120144af476d44 /arch/mips/cobalt/console.c
parentc4a1745aa09fc110afdefea0e5d025043e348bae (diff)
[MIPS] Add early console for Cobalt.
Signed-off-by: Peter Horton <pdh@colonel-panic.org> Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
Diffstat (limited to 'arch/mips/cobalt/console.c')
-rw-r--r--arch/mips/cobalt/console.c43
1 files changed, 43 insertions, 0 deletions
diff --git a/arch/mips/cobalt/console.c b/arch/mips/cobalt/console.c
new file mode 100644
index 00000000000..45c2d27c756
--- /dev/null
+++ b/arch/mips/cobalt/console.c
@@ -0,0 +1,43 @@
+/*
+ * (C) P. Horton 2006
+ */
+
+#include <linux/config.h>
+#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");
+}