[PATCH] spl: add support for custom boot method names

Michael Walle michael at walle.cc
Thu Jan 13 18:20:38 CET 2022


Am 2022-01-13 16:22, schrieb Heiko Thiery:
> Currently the names MMC1, MMC2 and MMC2_2 are output in the SPL. To
> achieve more userbility here the name of the boot source can be 
> returned.
> E.g. for "MMC1" -> "eMMC" or "MMC2" -> "SD card".
> 
> Signed-off-by: Heiko Thiery <heiko.thiery at gmail.com>

Very nice! If my board would have already support for multiple boot
sources, this would be a very good improvement for the user. Our
downstream bootloader has that support and it always puzzled me
whats MMC1, MMC2 and so on. In fact, theres two SPI boot sources
there, which cannot be distinguished at all at the moment; they
have different offsets for the same SPI flash.

Except for one nit below:
Reviewed-by: Michael Walle <michael at walle.cc>

> ---
>  common/spl/spl.c | 5 +++++
>  include/spl.h    | 5 ++++-
>  2 files changed, 9 insertions(+), 1 deletion(-)
> 
> diff --git a/common/spl/spl.c b/common/spl/spl.c
> index 4c101ec5d3..b7b53f352e 100644
> --- a/common/spl/spl.c
> +++ b/common/spl/spl.c
> @@ -174,6 +174,11 @@ __weak void spl_board_prepare_for_optee(void *fdt)
>  {
>  }
> 
> +__weak const char *spl_board_loader_name(u32 boot_device)
> +{
> +	return NULL;
> +}
> +
>  #if CONFIG_IS_ENABLED(OPTEE_IMAGE)
>  __weak void __noreturn jump_to_image_optee(struct spl_image_info 
> *spl_image)
>  {
> diff --git a/include/spl.h b/include/spl.h
> index 0af0ee3003..a7f17a3837 100644
> --- a/include/spl.h
> +++ b/include/spl.h
> @@ -458,6 +458,7 @@ void spl_board_prepare_for_optee(void *fdt);
>  void spl_board_prepare_for_boot(void);
>  int spl_board_ubi_load_image(u32 boot_device);
>  int spl_board_boot_device(u32 boot_device);
> +const char *spl_board_loader_name(u32 boot_device);

function documentation maybe?

>  /**
>   * jump_to_image_linux() - Jump to a Linux kernel from SPL
> @@ -541,7 +542,9 @@ struct spl_image_loader {
>  static inline const char *spl_loader_name(const struct
> spl_image_loader *loader)
>  {
>  #ifdef CONFIG_SPL_LIBCOMMON_SUPPORT
> -	return loader->name;
> +	const char *name;
> +	name = spl_board_loader_name(loader->boot_device);
> +	return name ?: loader->name;
>  #else
>  	return NULL;
>  #endif

-michael


More information about the U-Boot mailing list