[U-Boot] [U-Boot, v2, 2/2] serial: atmel_usart: Support enable an early debug UART
Andreas Bießmann
andreas at biessmann.org
Sun Oct 16 22:07:39 CEST 2016
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 at atmel.com>
> Reviewed-by: Simon Glass <sjg at chromium.org>
Reviewed-by: Andreas Bießmann <andreas at 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
More information about the U-Boot
mailing list