|
|
|
@ -38,6 +38,7 @@ |
|
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
#include <common.h> |
|
|
|
|
#include <post.h> |
|
|
|
|
#include <watchdog.h> |
|
|
|
|
#include <serial.h> |
|
|
|
|
#include <linux/compiler.h> |
|
|
|
@ -153,6 +154,30 @@ static int uart_getc(uint32_t uart_base) |
|
|
|
|
return uart_rbr_val; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
#if CONFIG_POST & CONFIG_SYS_POST_UART |
|
|
|
|
# define LOOP(x) x |
|
|
|
|
#else |
|
|
|
|
# define LOOP(x) |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
LOOP( |
|
|
|
|
static void uart_loop(uint32_t uart_base, int state) |
|
|
|
|
{ |
|
|
|
|
u16 mcr; |
|
|
|
|
|
|
|
|
|
/* Drain the TX fifo first so bytes don't come back */ |
|
|
|
|
while (!(uart_lsr_read(uart_base) & TEMT)) |
|
|
|
|
continue; |
|
|
|
|
|
|
|
|
|
mcr = bfin_read(&pUART->mcr); |
|
|
|
|
if (state) |
|
|
|
|
mcr |= LOOP_ENA | MRTS; |
|
|
|
|
else |
|
|
|
|
mcr &= ~(LOOP_ENA | MRTS); |
|
|
|
|
bfin_write(&pUART->mcr, mcr); |
|
|
|
|
} |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
#ifdef CONFIG_SYS_BFIN_UART |
|
|
|
|
|
|
|
|
|
static void uart_puts(uint32_t uart_base, const char *s) |
|
|
|
@ -202,6 +227,13 @@ static void uart##n##_puts(const char *s) \ |
|
|
|
|
uart_puts(MMR_UART(n), s); \
|
|
|
|
|
} \
|
|
|
|
|
\
|
|
|
|
|
LOOP( \
|
|
|
|
|
static void uart##n##_loop(int state) \
|
|
|
|
|
{ \
|
|
|
|
|
uart_loop(MMR_UART(n), state); \
|
|
|
|
|
} \
|
|
|
|
|
) \
|
|
|
|
|
\
|
|
|
|
|
struct serial_device bfin_serial##n##_device = { \
|
|
|
|
|
.name = "bfin_uart"#n, \
|
|
|
|
|
.init = uart##n##_init, \
|
|
|
|
@ -211,6 +243,7 @@ struct serial_device bfin_serial##n##_device = { \ |
|
|
|
|
.tstc = uart##n##_tstc, \
|
|
|
|
|
.putc = uart##n##_putc, \
|
|
|
|
|
.puts = uart##n##_puts, \
|
|
|
|
|
LOOP(.loop = uart##n##_loop) \
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
#ifdef UART0_DLL |
|
|
|
@ -307,6 +340,13 @@ void serial_puts(const char *s) |
|
|
|
|
serial_putc(*s++); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
LOOP( |
|
|
|
|
void serial_loop(int state) |
|
|
|
|
{ |
|
|
|
|
uart_loop(UART_DLL, state); |
|
|
|
|
} |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
#endif |
|
|
|
|