mach-k3: add eMMC FS boot support for am62[ap]
authorAnshul Dalal <anshuld@ti.com>
Tue, 15 Apr 2025 09:52:24 +0000 (15:22 +0530)
committerTom Rini <trini@konsulko.com>
Thu, 24 Apr 2025 14:24:21 +0000 (08:24 -0600)
This makes spl_mmc_boot_mode consistent across am62x, 62a and 62p.

If MMCSD_MODE_EMMCBOOT is returned, FS boot fails since it checks for FS
on the hardware partitions, not the UDA. So to allow FS boot from EMMC,
the function should return MMCSD_MODE_FS instead which allows us to read
from FS on the UDA.

Signed-off-by: Anshul Dalal <anshuld@ti.com>
arch/arm/mach-k3/am62ax/am62a7_init.c
arch/arm/mach-k3/am62px/am62p5_init.c

index 52a2127..28aee34 100644 (file)
@@ -216,6 +216,10 @@ u32 spl_mmc_boot_mode(struct mmc *mmc, const u32 boot_device)
 
        switch (bootmode) {
        case BOOT_DEVICE_EMMC:
+               if (IS_ENABLED(CONFIG_SUPPORT_EMMC_BOOT))
+                       return MMCSD_MODE_EMMCBOOT;
+               if (IS_ENABLED(CONFIG_SPL_FS_FAT) || IS_ENABLED(CONFIG_SPL_FS_EXT4))
+                       return MMCSD_MODE_FS;
                return MMCSD_MODE_EMMCBOOT;
        case BOOT_DEVICE_MMC:
                if (bootmode_cfg & MAIN_DEVSTAT_PRIMARY_MMC_FS_RAW_MASK)
index 01e47de..6e3c66e 100644 (file)
@@ -262,6 +262,10 @@ u32 spl_mmc_boot_mode(struct mmc *mmc, const u32 boot_device)
 
        switch (bootmode) {
        case BOOT_DEVICE_EMMC:
+               if (IS_ENABLED(CONFIG_SUPPORT_EMMC_BOOT))
+                       return MMCSD_MODE_EMMCBOOT;
+               if (IS_ENABLED(CONFIG_SPL_FS_FAT) || IS_ENABLED(CONFIG_SPL_FS_EXT4))
+                       return MMCSD_MODE_FS;
                return MMCSD_MODE_EMMCBOOT;
        case BOOT_DEVICE_MMC:
                if (bootmode_cfg & MAIN_DEVSTAT_PRIMARY_MMC_FS_RAW_MASK)