Add support to enable an early debug UART for debugging.

Signed-off-by: Wenyou Yang <wenyou.y...@atmel.com>
Reviewed-by: Simon Glass <s...@chromium.org>
Reviewed-by: Andreas Bießmann <andr...@biessmann.org>
---

Changes in v3:
 - Collect Reviewed-by tag.

Changes in v2:
 - Collect Reviewed-by tag.

 drivers/serial/Kconfig       |  7 +++++++
 drivers/serial/atmel_usart.c | 22 ++++++++++++++++++++++
 2 files changed, 29 insertions(+)

diff --git a/drivers/serial/Kconfig b/drivers/serial/Kconfig
index 9e48902..507a27d 100644
--- a/drivers/serial/Kconfig
+++ b/drivers/serial/Kconfig
@@ -98,6 +98,13 @@ config DEBUG_UART_AR933X
          driver will be available until the real driver model serial is
          running.
 
+config DEBUG_UART_ATMEL
+       bool "Atmel USART"
+       help
+         Select this to enable a debug UART using the atmel usart driver. You
+         will need to provide parameters to make this work. The driver will
+         be available until the real driver-model serial is running.
+
 config DEBUG_UART_NS16550
        bool "ns16550"
        help
diff --git a/drivers/serial/atmel_usart.c b/drivers/serial/atmel_usart.c
index e450135..7674f97 100644
--- a/drivers/serial/atmel_usart.c
+++ b/drivers/serial/atmel_usart.c
@@ -11,6 +11,7 @@
 #include <errno.h>
 #include <watchdog.h>
 #include <serial.h>
+#include <debug_uart.h>
 #include <linux/compiler.h>
 
 #include <asm/io.h>
@@ -226,3 +227,24 @@ U_BOOT_DRIVER(serial_atmel) = {
        .priv_auto_alloc_size   = sizeof(struct atmel_serial_priv),
 };
 #endif
+
+#ifdef CONFIG_DEBUG_UART_ATMEL
+static inline void _debug_uart_init(void)
+{
+       atmel_usart3_t *usart = (atmel_usart3_t *)CONFIG_DEBUG_UART_BASE;
+
+       atmel_serial_setbrg_internal(usart, 0, CONFIG_BAUDRATE);
+}
+
+static inline void _debug_uart_putc(int ch)
+{
+       atmel_usart3_t *usart = (atmel_usart3_t *)CONFIG_DEBUG_UART_BASE;
+
+       while (!(readl(&usart->csr) & USART3_BIT(TXRDY)))
+               ;
+
+       writel(ch, &usart->thr);
+}
+
+DEBUG_UART_FUNCS
+#endif
-- 
2.7.4

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to