summaryrefslogtreecommitdiff
path: root/arch/arm/mach-k3/am62a7_init.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm/mach-k3/am62a7_init.c')
-rw-r--r--arch/arm/mach-k3/am62a7_init.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/arch/arm/mach-k3/am62a7_init.c b/arch/arm/mach-k3/am62a7_init.c
index 75796ed166..4c63117a18 100644
--- a/arch/arm/mach-k3/am62a7_init.c
+++ b/arch/arm/mach-k3/am62a7_init.c
@@ -169,6 +169,27 @@ void board_init_f(ulong dummy)
printf("am62a_init: %s done\n", __func__);
}
+u32 spl_mmc_boot_mode(const u32 boot_device)
+{
+ u32 devstat = readl(CTRLMMR_MAIN_DEVSTAT);
+ u32 bootmode_cfg = (devstat & MAIN_DEVSTAT_PRIMARY_BOOTMODE_CFG_MASK) >>
+ MAIN_DEVSTAT_PRIMARY_BOOTMODE_CFG_SHIFT;
+
+ switch (boot_device) {
+ case BOOT_DEVICE_MMC1:
+ if ((bootmode_cfg & MAIN_DEVSTAT_PRIMARY_MMC_FS_RAW_MASK) >>
+ MAIN_DEVSTAT_PRIMARY_MMC_FS_RAW_SHIFT)
+ return MMCSD_MODE_EMMCBOOT;
+ return MMCSD_MODE_FS;
+
+ case BOOT_DEVICE_MMC2:
+ return MMCSD_MODE_FS;
+
+ default:
+ return MMCSD_MODE_RAW;
+ }
+}
+
static u32 __get_backup_bootmedia(u32 devstat)
{
u32 bkup_bootmode = (devstat & MAIN_DEVSTAT_BACKUP_BOOTMODE_MASK) >>