]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
arm64: zynqmp: Add multiboot support for SPL/SPI offset calculation
authorMichal Simek <michal.simek@amd.com>
Fri, 10 Nov 2023 12:34:35 +0000 (13:34 +0100)
committerMichal Simek <michal.simek@amd.com>
Wed, 13 Dec 2023 07:58:06 +0000 (08:58 +0100)
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@amd.com>
Link: https://lore.kernel.org/r/93903a53ad9358ae69991558b787f574797effbe.1699619666.git.michal.simek@amd.com
board/xilinx/zynqmp/zynqmp.c
configs/xilinx_zynqmp_kria_defconfig

index f16280308483153e14dba863fc177f97a3a0cc6f..59feaaf6f32fb182cd079fadf7a476398430c0c6 100644 (file)
@@ -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
index daedf1de01eabd345fea61366eb82835bec7421b..a20df1a4072f449041d3c49de17f9ab446f426e1 100644 (file)
@@ -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