[PATCH 06/16] arm: stm32mp: spl: display error in board_init_f

Patrick DELAUNAY patrick.delaunay at st.com
Tue Apr 21 18:05:43 CEST 2020


Dear Wolfgang,

> From: Wolfgang Denk <wd at denx.de>
> Sent: mercredi 1 avril 2020 13:30
> 
> Dear Patrick Delaunay,
> 
> In message
> <20200331180330.6.I41a641a07fd12da45b392920fc3407e608926396 at 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 at 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


More information about the U-Boot mailing list