From 259cfdc79f405c2e5332e1a3f5478cd29a01fab0 Mon Sep 17 00:00:00 2001 From: Grissiom Date: Mon, 18 Aug 2014 15:14:22 +0800 Subject: [PATCH] ls1bdev: don't hardcode the uart base address in rt_hw_console_output --- bsp/ls1bdev/drivers/board.c | 42 +++++++++++++++++++++---------------- 1 file changed, 24 insertions(+), 18 deletions(-) diff --git a/bsp/ls1bdev/drivers/board.c b/bsp/ls1bdev/drivers/board.c index 06a985cf1b..307d8d28b0 100644 --- a/bsp/ls1bdev/drivers/board.c +++ b/bsp/ls1bdev/drivers/board.c @@ -71,6 +71,23 @@ void rt_hw_board_init(void) rt_kprintf("current sr: 0x%08x\n", read_c0_status()); } +#define __raw_out_put(unr) \ + while (*ptr) \ + { \ + if (*ptr == '\n') \ + { \ + /* FIFO status, contain valid data */ \ + while (!(UART_LSR(UART##unr##_BASE) & (UARTLSR_TE | UARTLSR_TFE))); \ + /* write data */ \ + UART_DAT(UART##unr##_BASE) = '\r'; \ + } \ + /* FIFO status, contain valid data */ \ + while (!(UART_LSR(UART##unr##_BASE) & (UARTLSR_TE | UARTLSR_TFE))); \ + /* write data */ \ + UART_DAT(UART##unr##_BASE) = *ptr; \ + ptr ++; \ + } + /* UART line status register value */ #define UARTLSR_ERROR (1 << 7) #define UARTLSR_TE (1 << 6) @@ -82,24 +99,13 @@ void rt_hw_board_init(void) #define UARTLSR_DR (1 << 0) void rt_hw_console_output(const char *ptr) { - /* stream mode */ - while (*ptr) - { - if (*ptr == '\n') - { - /* FIFO status, contain valid data */ - while (!(UART_LSR(UART0_BASE) & (UARTLSR_TE | UARTLSR_TFE))); - /* write data */ - UART_DAT(UART0_BASE) = '\r'; - } - - /* FIFO status, contain valid data */ - while (!(UART_LSR(UART0_BASE) & (UARTLSR_TE | UARTLSR_TFE))); - /* write data */ - UART_DAT(UART0_BASE) = *ptr; - - ptr ++; - } +#if defined(RT_USING_UART0) + __raw_out_put(0); +#elif defined(RT_USING_UART1) + __raw_out_put(1); +#elif defined(RT_USING_UART3) + __raw_out_put(3); +#endif } /*@}*/