diff mbox

[U-Boot,v2,2/2] serial: atmel_usart: Support enable an early debug UART

Message ID 1473734253-21583-3-git-send-email-wenyou.yang@atmel.com
State Superseded
Delegated to: Andreas Bießmann
Headers show

Commit Message

Wenyou Yang Sept. 13, 2016, 2:37 a.m. UTC
Add support to enable an early debug UART for debugging.

Signed-off-by: Wenyou Yang <wenyou.yang@atmel.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
---

Changes in v2:
 - Collect the Reviewed-by tag.

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

Comments

Andreas Bießmann Oct. 16, 2016, 8:07 p.m. UTC | #1
On Tue, Sep 13, 2016 at 10:37:33AM +0800, Wenyou Yang wrote:
> Add support to enable an early debug UART for debugging.
> 
> Signed-off-by: Wenyou Yang <wenyou.yang@atmel.com>
> Reviewed-by: Simon Glass <sjg@chromium.org>

Reviewed-by: Andreas Bießmann <andreas@biessmann.org>

> ---
> 
> Changes in v2:
>  - Collect the 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 a6035dc..b8ecd80 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
diff mbox

Patch

diff --git a/drivers/serial/Kconfig b/drivers/serial/Kconfig
index a6035dc..b8ecd80 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