[PATCH] mach-k3: am62*: Fix backup from eMMC boot mode
Bryan Brattlof
bb at ti.com
Wed Aug 20 15:23:23 CEST 2025
On August 18, 2025 thus sayeth Judith Mendez:
> 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 at ti.com>
> ---
> arch/arm/mach-k3/am62ax/am62a7_init.c | 22 +++++++++++++---------
> arch/arm/mach-k3/am62px/am62p5_init.c | 24 ++++++++++++++----------
> arch/arm/mach-k3/am62x/am625_init.c | 22 +++++++++++++---------
> 3 files changed, 40 insertions(+), 28 deletions(-)
>
> diff --git a/arch/arm/mach-k3/am62ax/am62a7_init.c b/arch/arm/mach-k3/am62ax/am62a7_init.c
> index 00173e6836b..fa3570d07ec 100644
> --- a/arch/arm/mach-k3/am62ax/am62a7_init.c
> +++ b/arch/arm/mach-k3/am62ax/am62a7_init.c
> @@ -218,17 +218,21 @@ 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;
>
> - switch (bootmode) {
> - case BOOT_DEVICE_EMMC:
> - if (IS_ENABLED(CONFIG_SUPPORT_EMMC_BOOT))
> + if (bootindex == K3_PRIMARY_BOOTMODE) {
> + 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;
> - if (IS_ENABLED(CONFIG_SPL_FS_FAT) || IS_ENABLED(CONFIG_SPL_FS_EXT4))
> + case BOOT_DEVICE_MMC:
> + if (bootmode_cfg & MAIN_DEVSTAT_PRIMARY_MMC_FS_RAW_MASK)
> + return MMCSD_MODE_RAW;
> + default:
> return MMCSD_MODE_FS;
> - return MMCSD_MODE_EMMCBOOT;
> - case BOOT_DEVICE_MMC:
> - if (bootmode_cfg & MAIN_DEVSTAT_PRIMARY_MMC_FS_RAW_MASK)
> - return MMCSD_MODE_RAW;
> - default:
> + }
> + } else {
> return MMCSD_MODE_FS;
Is any warning given to us when we fall back to the UDA partition? How
do people know their boot partition is dead? Could we bail out early
with a message:
if (bootindex != K3_PRIMARY_BOOTMODE) {
pr_alert("using MMC backup in UDA\n")
return MMCSD_MODE_FS;
}
switch (bootmode) {
case BOOT_DEVICE_EMMC:
... bla bla bla ...
~Bryan
More information about the U-Boot
mailing list