Module Name: src
Committed By: cliff
Date: Tue Sep 22 07:01:18 UTC 2009
Modified Files:
src/sys/arch/mips/rmi [matt-nb5-mips64]: rmixl_com.c
Log Message:
add baud rate initialization to rmixl_putchar_init()
use symbolic offsets for reg access in rmixl_putchar()
To generate a diff of this commit:
cvs rdiff -u -r1.1.2.4 -r1.1.2.5 src/sys/arch/mips/rmi/rmixl_com.c
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/mips/rmi/rmixl_com.c
diff -u src/sys/arch/mips/rmi/rmixl_com.c:1.1.2.4 src/sys/arch/mips/rmi/rmixl_com.c:1.1.2.5
--- src/sys/arch/mips/rmi/rmixl_com.c:1.1.2.4 Tue Sep 15 10:32:41 2009
+++ src/sys/arch/mips/rmi/rmixl_com.c Tue Sep 22 07:01:18 2009
@@ -1,4 +1,4 @@
-/* $Id: rmixl_com.c,v 1.1.2.4 2009/09/15 10:32:41 cliff Exp $ */
+/* $Id: rmixl_com.c,v 1.1.2.5 2009/09/22 07:01:18 cliff Exp $ */
/*-
* Copyright (c) 2006 Urbana-Champaign Independent Media Center.
* Copyright (c) 2006 Garrett D'Amore.
@@ -101,7 +101,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: rmixl_com.c,v 1.1.2.4 2009/09/15 10:32:41 cliff Exp $");
+__KERNEL_RCSID(0, "$NetBSD: rmixl_com.c,v 1.1.2.5 2009/09/22 07:01:18 cliff Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -146,22 +146,40 @@
void
rmixl_putchar_init(uint64_t io_pbase)
{
+ int rate;
+ extern int comspeed(long, long, int);
+
com0addr = (uint32_t *)
MIPS_PHYS_TO_KSEG1(io_pbase + RMIXL_IO_DEV_UART_1);
+
+ if (CONSFREQ != -1) {
+ rate = comspeed(CONSPEED, CONSFREQ, COM_TYPE_NORMAL);
+ if (rate < 0)
+ return; /* XXX */
+
+ com0addr[com_lctl] = htobe32(LCR_DLAB);
+ com0addr[com_dlbl] = htobe32(rate & 0xff);
+ com0addr[com_dlbh] = htobe32(rate >> 8);
+ com0addr[com_lctl] = htobe32(LCR_8BITS); /* XXX */
+ com0addr[com_mcr] = htobe32(MCR_DTR|MCR_RTS);
+ com0addr[com_fifo] = htobe32(
+ FIFO_ENABLE|FIFO_RCV_RST|FIFO_XMT_RST|FIFO_TRIGGER_1);
+ }
}
+
void
rmixl_putchar(char c)
{
int timo = 150000;
- while ((be32toh(com0addr[5]) & LSR_TXRDY) == 0)
+ while ((be32toh(com0addr[com_lsr]) & LSR_TXRDY) == 0)
if (--timo == 0)
break;
- com0addr[0] = htobe32((uint32_t)c);
+ com0addr[com_data] = htobe32((uint32_t)c);
- while ((be32toh(com0addr[5]) & LSR_TSRE) == 0)
+ while ((be32toh(com0addr[com_lsr]) & LSR_TSRE) == 0)
if (--timo == 0)
break;
}