X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=arch%2Farm%2Fimx-common%2Fspl.c;h=60c4adf237517706bdc8df7b7e3f54dda47306b2;hb=4386feb73da7946fc79b55c4fa41c6dd66dcb2e2;hp=325ba263403016db60f830cc70a10be21f1a1f1f;hpb=194eded14ccb40af18e1a9fb8ab85903ee0803ef;p=oweals%2Fu-boot.git diff --git a/arch/arm/imx-common/spl.c b/arch/arm/imx-common/spl.c index 325ba26340..60c4adf237 100644 --- a/arch/arm/imx-common/spl.c +++ b/arch/arm/imx-common/spl.c @@ -12,11 +12,9 @@ #include #include #include +#include #if defined(CONFIG_MX6) -#define MX6_MMC_PORT_MASK GENMASK(12, 11) -#define MX6_MMC_PORT_2 BIT(11) - /* determine boot device from SRC_SBMR1 (BOOT_CFG[4:1]) or SRC_GPR9 register */ u32 spl_boot_device(void) { @@ -58,11 +56,10 @@ u32 spl_boot_device(void) /* SD/eSD: 8.5.3, Table 8-15 */ case 0x4: case 0x5: + return BOOT_DEVICE_MMC1; /* MMC/eMMC: 8.5.3 */ case 0x6: case 0x7: - if ((reg & MX6_MMC_PORT_MASK) == MX6_MMC_PORT_2) - return BOOT_DEVICE_MMC2; return BOOT_DEVICE_MMC1; /* NAND Flash: 8.5.2 */ case 0x8 ... 0xf: @@ -94,3 +91,27 @@ u32 spl_boot_mode(const u32 boot_device) } } #endif + +#if defined(CONFIG_SECURE_BOOT) + +__weak void __noreturn jump_to_image_no_args(struct spl_image_info *spl_image) +{ + typedef void __noreturn (*image_entry_noargs_t)(void); + + image_entry_noargs_t image_entry = + (image_entry_noargs_t)(unsigned long)spl_image->entry_point; + + debug("image entry point: 0x%lX\n", spl_image->entry_point); + + /* HAB looks for the CSF at the end of the authenticated data therefore, + * we need to subtract the size of the CSF from the actual filesize */ + if (authenticate_image(spl_image->load_addr, + spl_image->size - CONFIG_CSF_SIZE)) { + image_entry(); + } else { + puts("spl: ERROR: image authentication unsuccessful\n"); + hang(); + } +} + +#endif