[PATCH v2] mach-k3: am62*: Fix backup from eMMC boot mode

Moteen Shah m-shah at ti.com
Mon Aug 25 17:53:19 CEST 2025


On 21/08/25 03:26, Judith Mendez wrote:

> 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 | 5 +++++
>   arch/arm/mach-k3/am62px/am62p5_init.c | 5 +++++
>   arch/arm/mach-k3/am62x/am625_init.c   | 5 +++++
>   3 files changed, 15 insertions(+)
>
> diff --git a/arch/arm/mach-k3/am62ax/am62a7_init.c b/arch/arm/mach-k3/am62ax/am62a7_init.c
> index 00173e6836b..48d578e7d6f 100644
> --- a/arch/arm/mach-k3/am62ax/am62a7_init.c
> +++ b/arch/arm/mach-k3/am62ax/am62a7_init.c
> @@ -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))
> diff --git a/arch/arm/mach-k3/am62px/am62p5_init.c b/arch/arm/mach-k3/am62px/am62p5_init.c
> index 44a2d445d24..aebd5200b0d 100644
> --- a/arch/arm/mach-k3/am62px/am62p5_init.c
> +++ b/arch/arm/mach-k3/am62px/am62p5_init.c
> @@ -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))
> diff --git a/arch/arm/mach-k3/am62x/am625_init.c b/arch/arm/mach-k3/am62x/am625_init.c
> index 8f4ddf59753..14f93ac998f 100644
> --- a/arch/arm/mach-k3/am62x/am625_init.c
> +++ b/arch/arm/mach-k3/am62x/am625_init.c
> @@ -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))


Reviewed-by: Moteen Shah <m-shah at ti.com>

Regards,
Moteen



More information about the U-Boot mailing list