mach-k3: am62a7_init: Add FS and raw mode for eMMC
authorVignesh Raghavendra <vigneshr@ti.com>
Fri, 20 Dec 2024 20:36:58 +0000 (14:36 -0600)
committerTom Rini <trini@konsulko.com>
Thu, 2 Jan 2025 17:05:38 +0000 (11:05 -0600)
This adds FS and raw boot mode support for eMMC similar to other K3
platforms.

Signed-off-by: Vignesh Raghavendra <vigneshr@ti.com>
arch/arm/mach-k3/am62ax/am62a7_init.c

index 5c0d3ee..78153c9 100644 (file)
@@ -171,6 +171,25 @@ void board_init_f(ulong dummy)
        debug("am62a_init: %s done\n", __func__);
 }
 
+u32 spl_mmc_boot_mode(struct mmc *mmc, const u32 boot_device)
+{
+       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) >>
+                           MAIN_DEVSTAT_PRIMARY_BOOTMODE_CFG_SHIFT;
+
+       switch (bootmode) {
+       case BOOT_DEVICE_EMMC:
+               return MMCSD_MODE_EMMCBOOT;
+       case BOOT_DEVICE_MMC:
+               if (bootmode_cfg & MAIN_DEVSTAT_PRIMARY_MMC_FS_RAW_MASK)
+                       return MMCSD_MODE_RAW;
+       default:
+               return MMCSD_MODE_FS;
+       }
+}
+
 u32 spl_boot_device(void)
 {
        return get_boot_device();