This series adds dynamic device tree selection from FIT images for Qualcomm Snapdragon platforms, enabling U-Boot to select the appropriate DTB based on hardware parameters detected from SMEM.
Qualcomm fit based DTB format is documented in [1] The fit image contains only DTB, while the kernel will be part of UKI image. The implementation consists of three parts: 1. SMEM cache infrastructure: Provides cached access to commonly used SMEM data (socinfo, RAM partitions) to avoid redundant lookups during boot. Includes socinfo header from Linux kernel for SoC identification. 2. FIT multi-DTB selection: Implements the core selection logic that reads hardware parameters from SMEM, parses metadata DTB, matches FIT configurations, and loads the selected DTB with overlays. Integrates with EFI boot flow by setting fdt_addr. 3. Platform configuration: Enables the feature by default and configures platform-specific IMEM sizes needed for storage type detection (QCM6490/QCS615: 0x2B000, QCS9100: 0x59000). [1] https://github.com/qualcomm-linux/qcom-dtb-metadata/blob/main/Documentation.md --- Changes in v2: - In v1, a combined DTB format was used for multi-DTB support. Based on feedback, v2 implements FIT-based DTB selection instead. - Link to v1: https://lore.kernel.org/all/[email protected]/ Aswin Murugan (3): mach-snapdragon: Add generic SMEM cache infrastructure mach-snapdragon: Add FIT multi-DTB selection support configs: snapdragon: Enable FIT multi-DTB and configure IMEM arch/arm/mach-snapdragon/Kconfig | 18 + arch/arm/mach-snapdragon/Makefile | 1 + arch/arm/mach-snapdragon/board.c | 112 ++ arch/arm/mach-snapdragon/qcom-priv.h | 10 + arch/arm/mach-snapdragon/qcom_fit_multidtb.c | 1237 ++++++++++++++++++ arch/arm/mach-snapdragon/qcom_fit_multidtb.h | 170 +++ arch/arm/mach-snapdragon/rampart.h | 236 ++++ configs/qcm6490_defconfig | 2 + configs/qcom_defconfig | 2 + configs/qcom_qcs615_defconfig | 2 + configs/qcom_qcs9100_defconfig | 1 + include/soc/qcom/socinfo.h | 114 ++ 12 files changed, 1905 insertions(+) create mode 100644 arch/arm/mach-snapdragon/qcom_fit_multidtb.c create mode 100644 arch/arm/mach-snapdragon/qcom_fit_multidtb.h create mode 100644 arch/arm/mach-snapdragon/rampart.h create mode 100644 include/soc/qcom/socinfo.h -- 2.34.1

