diff options
| -rw-r--r-- | arch/arm/mach-k3/am62ax/am62a7_init.c | 4 | ||||
| -rw-r--r-- | arch/arm/mach-k3/am62px/am62p5_init.c | 4 | ||||
| -rw-r--r-- | arch/arm/mach-k3/am62x/am625_init.c | 4 | ||||
| -rw-r--r-- | arch/arm/mach-k3/common.h | 1 | ||||
| -rw-r--r-- | arch/arm/mach-k3/r5/common.c | 17 |
5 files changed, 29 insertions, 1 deletions
diff --git a/arch/arm/mach-k3/am62ax/am62a7_init.c b/arch/arm/mach-k3/am62ax/am62a7_init.c index 48d578e7d6f..7de23461163 100644 --- a/arch/arm/mach-k3/am62ax/am62a7_init.c +++ b/arch/arm/mach-k3/am62ax/am62a7_init.c @@ -240,5 +240,9 @@ u32 spl_mmc_boot_mode(struct mmc *mmc, const u32 boot_device) u32 spl_boot_device(void) { +#if IS_ENABLED(CONFIG_SPL_OS_BOOT_SECURE) && !IS_ENABLED(CONFIG_ARM64) + return k3_r5_falcon_bootmode(); +#else return get_boot_device(); +#endif } diff --git a/arch/arm/mach-k3/am62px/am62p5_init.c b/arch/arm/mach-k3/am62px/am62p5_init.c index aebd5200b0d..4c215d5cebe 100644 --- a/arch/arm/mach-k3/am62px/am62p5_init.c +++ b/arch/arm/mach-k3/am62px/am62p5_init.c @@ -375,6 +375,10 @@ u32 spl_boot_device(void) u32 devstat = readl(CTRLMMR_MAIN_DEVSTAT); u32 bootmedia; +#if IS_ENABLED(CONFIG_SPL_OS_BOOT_SECURE) && !IS_ENABLED(CONFIG_ARM64) + return k3_r5_falcon_bootmode(); +#endif + if (bootindex == K3_PRIMARY_BOOTMODE) bootmedia = __get_primary_bootmedia(devstat); else diff --git a/arch/arm/mach-k3/am62x/am625_init.c b/arch/arm/mach-k3/am62x/am625_init.c index 14f93ac998f..02b7414e21c 100644 --- a/arch/arm/mach-k3/am62x/am625_init.c +++ b/arch/arm/mach-k3/am62x/am625_init.c @@ -327,5 +327,9 @@ u32 spl_mmc_boot_mode(struct mmc *mmc, const u32 boot_device) u32 spl_boot_device(void) { +#if IS_ENABLED(CONFIG_SPL_OS_BOOT_SECURE) && !IS_ENABLED(CONFIG_ARM64) + return k3_r5_falcon_bootmode(); +#else return get_boot_device(); +#endif } diff --git a/arch/arm/mach-k3/common.h b/arch/arm/mach-k3/common.h index 5807d358464..cd3e19374dc 100644 --- a/arch/arm/mach-k3/common.h +++ b/arch/arm/mach-k3/common.h @@ -54,6 +54,7 @@ int shutdown_mcu_r5_core1(void); #if IS_ENABLED(CONFIG_SPL_OS_BOOT_SECURE) && !IS_ENABLED(CONFIG_ARM64) int k3_r5_falcon_bootmode(void); +int k3_r5_falcon_prep(void); #endif #if (IS_ENABLED(CONFIG_K3_QOS)) diff --git a/arch/arm/mach-k3/r5/common.c b/arch/arm/mach-k3/r5/common.c index f0654102737..bf5e7903dcb 100644 --- a/arch/arm/mach-k3/r5/common.c +++ b/arch/arm/mach-k3/r5/common.c @@ -391,6 +391,21 @@ int spl_start_uboot(void) return 0; } +int k3_r5_falcon_bootmode(void) +{ + char *mmcdev = env_get("mmcdev"); + + if (!mmcdev) + return BOOT_DEVICE_NOBOOT; + + if (strncmp(mmcdev, "0", sizeof("0")) == 0) + return BOOT_DEVICE_MMC1; + else if (strncmp(mmcdev, "1", sizeof("1")) == 0) + return BOOT_DEVICE_MMC2; + else + return BOOT_DEVICE_NOBOOT; +} + int k3_r5_falcon_prep(void) { struct spl_image_loader *loader, *drv; @@ -402,7 +417,7 @@ int k3_r5_falcon_prep(void) memset(&kernel_image, '\0', sizeof(kernel_image)); drv = ll_entry_start(struct spl_image_loader, spl_image_loader); n_ents = ll_entry_count(struct spl_image_loader, spl_image_loader); - bootdev.boot_device = spl_boot_device(); + bootdev.boot_device = k3_r5_falcon_bootmode(); for (loader = drv; loader != drv + n_ents; loader++) { if (loader && bootdev.boot_device != loader->boot_device) |
