]> git.ipfire.org Git - thirdparty/u-boot.git/commitdiff
mach-k3: am62*: Fix backup from eMMC boot mode
authorJudith Mendez <jm@ti.com>
Wed, 20 Aug 2025 21:56:34 +0000 (16:56 -0500)
committerTom Rini <trini@konsulko.com>
Thu, 11 Sep 2025 17:59:35 +0000 (11:59 -0600)
Currently logic in spl_mmc_boot_mode only lookes at main devstat
to determine the bootmode to return. Thus, when using: 'eMMC boot'
as primary boot mode and 'MMCSD boot from eMMC UDA' as backup
boot mode, 'eMMC boot' is always selected. Add check for bootindex
to determine if ROM boot via backup boot mode and return MMCSD_MODE_FS
which is the only supported backup bootmode with eMMC device.

Signed-off-by: Judith Mendez <jm@ti.com>
Reviewed-by: Anshul Dalal <anshuld@ti.com>
Reviewed-by: Moteen Shah <m-shah@ti.com>
arch/arm/mach-k3/am62ax/am62a7_init.c
arch/arm/mach-k3/am62px/am62p5_init.c
arch/arm/mach-k3/am62x/am625_init.c

index 00173e6836b8ca0dbd04d8918e1c6528c4a26016..48d578e7d6f180f06b42003313bf643c725eae7e 100644 (file)
@@ -218,6 +218,11 @@ u32 spl_mmc_boot_mode(struct mmc *mmc, const u32 boot_device)
        u32 bootmode_cfg = (devstat & MAIN_DEVSTAT_PRIMARY_BOOTMODE_CFG_MASK) >>
                            MAIN_DEVSTAT_PRIMARY_BOOTMODE_CFG_SHIFT;
 
+       if (bootindex != K3_PRIMARY_BOOTMODE) {
+               pr_alert("Fallback to backup bootmode MMCSD_MODE_FS\n");
+               return MMCSD_MODE_FS;
+       }
+
        switch (bootmode) {
        case BOOT_DEVICE_EMMC:
                if (IS_ENABLED(CONFIG_SUPPORT_EMMC_BOOT))
index 44a2d445d24cc3aabbcd20e6191d1dc766b1e733..aebd5200b0db9959805d04408b34d283e21b6e2c 100644 (file)
@@ -264,6 +264,11 @@ u32 spl_mmc_boot_mode(struct mmc *mmc, const u32 boot_device)
        u32 bootmode_cfg = (devstat & MAIN_DEVSTAT_PRIMARY_BOOTMODE_CFG_MASK) >>
                            MAIN_DEVSTAT_PRIMARY_BOOTMODE_CFG_SHIFT;
 
+       if (bootindex != K3_PRIMARY_BOOTMODE) {
+               pr_alert("Fallback to backup bootmode MMCSD_MODE_FS\n");
+               return MMCSD_MODE_FS;
+       }
+
        switch (bootmode) {
        case BOOT_DEVICE_EMMC:
                if (IS_ENABLED(CONFIG_SUPPORT_EMMC_BOOT))
index 8f4ddf597531c4aaad5d1b2a266220a02cf6d94e..14f93ac998f7d11997b753550c0ea38926e35e64 100644 (file)
@@ -305,6 +305,11 @@ u32 spl_mmc_boot_mode(struct mmc *mmc, const u32 boot_device)
        u32 bootmode_cfg = (devstat & MAIN_DEVSTAT_PRIMARY_BOOTMODE_CFG_MASK) >>
                            MAIN_DEVSTAT_PRIMARY_BOOTMODE_CFG_SHIFT;
 
+       if (bootindex != K3_PRIMARY_BOOTMODE) {
+               pr_alert("Fallback to backup bootmode MMCSD_MODE_FS\n");
+               return MMCSD_MODE_FS;
+       }
+
        switch (bootmode) {
        case BOOT_DEVICE_EMMC:
                if (IS_ENABLED(CONFIG_SUPPORT_EMMC_BOOT))