Module Name: src
Committed By: matt
Date: Wed Feb 1 02:05:14 UTC 2012
Modified Files:
src/sys/arch/evbmips/rasoc: machdep.c
src/sys/arch/mips/ralink: ralink_com.c ralink_var.h
Log Message:
Fix early console support.
To generate a diff of this commit:
cvs rdiff -u -r1.5 -r1.6 src/sys/arch/evbmips/rasoc/machdep.c
cvs rdiff -u -r1.2 -r1.3 src/sys/arch/mips/ralink/ralink_com.c
cvs rdiff -u -r1.4 -r1.5 src/sys/arch/mips/ralink/ralink_var.h
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/arch/evbmips/rasoc/machdep.c
diff -u src/sys/arch/evbmips/rasoc/machdep.c:1.5 src/sys/arch/evbmips/rasoc/machdep.c:1.6
--- src/sys/arch/evbmips/rasoc/machdep.c:1.5 Tue Aug 16 06:59:19 2011
+++ src/sys/arch/evbmips/rasoc/machdep.c Wed Feb 1 02:05:14 2012
@@ -1,4 +1,4 @@
-/* $NetBSD: machdep.c,v 1.5 2011/08/16 06:59:19 matt Exp $ */
+/* $NetBSD: machdep.c,v 1.6 2012/02/01 02:05:14 matt Exp $ */
/*-
* Copyright (c) 2011 CradlePoint Technology, Inc.
* All rights reserved.
@@ -27,7 +27,7 @@
*/
#include <sys/cdefs.h> /* RCS ID & Copyright macro defns */
-__KERNEL_RCSID(0, "$NetBSD: machdep.c,v 1.5 2011/08/16 06:59:19 matt Exp $");
+__KERNEL_RCSID(0, "$NetBSD: machdep.c,v 1.6 2012/02/01 02:05:14 matt Exp $");
#include <sys/param.h>
#include <sys/boot_flag.h>
@@ -107,13 +107,13 @@ mach_init(void)
memset(edata, 0, kernend - (vaddr_t)edata);
-#ifdef RA_CONSOLE_EARLY
+#ifdef RALINK_CONSOLE_EARLY
/*
* set up early console
* cannot printf until sometime (?) in mips_vector_init
* meanwhile can use the ra_console_putc primitive if necessary
*/
- ra_console_early();
+ ralink_console_early();
#endif
/* set CPU model info for sysctl_hw */
Index: src/sys/arch/mips/ralink/ralink_com.c
diff -u src/sys/arch/mips/ralink/ralink_com.c:1.2 src/sys/arch/mips/ralink/ralink_com.c:1.3
--- src/sys/arch/mips/ralink/ralink_com.c:1.2 Thu Jul 28 15:38:49 2011
+++ src/sys/arch/mips/ralink/ralink_com.c Wed Feb 1 02:05:14 2012
@@ -1,4 +1,4 @@
-/* $NetBSD: ralink_com.c,v 1.2 2011/07/28 15:38:49 matt Exp $ */
+/* $NetBSD: ralink_com.c,v 1.3 2012/02/01 02:05:14 matt Exp $ */
/*-
* Copyright (c) 2011 CradlePoint Technology, Inc.
* All rights reserved.
@@ -130,7 +130,7 @@
/* ralink_com.c -- Ralink 3052 uart console driver */
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ralink_com.c,v 1.2 2011/07/28 15:38:49 matt Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ralink_com.c,v 1.3 2012/02/01 02:05:14 matt Exp $");
#include <sys/param.h>
#include <sys/bus.h>
@@ -195,6 +195,45 @@ uart_write(const u_int offset, const uin
*RA_IOREG_VADDR(RA_UART_LITE_BASE, offset) = val;
}
+#ifdef RALINK_CONSOLE_EARLY
+static int
+ralink_cngetc(dev_t dv)
+{
+ if ((uart_read(RA_UART_LSR) & LSR_RXRDY) == 0)
+ return -1;
+
+ return uart_read(RA_UART_RBR) & 0xff;
+}
+
+static void
+ralink_cnputc(dev_t dv, int c)
+{
+ int timo = 150000;
+
+ while ((uart_read(RA_UART_LSR) & LSR_TXRDY) == 0 && --timo > 0)
+ ;
+
+ uart_write(RA_UART_TBR, c);
+ __asm __volatile("sync");
+
+ timo = 150000;
+ while ((uart_read(RA_UART_LSR) & LSR_TSRE) == 0 && --timo > 0)
+ ;
+}
+
+static struct consdev ralink_earlycons = {
+ .cn_putc = ralink_cnputc,
+ .cn_getc = ralink_cngetc,
+ .cn_pollc = nullcnpollc,
+};
+
+void
+ralink_console_early(void)
+{
+ cn_tab = &ralink_earlycons;
+}
+#endif
+
int
ralink_com_match(device_t parent, cfdata_t cf, void *aux)
Index: src/sys/arch/mips/ralink/ralink_var.h
diff -u src/sys/arch/mips/ralink/ralink_var.h:1.4 src/sys/arch/mips/ralink/ralink_var.h:1.5
--- src/sys/arch/mips/ralink/ralink_var.h:1.4 Wed Aug 3 16:26:53 2011
+++ src/sys/arch/mips/ralink/ralink_var.h Wed Feb 1 02:05:14 2012
@@ -1,4 +1,4 @@
-/* $NetBSD: ralink_var.h,v 1.4 2011/08/03 16:26:53 matt Exp $ */
+/* $NetBSD: ralink_var.h,v 1.5 2012/02/01 02:05:14 matt Exp $ */
/*-
* Copyright (c) 2011 CradlePoint Technology, Inc.
* All rights reserved.
@@ -57,8 +57,8 @@ extern int ra_check_memo_reg(int);
/* helper defines */
#define MS_TO_HZ(ms) ((ms) * hz / 1000)
-#ifdef RA_CONSOLE_EARLY
-extern void ra_console_early(void);
+#ifdef RALINK_CONSOLE_EARLY
+extern void ralink_console_early(void);
#endif
#endif /* _RALINK_VAR_H_ */