Dear Wolfgang, > From: Wolfgang Denk <w...@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.delau...@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); > > + debug("%s: spl_early_init() failed: %d\n", __func__, ret); > > hang(); > > } > > > > - 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