|
@@ -197,13 +197,16 @@ static void uart_loop(uint32_t uart_base, int state)
|
|
|
|
|
|
static inline void __serial_set_baud(uint32_t uart_base, uint32_t baud)
|
|
|
{
|
|
|
+#ifdef CONFIG_DEBUG_EARLY_SERIAL
|
|
|
+ serial_early_set_baud(uart_base, baud);
|
|
|
+#else
|
|
|
uint16_t divisor = (get_uart_clk() + (baud * 8)) / (baud * 16)
|
|
|
- ANOMALY_05000230;
|
|
|
|
|
|
/* Program the divisor to get the baud rate we want */
|
|
|
serial_set_divisor(uart_base, divisor);
|
|
|
+#endif
|
|
|
}
|
|
|
-#ifdef CONFIG_SYS_BFIN_UART
|
|
|
|
|
|
static void uart_puts(uint32_t uart_base, const char *s)
|
|
|
{
|
|
@@ -313,65 +316,39 @@ void bfin_serial_initialize(void)
|
|
|
#endif
|
|
|
}
|
|
|
|
|
|
-#else
|
|
|
-
|
|
|
-/* Symbol for our assembly to call. */
|
|
|
-void serial_set_baud(uint32_t baud)
|
|
|
-{
|
|
|
- serial_early_set_baud(UART_BASE, baud);
|
|
|
-}
|
|
|
-
|
|
|
-/* Symbol for common u-boot code to call.
|
|
|
- * Setup the baudrate (brg: baudrate generator).
|
|
|
- */
|
|
|
-void serial_setbrg(void)
|
|
|
+#ifdef CONFIG_DEBUG_EARLY_SERIAL
|
|
|
+inline void uart_early_putc(uint32_t uart_base, const char c)
|
|
|
{
|
|
|
- serial_set_baud(gd->baudrate);
|
|
|
-}
|
|
|
-
|
|
|
-/* Symbol for our assembly to call. */
|
|
|
-void serial_initialize(void)
|
|
|
-{
|
|
|
- serial_early_init(UART_BASE);
|
|
|
-}
|
|
|
-
|
|
|
-/* Symbol for common u-boot code to call. */
|
|
|
-int serial_init(void)
|
|
|
-{
|
|
|
- serial_initialize();
|
|
|
- serial_setbrg();
|
|
|
- uart_lsr_clear(UART_BASE);
|
|
|
- return 0;
|
|
|
-}
|
|
|
+ /* send a \r for compatibility */
|
|
|
+ if (c == '\n')
|
|
|
+ uart_early_putc(uart_base, '\r');
|
|
|
|
|
|
-int serial_tstc(void)
|
|
|
-{
|
|
|
- return uart_tstc(UART_BASE);
|
|
|
-}
|
|
|
+ /* wait for the hardware fifo to clear up */
|
|
|
+ while (!(_lsr_read(pUART) & THRE))
|
|
|
+ continue;
|
|
|
|
|
|
-int serial_getc(void)
|
|
|
-{
|
|
|
- return uart_getc(UART_BASE);
|
|
|
+ /* queue the character for transmission */
|
|
|
+ bfin_write(&pUART->thr, c);
|
|
|
+ SSYNC();
|
|
|
}
|
|
|
|
|
|
-void serial_putc(const char c)
|
|
|
+void uart_early_puts(const char *s)
|
|
|
{
|
|
|
- uart_putc(UART_BASE, c);
|
|
|
+ while (*s)
|
|
|
+ uart_early_putc(UART_BASE, *s++);
|
|
|
}
|
|
|
|
|
|
-void serial_puts(const char *s)
|
|
|
+/* Symbol for our assembly to call. */
|
|
|
+void _serial_early_set_baud(uint32_t baud)
|
|
|
{
|
|
|
- while (*s)
|
|
|
- serial_putc(*s++);
|
|
|
+ serial_early_set_baud(UART_BASE, baud);
|
|
|
}
|
|
|
|
|
|
-LOOP(
|
|
|
-void serial_loop(int state)
|
|
|
+/* Symbol for our assembly to call. */
|
|
|
+void _serial_early_init(void)
|
|
|
{
|
|
|
- uart_loop(UART_BASE, state);
|
|
|
+ serial_early_init(UART_BASE);
|
|
|
}
|
|
|
-)
|
|
|
-
|
|
|
#endif
|
|
|
|
|
|
#endif
|