Early debug UART not working on AM33XX SoC

Felix Brack fb at ltec.ch
Thu Jan 27 17:27:07 CET 2022


Hello Simon,

On 27.01.22 16:05, Simon Glass wrote:
> 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 ?
> 
Sure I can but there two drawbacks:
1. this fixes the problem only for my board, others might remain broken
2. the now redundant call to setup_early_clocks() in am33xx/board.c
   remains (at least it does not seem to hurt ;-))

I will prepare a patch with a modified board_debug_uart_init() for the
PDU001 board then.

-- 
Many thanks for your help and kind regards, Felix



More information about the U-Boot mailing list