Re: [PATCH v4 4/4] sunxi: Support building a SPL as a TOC0 image

Andre Przywara
2021-10-20T23:50:47Z

On Tue, 19 Oct 2021 21:44:54 -0500
Samuel Holland <samuel@sholland.org> wrote:

Hi,

> Now that mkimage can generate TOC0 images, and the SPL can interpret
> them, hook up the build infrastructure so the user can choose which
> image type to build. Since the absolute load address is stored in the
> TOC0 header, that information must be passed to mkimage.
>
> Signed-off-by: Samuel Holland <samuel@sholland.org>

Nice, that allows to build TOC0 images very easily!
Tested for regressions on a bunch of boards, and on a Remix Mini PC,
selecting SPL_IMAGE_TYPE_SUNXI_TOC0: boots straight through!
Will double check the DT I made, then send it later, so that we get a
user in the tree.

Reviewed-by: Andre Przywara <andre.przywara@arm.com>

Cheers,
Andre

> ---
>
> (no changes since v2)
>
> Changes in v2:
> - Rebase on top of Icenowy's RISC-V support series
> - Rename Kconfig symbols to include the full image type name
>
> arch/arm/mach-sunxi/Kconfig | 2 ++
> board/sunxi/Kconfig | 24 ++++++++++++++++++++++++
> scripts/Makefile.spl | 5 ++++-
> 3 files changed, 30 insertions(+), 1 deletion(-)
> create mode 100644 board/sunxi/Kconfig
>
> diff --git a/arch/arm/mach-sunxi/Kconfig b/arch/arm/mach-sunxi/Kconfig
> index 2c18cf02d1..879efb9f61 100644
> --- a/arch/arm/mach-sunxi/Kconfig
> +++ b/arch/arm/mach-sunxi/Kconfig
> @@ -1050,6 +1050,8 @@ config BLUETOOTH_DT_DEVICE_FIXUP
> The used address is "bdaddr" if set, and "ethaddr" with the LSB
> flipped elsewise.
>
> +source "board/sunxi/Kconfig"
> +
> endif
>
> config CHIP_DIP_SCAN
> diff --git a/board/sunxi/Kconfig b/board/sunxi/Kconfig
> new file mode 100644
> index 0000000000..084a8b0c6c
> --- /dev/null
> +++ b/board/sunxi/Kconfig
> @@ -0,0 +1,24 @@
> +choice
> + prompt "SPL Image Type"
> + default SPL_IMAGE_TYPE_SUNXI_EGON
> +
> +config SPL_IMAGE_TYPE_SUNXI_EGON
> + bool "eGON (normal)"
> + help
> + Select this option to embed the SPL binary in an eGON.BT0 image,
> + which is compatible with the normal boot ROM (NBROM).
> +
> + This is usually the correct option to choose.
> +
> +config SPL_IMAGE_TYPE_SUNXI_TOC0
> + bool "TOC0 (secure)"
> + help
> + Select this option to embed the SPL binary in a TOC0 image,
> + which is compatible with the secure boot ROM (SBROM).
> +
> +endchoice
> +
> +config SPL_IMAGE_TYPE
> + string
> + default "sunxi_egon" if SPL_IMAGE_TYPE_SUNXI_EGON
> + default "sunxi_toc0" if SPL_IMAGE_TYPE_SUNXI_TOC0
> diff --git a/scripts/Makefile.spl b/scripts/Makefile.spl
> index 4cc23799db..635fa14cb9 100644
> --- a/scripts/Makefile.spl
> +++ b/scripts/Makefile.spl
> @@ -411,7 +411,10 @@ endif
> $(obj)/$(SPL_BIN).sfp: $(obj)/$(SPL_BIN).bin FORCE
> $(call if_changed,mkimage)
>
> -MKIMAGEFLAGS_sunxi-spl.bin = -A $(ARCH) -T sunxi_egon \
> +MKIMAGEFLAGS_sunxi-spl.bin = \
> + -A $(ARCH) \
> + -T $(CONFIG_SPL_IMAGE_TYPE) \
> + -a $(CONFIG_SPL_TEXT_BASE) \
> -n $(CONFIG_DEFAULT_DEVICE_TREE)
>
> OBJCOPYFLAGS_u-boot-spl-dtb.hex := -I binary -O ihex --change-address=$(CONFIG_SPL_TEXT_BASE)