summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/sparc/leon3/console/debugputs.c
diff options
context:
space:
mode:
authorDaniel Hellstrom <daniel@gaisler.com>2012-04-19 15:21:25 +0200
committerGedare Bloom <gedare@rtems.org>2012-04-19 13:28:06 -0400
commit5d48037f83479c6937983d6a423933931d305855 (patch)
treee91d50d5ccb93e7ec2f10763f9c15fde15a6ad4d /c/src/lib/libbsp/sparc/leon3/console/debugputs.c
parentLEON3: debugputs removed pointless isinit code, invoked only once (diff)
downloadrtems-5d48037f83479c6937983d6a423933931d305855.tar.bz2
LEON3: added TX-wait-complete and CR on NL support for UART
Signed-off-by: Daniel Hellstrom <daniel@gaisler.com>
Diffstat (limited to '')
-rw-r--r--c/src/lib/libbsp/sparc/leon3/console/debugputs.c18
1 files changed, 16 insertions, 2 deletions
diff --git a/c/src/lib/libbsp/sparc/leon3/console/debugputs.c b/c/src/lib/libbsp/sparc/leon3/console/debugputs.c
index 7058cf8c8e..080d4fad69 100644
--- a/c/src/lib/libbsp/sparc/leon3/console/debugputs.c
+++ b/c/src/lib/libbsp/sparc/leon3/console/debugputs.c
@@ -89,9 +89,12 @@ int bsp_debug_uart_init(void)
*/
void apbuart_outbyte_polled(
ambapp_apb_uart *regs,
- unsigned char ch
+ unsigned char ch,
+ int do_cr_on_newline,
+ int wait_sent
)
{
+send:
while ( (regs->status & LEON_REG_UART_STATUS_THE) == 0 ) {
/* Lower bus utilization while waiting for UART */
asm volatile ("nop"::); asm volatile ("nop"::);
@@ -100,6 +103,17 @@ void apbuart_outbyte_polled(
asm volatile ("nop"::); asm volatile ("nop"::);
}
regs->data = (unsigned int) ch;
+
+ if ((ch == '\n') && do_cr_on_newline) {
+ ch = '\r';
+ goto send;
+ }
+
+ /* Wait until the character has been sent? */
+ if (wait_sent) {
+ while ((regs->status & LEON_REG_UART_STATUS_THE) == 0)
+ ;
+ }
}
/*
@@ -129,7 +143,7 @@ static void bsp_out_char(char c)
return;
}
- apbuart_outbyte_polled(dbg_uart, c);
+ apbuart_outbyte_polled(dbg_uart, c, 1, 1);
}
/*