SPL: Adjust more debug prints for ulong entry_point
[oweals/u-boot.git] / arch / arm / imx-common / spl.c
index 325ba263403016db60f830cc70a10be21f1a1f1f..60c4adf237517706bdc8df7b7e3f54dda47306b2 100644 (file)
 #include <asm/arch/imx-regs.h>
 #include <asm/spl.h>
 #include <spl.h>
+#include <asm/imx-common/hab.h>
 
 #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