[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