[PATCH] arm64: zynqmp: Add multiboot support for SPL/SPI offset calculation

Michal Simek michal.simek at amd.com
Tue Nov 21 13:52:07 CET 2023



On 11/10/23 13:34, Michal Simek wrote:
> In case of A/B update systems there should be an option to load the same
> binary/binaries to different location and they should work.
> Before this patch boot.bin with U-Boot SPL can be added to whatever 32k
> offset in SPI and SPL finds u-boot.itb at CONFIG_SYS_SPI_U_BOOT_OFFS
> offset. In case of A/B update systems that means that SPL is at different
> locations but it still points to the same u-boot.itb which is not correct.
> That's why include multiboot value to offset calculation to be able to
> point to image from the same base.
> It doesn't affect any current system which starts from 0 offset.
> 
> This patch also change Kria defconfig which uses A/B setup. Partition
> A starts at multiboot 64, partition B at multiboot 496.
> 
> And also print message about used SPI offset which is useful for all cases.
> 
> Signed-off-by: Michal Simek <michal.simek at amd.com>
> ---
> 
>   board/xilinx/zynqmp/zynqmp.c         | 15 +++++++++++++++
>   configs/xilinx_zynqmp_kria_defconfig |  2 +-
>   2 files changed, 16 insertions(+), 1 deletion(-)
> 
> diff --git a/board/xilinx/zynqmp/zynqmp.c b/board/xilinx/zynqmp/zynqmp.c
> index f16280308483..59feaaf6f32f 100644
> --- a/board/xilinx/zynqmp/zynqmp.c
> +++ b/board/xilinx/zynqmp/zynqmp.c
> @@ -681,3 +681,18 @@ void set_dfu_alt_info(char *interface, char *devstr)
>   	puts("DFU alt info setting: done\n");
>   }
>   #endif
> +
> +#if defined(CONFIG_SPL_SPI_LOAD)
> +unsigned int spl_spi_get_uboot_offs(struct spi_flash *flash)
> +{
> +	u32 offset;
> +	int multiboot = multi_boot();
> +
> +	offset = multiboot * SZ_32K;
> +	offset += CONFIG_SYS_SPI_U_BOOT_OFFS;
> +
> +	log_info("SPI offset:\t0x%x\n", offset);
> +
> +	return offset;
> +}
> +#endif
> diff --git a/configs/xilinx_zynqmp_kria_defconfig b/configs/xilinx_zynqmp_kria_defconfig
> index daedf1de01ea..a20df1a4072f 100644
> --- a/configs/xilinx_zynqmp_kria_defconfig
> +++ b/configs/xilinx_zynqmp_kria_defconfig
> @@ -48,7 +48,7 @@ CONFIG_SPL_PAYLOAD_ARGS_ADDR=0x8000000
>   CONFIG_SPL_RAM_SUPPORT=y
>   CONFIG_SPL_RAM_DEVICE=y
>   CONFIG_SPL_SPI_LOAD=y
> -CONFIG_SYS_SPI_U_BOOT_OFFS=0x280000
> +CONFIG_SYS_SPI_U_BOOT_OFFS=0x80000
>   CONFIG_SPL_ATF=y
>   CONFIG_SPL_ATF_NO_PLATFORM_PARAM=y
>   CONFIG_SYS_MAXARGS=64

Applied.
M


More information about the U-Boot mailing list