
Dear Wolfgang,
From: Wolfgang Denk wd@denx.de Sent: mercredi 1 avril 2020 13:30
Dear Patrick Delaunay,
In message 20200331180330.6.I41a641a07fd12da45b392920fc3407e608926396@changeid you wrote:
Update board_init_f and try to display error message when console is available.
This patch adds trace to debug a spl boot issue when DEBUG and DEBUG_UART is not activated, after uart probe.
Signed-off-by: Patrick Delaunay patrick.delaunay@st.com
arch/arm/mach-stm32mp/spl.c | 33 ++++++++++++++++----------------- 1 file changed, 16 insertions(+), 17 deletions(-)
diff --git a/arch/arm/mach-stm32mp/spl.c b/arch/arm/mach-stm32mp/spl.c index ca4231cd0d..dfdb5bb7e9 100644 --- a/arch/arm/mach-stm32mp/spl.c +++ b/arch/arm/mach-stm32mp/spl.c @@ -79,37 +79,36 @@ void spl_display_print(void) void board_init_f(ulong dummy) { struct udevice *dev;
- int ret;
int ret, clk, reset, pinctrl;
arch_cpu_init();
ret = spl_early_init(); if (ret) {
debug("spl_early_init() failed: %d\n", ret);
hang(); }debug("%s: spl_early_init() failed: %d\n", __func__, ret);
- ret = uclass_get_device(UCLASS_CLK, 0, &dev);
- if (ret) {
debug("Clock init failed: %d\n", ret);
return;
- }
- clk = uclass_get_device(UCLASS_CLK, 0, &dev);
- if (clk)
debug("%s: Clock init failed: %d\n", __func__, clk);
- ret = uclass_get_device(UCLASS_RESET, 0, &dev);
- if (ret) {
debug("Reset init failed: %d\n", ret);
return;
- }
- reset = uclass_get_device(UCLASS_RESET, 0, &dev);
- if (reset)
debug("%s: Reset init failed: %d\n", __func__, reset);
- ret = uclass_get_device(UCLASS_PINCTRL, 0, &dev);
- if (ret) {
debug("%s: Cannot find pinctrl device\n", __func__);
return;
- }
pinctrl = uclass_get_device(UCLASS_PINCTRL, 0, &dev);
if (pinctrl)
debug("%s: Cannot find pinctrl device: %d\n",
__func__, pinctrl);
/* enable console uart printing */ preloader_console_init();
if (clk || reset || pinctrl)
printf("%s: probe failed clk=%d reset=%d pinctrl=%d\n",
__func__, clk, reset, pinctrl);
This change makes little sense to me/ If you want error messages, then just turn above debug() into printf(), and be done with it. As an additional benefit so see at once which step failed.
In this patch, I try to display error as soon as console is available (after preloader_console_init) , if after one driver initialization (clk, reset, pincontrol) failing.
Change debug to printf only works only if CONFIG_DEBUG_UART is activated (not by default) and board_debug_uart_init() exist to configure the needed UART TX pins.
At least I need to remove the return and change them to hang() to interrupt SPL execution if one probe failed to detect issue
I spent some time for this kind of issue: clock probe failed without any trace.
Best regards,
Wolfgang Denk
--
Regards Patrick