]> git.ipfire.org Git - thirdparty/u-boot.git/commitdiff
arch: arm: mach-socfpga: Adjust a raw sectors for MMC loading of U-Boot from SPL
authorJan Kiszka <jan.kiszka@siemens.com>
Thu, 11 Dec 2025 16:34:58 +0000 (17:34 +0100)
committerTien Fong Chee <tien.fong.chee@intel.com>
Wed, 17 Dec 2025 10:50:32 +0000 (18:50 +0800)
If U-Boot is located on MMC, SPL and U-Boot proper are glued together.
More precisely, SPL is stored 4 times. Take this and its padding into
account and adjust sector number via board_spl_mmc_get_uboot_raw_sector.
This allows loading from a partition, without the need to hard-code the
offset via SYS_MMCSD_RAW_MODE_U_BOOT_USE_SECTOR

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Reviewed-by: Tien Fong Chee <tien.fong.chee@altera.com>
arch/arm/mach-socfpga/board.c

index 28554b7a10942176df569598fa9eb01a945d0910..7f65aed4540ed24ec4dd57c25b63e251ccd79a5e 100644 (file)
@@ -14,6 +14,7 @@
 #include <hang.h>
 #include <handoff.h>
 #include <image.h>
+#include <spl.h>
 #include <usb.h>
 #include <usb/dwc2_udc.h>
 #include <asm/global_data.h>
@@ -209,3 +210,13 @@ void lmb_arch_add_memory(void)
        }
 }
 #endif
+
+#if (defined(CONFIG_TARGET_SOCFPGA_ARRIA10) || \
+     defined(CONFIG_TARGET_SOCFPGA_GEN5)) && defined(CONFIG_XPL_BUILD)
+unsigned long board_spl_mmc_get_uboot_raw_sector(struct mmc *mmc,
+                                                unsigned long raw_sect)
+{
+       /* offset of u-boot proper inside u-boot-with-spl.sfp image */
+       return (CONFIG_SPL_PAD_TO * 4) / 512 + raw_sect;
+}
+#endif