[PATCH 34.5 6/6] LEON3: added TX-wait-complete and CR on NL support for UART
Joel Sherrill
joel.sherrill at OARcorp.com
Wed Apr 18 15:38:25 UTC 2012
apbuart_outbyte_polled prototype should still have closing
parenthesis on separate line.
rtems_io_register_name spacing on parentheses is inconsistent.
Is debugputs.c really the right name? There should no longer
be a method with that name. Only printk() support. And I
don't know why you would need the cr/lf translation.
On 04/18/2012 10:19 AM, Daniel Hellstrom wrote:
> Signed-off-by: Daniel Hellstrom<daniel at gaisler.com>
> ---
> c/src/lib/libbsp/sparc/leon3/console/console.c | 10 ++++++----
> c/src/lib/libbsp/sparc/leon3/console/debugputs.c | 18 ++++++++++++++++--
> 2 files changed, 22 insertions(+), 6 deletions(-)
>
> diff --git a/c/src/lib/libbsp/sparc/leon3/console/console.c b/c/src/lib/libbsp/sparc/leon3/console/console.c
> index 068aced..c095979 100644
> --- a/c/src/lib/libbsp/sparc/leon3/console/console.c
> +++ b/c/src/lib/libbsp/sparc/leon3/console/console.c
> @@ -50,8 +50,10 @@ int syscon_uart_index __attribute__((weak)) = 0;
>
> extern void apbuart_outbyte_polled(
> ambapp_apb_uart *regs,
> - char ch
> -);
> + unsigned char ch,
> + int do_cr_on_newline,
> + int wait_sent);
> +
>
> /* body is in debugputs.c */
>
> @@ -157,7 +159,7 @@ ssize_t console_write_polled (int minor, const char *buf, size_t len)
> port = minor - 1;
>
> while (nwrite< len) {
> - apbuart_outbyte_polled(apbuarts[port].regs, *buf++);
> + apbuart_outbyte_polled(apbuarts[port].regs, *buf++, 1, 0);
> nwrite++;
> }
> return nwrite;
> @@ -346,7 +348,7 @@ rtems_device_driver console_initialize(
> * On a MP system one should not open UARTs that other OS instances use.
> */
> if (syscon_uart_index< uarts) {
> - status = rtems_io_register_name( "/dev/console", major, 0 );
> + status = rtems_io_register_name( "/dev/console", major, 0);
> if (status != RTEMS_SUCCESSFUL)
> rtems_fatal_error_occurred(status);
> }
> diff --git a/c/src/lib/libbsp/sparc/leon3/console/debugputs.c b/c/src/lib/libbsp/sparc/leon3/console/debugputs.c
> index 7058cf8..080d4fa 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);
> }
>
> /*
--
Joel Sherrill, Ph.D. Director of Research& Development
joel.sherrill at OARcorp.com On-Line Applications Research
Ask me about RTEMS: a free RTOS Huntsville AL 35805
Support Available (256) 722-9985
More information about the devel
mailing list