mirror of
https://source.denx.de/u-boot/u-boot.git
synced 2025-08-09 00:36:59 +02:00
arm64:mach-k3 am625_init: Correct boot mode detection
The boot mode detection assumes that BOOT_DEVICE_MMC2 should always result in MMCSD_MODE_FS, but MMCSD_MODE_RAW is also a valid option for this port. The current logic also avoids looking at the bootmode pin strapping, which should be the primary means of determining whether a device is being booted in MMCSD_MODE_EMMCBOOT mode. Switch around the logic to check the boot mode to determine whether the eMMC boot mode is expected or MMC/SD boot mode. From there we can look at the boot mode config if in MMC/SD boot mode to determine whether to attempt RAW or FS based booting. This change allows U-Boot to also be successfully booted from RAW offsets in addition to from a filesystem. Signed-off-by: Martyn Welch <martyn.welch@collabora.com>
This commit is contained in:
parent
92a15f69d5
commit
7c34b71a42
@ -173,21 +173,20 @@ void board_init_f(ulong dummy)
|
|||||||
u32 spl_mmc_boot_mode(struct mmc *mmc, const u32 boot_device)
|
u32 spl_mmc_boot_mode(struct mmc *mmc, const u32 boot_device)
|
||||||
{
|
{
|
||||||
u32 devstat = readl(CTRLMMR_MAIN_DEVSTAT);
|
u32 devstat = readl(CTRLMMR_MAIN_DEVSTAT);
|
||||||
|
u32 bootmode = (devstat & MAIN_DEVSTAT_PRIMARY_BOOTMODE_MASK) >>
|
||||||
|
MAIN_DEVSTAT_PRIMARY_BOOTMODE_SHIFT;
|
||||||
u32 bootmode_cfg = (devstat & MAIN_DEVSTAT_PRIMARY_BOOTMODE_CFG_MASK) >>
|
u32 bootmode_cfg = (devstat & MAIN_DEVSTAT_PRIMARY_BOOTMODE_CFG_MASK) >>
|
||||||
MAIN_DEVSTAT_PRIMARY_BOOTMODE_CFG_SHIFT;
|
MAIN_DEVSTAT_PRIMARY_BOOTMODE_CFG_SHIFT;
|
||||||
|
|
||||||
switch (boot_device) {
|
|
||||||
case BOOT_DEVICE_MMC1:
|
switch (bootmode) {
|
||||||
if ((bootmode_cfg & MAIN_DEVSTAT_PRIMARY_MMC_FS_RAW_MASK) >>
|
case BOOT_DEVICE_EMMC:
|
||||||
MAIN_DEVSTAT_PRIMARY_MMC_FS_RAW_SHIFT)
|
|
||||||
return MMCSD_MODE_EMMCBOOT;
|
return MMCSD_MODE_EMMCBOOT;
|
||||||
return MMCSD_MODE_FS;
|
case BOOT_DEVICE_MMC:
|
||||||
|
if (bootmode_cfg & MAIN_DEVSTAT_PRIMARY_MMC_FS_RAW_MASK)
|
||||||
case BOOT_DEVICE_MMC2:
|
|
||||||
return MMCSD_MODE_FS;
|
|
||||||
|
|
||||||
default:
|
|
||||||
return MMCSD_MODE_RAW;
|
return MMCSD_MODE_RAW;
|
||||||
|
default:
|
||||||
|
return MMCSD_MODE_FS;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user