This patch set adds support for falcon boot on AM62a, 62p and 62x by bypassing A53 SPL and U-boot.
Existing Boot flow: R5 SPL -> ATF -> A53 SPL -> U-Boot -> Linux Kernel Updated flow: R5 SPL -> ATF -> Linux Kernel U-boot's falcon flow expects the jump from SPL to kernel to happen on the same core which is not directly applicable for our heterogeneous platforms since ATF, OPTEE and other non SPL binaries from tispl.bin should be loaded before the kernel by the R5 SPL. So we have to use a non std flow to bypass A53 SPL and U-Boot, we first load the newly added tispl_falcon.bin instead of tispl.bin which lacks u-boot-spl.bin (A53's SPL) and the corresponding fdt. This sets up dm, tifs, optee and atf. Once loaded, we load the kernel and the dtb (with fixups) at ATF's PRELOADED_BL33_BASE and K3_HW_CONFIG_BASE. NOTE: Since we're now using the SPL to load the kernel and kernel expects a 2MiB aligned load address, the existing PRELOADED_BL33_BASE has to be changed for ATF to 0x80200000. This patch depends on: * [PATCH v3] spl: return header size to spl_load in os boot [1] * [PATCH v2] config: falcon: move CFG_SYS_SPI_* to Kconfig [2] * [PATCH v6] spl: remove usage of CMD_(BOOTI|BOOTZ) from image parsing [3] [1]: https://lore.kernel.org/u-boot/20250311093546.3371193-1-ansh...@ti.com/ [2]: https://lore.kernel.org/u-boot/20250311044414.3155688-1-ansh...@ti.com/ [3]: https://lore.kernel.org/u-boot/20250403215522.1284502-1-ansh...@ti.com/ Signed-off-by: Anshul Dalal <ansh...@ti.com> --- Changes in v3: * Make tifs load and entry address consistent with tispl for am62a and 62p * Update loadables order to be same as tispl.bin * Use rootfs for boot instead of boot partition * Disable SPL_HAS_BOOTZ to save space * Add default dtbs for each board in Kconfig * Fix fdt totalsize in the header before applying fixups * Update Makefile to clean tispl_falcon.bin on `make clean` v2: https://lore.kernel.org/u-boot/20250311095758.3383047-1-ansh...@ti.com/ Changes in v2: * Move to CONFIG_SYS_SPI_* as per [2] * Remove the need for CMD_BOOTI as per [3] v1: https://lore.kernel.org/u-boot/20250307075541.2571104-1-ansh...@ti.com/ --- Anshul Dalal (10): spl: Kconfig: allow K3 devices to use falcon mode mach-k3: fix reading size and addr from fdt on R5 arm: dts: am62a: allow booting from eMMC arch: arm: k3-binman: add fit for falcon boot mach-k3: add eMMC FS boot support for am62[ap] mach-k3: sysfw-loader: update img_hdr for falcon config: add falcon boot config fragment for am62x board: ti: add default dtb for am62[axp] in falcon mode mach-k3: common: add falcon support for 62[axp] Makefile: update tispl regex to also clean falcon spl Makefile | 2 +- arch/arm/dts/k3-am625-sk-binman.dtsi | 64 +++++++++++++++ arch/arm/dts/k3-am62a-sk-binman.dtsi | 64 +++++++++++++++ arch/arm/dts/k3-am62a7-sk-u-boot.dtsi | 4 + arch/arm/dts/k3-am62p-sk-binman.dtsi | 51 ++++++++++++ arch/arm/dts/k3-binman.dtsi | 53 +++++++++++++ arch/arm/mach-k3/am62ax/am62a7_init.c | 4 + arch/arm/mach-k3/am62px/am62p5_init.c | 4 + arch/arm/mach-k3/common.c | 107 ++++++++++++++++++++++++++ arch/arm/mach-k3/common_fdt.c | 4 +- arch/arm/mach-k3/r5/sysfw-loader.c | 6 +- board/ti/am62ax/Kconfig | 3 + board/ti/am62px/Kconfig | 3 + board/ti/am62x/Kconfig | 3 + common/spl/Kconfig | 3 +- configs/am62x_r5_falcon.config | 42 ++++++++++ 16 files changed, 413 insertions(+), 4 deletions(-) create mode 100644 configs/am62x_r5_falcon.config -- 2.49.0