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

Judith Mendez jm at ti.com
Wed Aug 20 20:17:17 CEST 2025


Hi Anshul,

On 8/19/25 11:02 PM, Anshul Dalal wrote:
> Hi Judith,
> 
> On Mon Aug 18, 2025 at 11:10 PM IST, Judith Mendez wrote:
>> Currently logic in spl_mmc_boot_mode only lookes at main devstat
> 
> Nit: s/lookes/looks
> 
>> 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;
>>   	}
>>   }
> 
> [snip]
> 
> Just having a check for bootindex before the switch block would be more
> readable imo, like:
> 
> if (bootindex != K3_PRIMARY_BOOTMODE)
> 	return MMCSD_MODE_FS;
> 
> switch (bootmode) {
> 	<Existing code>
> }
> 

Actually, I like that, thanks, will fix for v2.

~ Judith



More information about the U-Boot mailing list