Early debug UART not working on AM33XX SoC

Simon Glass sjg at chromium.org
Thu Jan 27 16:05:54 CET 2022


Hi Felix,

On Wed, 26 Jan 2022 at 07:02, Felix Brack <fb at ltec.ch> wrote:
>
> Hello Simon,
>
> I am trying to get the current U-Boot master working on the PDU001
> board. This involves the use of an early debug UART.
>
> With commit 0dba4586 (arm: Init the debug UART) the early debug UART on
> the AM33XX SoC doesn't work anymore.
>
> By looking at the code involved I believe a call to
> setup_clocks_for_console() implemented in clock_am33xx.c before the call
> to debug_uart_init() is missing. This is also what happens prior to
> commit 0dba4586 by a call to early_system_init() which in turn calls
> setup_early_clocks() which then calls setup_clocks_for_console().
>
> My quick and dirty fix consist of inserting a call in crt0.S to
> setup_clocks_for_console() just before the call to debug_uart_init()
> which was added in commit 0dba4586. I have guarded this call with
> #if/#endif testing for CONFIG_AM33XX. The code sequence in crt0.S now
> looks like this:
>
> #if defined(CONFIG_DEBUG_UART) && CONFIG_IS_ENABLED(SERIAL)
>   #if defined(CONFIG_AM33XX)
>     bl setup_clocks_for_console
>   #endif
>     bl debug_uart_init
> #endif
>
> However, from what I understand the crt0.S is for _all_ ARM boards hence
> it's probably a bad idea polluting it with such #if/#endif tests for
> different SoCs. What do you think?
>
> If my quick and dirty fix is not that dirty I would be happy to send a
> patch which would also include the removal of the currently remaining
> call to debug_uart_init() in am33xx/board.c
>
> Please apologize my narrow view of the matter dealing only with AM33XX SoCs.

Are you able to put that call into board_debug_uart_init() and enable
CONFIG_DEBUG_UART_BOARD_INIT ?

Regards,
Simon


More information about the U-Boot mailing list