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_ */