summaryrefslogtreecommitdiff
path: root/arch
diff options
context:
space:
mode:
authorVignesh Raghavendra <vigneshr@ti.com>2023-01-05 21:08:53 +0530
committerAnand Gadiyar <gadiyar@ti.com>2023-01-11 18:26:38 -0600
commitaf1f984992b4b9148c346140aed3031fa69c4eec (patch)
treefaec2867afe6a5252a664a807016729703b610ac /arch
parent73a2f2993b9910054785512fba9ddaa6913b9ed5 (diff)
mach-k3: am62a7_init: Distinguish b/w eMMC raw and filesytem boot
ROM supports RAW as well as FS based boot in eMMC mode. Add support to distinguish the same and proceed accordingly for loading next stages. Signed-off-by: Vignesh Raghavendra <vigneshr@ti.com>
Diffstat (limited to 'arch')
-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) >>